aboutsummaryrefslogtreecommitdiff
path: root/src/boot/parser.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-05-28 14:12:41 +0000
committerdos-reis <gdr@axiomatics.org>2010-05-28 14:12:41 +0000
commit460eba8d1a5ea8feef28282e70ba2d22fa1fcdc6 (patch)
treeddd3aed51b69201221c396bf9e11465c8fb782bb /src/boot/parser.boot
parentaf089a02e32f424463e93e147b60222de0839f1e (diff)
downloadopen-axiom-460eba8d1a5ea8feef28282e70ba2d22fa1fcdc6.tar.gz
Add support for 'property' builtin function.
* interp/g-timer.boot: Rename property to prop to avoid conflict. * boot/parser.boot (bpAssignLHS): Allow functional places to assign to. * boot/ast.boot (bfPlace): New. (bfAssign): Handle %Place forms. * boot/tokens.boot: property is now translated to GET.
Diffstat (limited to 'src/boot/parser.boot')
-rw-r--r--src/boot/parser.boot5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/boot/parser.boot b/src/boot/parser.boot
index 909568b9..107a355f 100644
--- a/src/boot/parser.boot
+++ b/src/boot/parser.boot
@@ -1079,7 +1079,10 @@ bpAssignLHS()==
bpEqKey "COLON" => -- variable declaration
bpApplication() or bpTrap()
bpPush bfLocal(bpPop2(),bpPop1())
- bpArgumentList() and (bpEqPeek "DOT" or bpTrap())
+ bpArgumentList() and
+ (bpEqPeek "DOT"
+ or (bpEqPeek "BEC" and bpPush bfPlace bpPop1())
+ or bpTrap())
bpEqKey "DOT" => -- field path
bpList(function bpPrimary,"DOT") and
bpChecknull() and