diff options
author | dos-reis <gdr@axiomatics.org> | 2010-05-10 02:32:04 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2010-05-10 02:32:04 +0000 |
commit | cc1b3ad0c3e2375bff3d0d736b988d41840dcadd (patch) | |
tree | 4d92d50afb94d5e62303733bc35b5635163f5f39 /src/boot/strap/parser.clisp | |
parent | fff23d752812e2ae22bebc21d24c42bb145a916e (diff) | |
download | open-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.clisp | 6 |
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|)) |