diff options
author | dos-reis <gdr@axiomatics.org> | 2011-05-16 02:40:27 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-05-16 02:40:27 +0000 |
commit | 3537b6ab6e6696fb5def82cde4c9c9e843f84ce9 (patch) | |
tree | 1483f8a7677477c35940de78eccb7e6d087b5ce0 /src/boot/strap | |
parent | 8cf4c7d7040078b651859fbd998f6bbf7b68127e (diff) | |
download | open-axiom-3537b6ab6e6696fb5def82cde4c9c9e843f84ce9.tar.gz |
* boot/tokens.boot: "do" is now a keyword.
* boot/ast.boot (bfDo): New.
* boot/parser.boot (bpDo): New.
(bpReturn): Include do-expressions.
* interp/vmlisp.lisp (do): Remove.
Diffstat (limited to 'src/boot/strap')
-rw-r--r-- | src/boot/strap/ast.clisp | 2 | ||||
-rw-r--r-- | src/boot/strap/parser.clisp | 6 | ||||
-rw-r--r-- | src/boot/strap/tokens.clisp | 2 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/boot/strap/ast.clisp b/src/boot/strap/ast.clisp index 6fcee2ea..74194f69 100644 --- a/src/boot/strap/ast.clisp +++ b/src/boot/strap/ast.clisp @@ -197,6 +197,8 @@ (DEFUN |bfPile| (|part|) |part|) +(DEFUN |bfDo| (|x|) |x|) + (DECLAIM (FTYPE (FUNCTION ((|%List| (|%List| |%Form|))) (|%List| |%Form|)) |bfAppend|)) diff --git a/src/boot/strap/parser.clisp b/src/boot/strap/parser.clisp index 867d52e9..06dc31e3 100644 --- a/src/boot/strap/parser.clisp +++ b/src/boot/strap/parser.clisp @@ -818,10 +818,14 @@ (AND (|bpEqKey| 'LEAVE) (OR (|bpLogical|) (|bpTrap|)) (|bpPush| (|bfLeave| (|bpPop1|))))) +(DEFUN |bpDo| () + (AND (|bpEqKey| 'DO) (OR (|bpAssign|) (|bpTrap|)) + (|bpPush| (|bfDo| (|bpPop1|))))) + (DEFUN |bpReturn| () (OR (AND (|bpEqKey| 'RETURN) (OR (|bpAssign|) (|bpTrap|)) (|bpPush| (|bfReturnNoName| (|bpPop1|)))) - (|bpLeave|) (|bpThrow|) (|bpAnd|))) + (|bpLeave|) (|bpThrow|) (|bpAnd|) (|bpDo|))) (DEFUN |bpLogical| () (|bpLeftAssoc| '(OR) #'|bpReturn|)) diff --git a/src/boot/strap/tokens.clisp b/src/boot/strap/tokens.clisp index b8eae135..297bcbb3 100644 --- a/src/boot/strap/tokens.clisp +++ b/src/boot/strap/tokens.clisp @@ -29,7 +29,7 @@ (DEFCONSTANT |shoeKeyWords| (LIST (LIST "and" 'AND) (LIST "by" 'BY) (LIST "case" 'CASE) - (LIST "catch" 'CATCH) (LIST "cross" 'CROSS) + (LIST "catch" 'CATCH) (LIST "cross" 'CROSS) (LIST "do" 'DO) (LIST "else" 'ELSE) (LIST "finally" 'FINALLY) (LIST "for" 'FOR) (LIST "forall" 'FORALL) (LIST "has" 'HAS) (LIST "if" 'IF) (LIST "import" 'IMPORT) (LIST "in" 'IN) |