aboutsummaryrefslogtreecommitdiff
path: root/src/boot/strap
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-05-16 02:40:27 +0000
committerdos-reis <gdr@axiomatics.org>2011-05-16 02:40:27 +0000
commit3537b6ab6e6696fb5def82cde4c9c9e843f84ce9 (patch)
tree1483f8a7677477c35940de78eccb7e6d087b5ce0 /src/boot/strap
parent8cf4c7d7040078b651859fbd998f6bbf7b68127e (diff)
downloadopen-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.clisp2
-rw-r--r--src/boot/strap/parser.clisp6
-rw-r--r--src/boot/strap/tokens.clisp2
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)