aboutsummaryrefslogtreecommitdiff
path: root/src/boot/strap/parser.clisp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-05-10 02:32:04 +0000
committerdos-reis <gdr@axiomatics.org>2010-05-10 02:32:04 +0000
commitcc1b3ad0c3e2375bff3d0d736b988d41840dcadd (patch)
tree4d92d50afb94d5e62303733bc35b5635163f5f39 /src/boot/strap/parser.clisp
parentfff23d752812e2ae22bebc21d24c42bb145a916e (diff)
downloadopen-axiom-cc1b3ad0c3e2375bff3d0d736b988d41840dcadd.tar.gz
Add lambda expression syntax to Boot.
* boot/parser.boot (bpLambda): New. * boot/ast.boot (bfLambda): New. * boot/tokens.boot: Add "+->" as token. * interp/cparse.boot: Use lambda expression syntax. * interp/c-util.boot: Likewise.
Diffstat (limited to 'src/boot/strap/parser.clisp')
-rw-r--r--src/boot/strap/parser.clisp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/boot/strap/parser.clisp b/src/boot/strap/parser.clisp
index 8498e086..55781f24 100644
--- a/src/boot/strap/parser.clisp
+++ b/src/boot/strap/parser.clisp
@@ -840,6 +840,8 @@
(COND
((|bpEqPeek| 'BEC) (|bpRestore| |a|)
(OR (|bpAssignment|) (|bpTrap|)))
+ ((|bpEqPeek| 'GIVES) (|bpRestore| |a|)
+ (OR (|bpLambda|) (|bpTrap|)))
(T T)))
(T (|bpRestore| |a|) NIL))))))
@@ -848,6 +850,10 @@
(OR (|bpAssign|) (|bpTrap|))
(|bpPush| (|bfAssign| (|bpPop2|) (|bpPop1|)))))
+(DEFUN |bpLambda| ()
+ (AND (|bpVariable|) (|bpEqKey| 'GIVES) (OR (|bpAssign|) (|bpTrap|))
+ (|bpPush| (|bfLambda| (|bpPop2|) (|bpPop1|)))))
+
(DEFUN |bpExit| ()
(AND (|bpAssign|)
(OR (AND (|bpEqKey| 'EXIT) (OR (|bpWhere|) (|bpTrap|))