aboutsummaryrefslogtreecommitdiff
path: root/src/interp/cparse.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2008-08-05 13:40:34 +0000
committerdos-reis <gdr@axiomatics.org>2008-08-05 13:40:34 +0000
commit6059cac552899d8c5514822096d7e58746fd0a95 (patch)
tree2546d010f88c91a4db4b296f378441575f5dc233 /src/interp/cparse.boot
parente70b49f2ffc26d1b6c136d12eeee6de11b00d541 (diff)
downloadopen-axiom-6059cac552899d8c5514822096d7e58746fd0a95.tar.gz
* interp/cparse.boot (npWith): Commit to parsing upon `with'.
(npAdd): Commit to parsing upon `add'. (npDef): Tell npDefTail to look for '=='. (npMdef): Accept argument to indicate '==' or '==>' forms. (npSingleRule): A Rule is given by '=='. (npDefTail): Take the kind of definition as a parameter. (npDefinitionItem): Macro definitions are definitions. (npMDEFinition): Remove. (npMDEF): Hand off to npMdef to parse macro definitions. (npMacro): Macros introduced by `macro' keyword uses '=='.
Diffstat (limited to 'src/interp/cparse.boot')
-rw-r--r--src/interp/cparse.boot28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/interp/cparse.boot b/src/interp/cparse.boot
index 6d39b924..4a5291f7 100644
--- a/src/interp/cparse.boot
+++ b/src/interp/cparse.boot
@@ -599,9 +599,9 @@ npBackTrack(p1,p2,p3)==
true
false
-npMDEF()== npBackTrack(function npStatement,"MDEF",function npMDEFinition)
-
-npMDEFinition() == npPP function npMdef
+npMDEF() ==
+ npBackTrack(function npStatement,"MDEF",
+ function LAMBDA(nil, npMdef "MDEF"))
npAssign()== npBackTrack(function npMDEF,"BECOMES",function npAssignment)
@@ -707,12 +707,13 @@ npDefn()== npEqKey "DEFN" and npPP function npDef
npFix()== npEqKey "FIX" and npPP function npDef
and npPush pfFix npPop1 ()
-npMacro()== npEqKey "MACRO" and npPP function npMdef
+npMacro() ==
+ npEqKey "MACRO" and npPP function LAMBDA(nil, npMdef "DEF")
npRule()== npEqKey "RULE" and npPP function npSingleRule
npAdd(extra)==
- npEqKey "ADD" and
+ npEqKey "ADD" =>
a:=npState()
npDefinitionOrStatement() or npTrap()
npEqPeek "IN" =>
@@ -729,7 +730,7 @@ npDefaultValue()==
and npPush [pfAdd(pfNothing(),npPop1(),pfNothing())]
npWith(extra)==
- npEqKey "WITH" and
+ npEqKey "WITH" =>
a:=npState()
npCategoryL() or npTrap()
npEqPeek "IN" =>
@@ -889,19 +890,19 @@ npLambda()==
npDef()==
npMatch() =>
[op,arg,rt]:= pfCheckItOut(npPop1())
- npDefTail() or npTrap()
+ npDefTail "DEF" or npTrap()
body:=npPop1()
null arg => npPush pfDefinition (op,body)
npPush pfDefinition (op,pfPushBody(rt,arg,body))
false
---npDefTail()== npEqKey "DEF" and npDefinitionOrStatement()
-npDefTail()== (npEqKey "DEF" or npEqKey "MDEF") and npDefinitionOrStatement()
+npDefTail kw ==
+ npEqKey kw and npDefinitionOrStatement()
-npMdef()==
+npMdef kw ==
npQuiver() =>
[op,arg]:= pfCheckMacroOut(npPop1())
- npDefTail() or npTrap()
+ npDefTail kw or npTrap()
body:=npPop1()
null arg => npPush pfMacro (op,body)
npPush pfMacro (op,pfPushMacroBody(arg,body))
@@ -910,7 +911,7 @@ npMdef()==
npSingleRule()==
npQuiver() =>
- npDefTail() or npTrap()
+ npDefTail "DEF" or npTrap()
npPush pfRule (npPop2(),npPop1())
false
@@ -922,6 +923,9 @@ npDefinitionItem()==
npEqPeek "DEF" =>
npRestore a
npDef()
+ npEqPeek "MDEF" =>
+ npRestore a
+ npMdef "MDEF"
npRestore a
npMacro() or npDefn()
npTrap()