diff options
Diffstat (limited to 'src/boot')
-rw-r--r-- | src/boot/parser.boot | 7 | ||||
-rw-r--r-- | src/boot/strap/parser.clisp | 13 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/boot/parser.boot b/src/boot/parser.boot index 0149687e..6d27017b 100644 --- a/src/boot/parser.boot +++ b/src/boot/parser.boot @@ -592,10 +592,17 @@ bpSelector()== and bpPush(bfElt(bpPop2(),bpPop1())) or bpPush bfSuffixDot bpPop1() ) +++ NamedScope: +++ NAMESPACE (Name | DOT) +bpNamedScope() == + bpEqKey "NAMESPACE" and (bpName() or bpDot() or bpTrap()) and + bpPush %Namespace bpPop1() + bpApplication()== bpPrimary() and bpAnyNo function bpSelector and (bpApplication() and bpPush(bfApplication(bpPop2(),bpPop1())) or true) + or bpNamedScope() ++ Typing: ++ SimpleType diff --git a/src/boot/strap/parser.clisp b/src/boot/strap/parser.clisp index fc6e7dda..00381889 100644 --- a/src/boot/strap/parser.clisp +++ b/src/boot/strap/parser.clisp @@ -627,11 +627,16 @@ (|bpPush| (|bfElt| (|bpPop2|) (|bpPop1|)))) (|bpPush| (|bfSuffixDot| (|bpPop1|)))))) +(DEFUN |bpNamedScope| () + (AND (|bpEqKey| 'NAMESPACE) (OR (|bpName|) (|bpDot|) (|bpTrap|)) + (|bpPush| (|%Namespace| (|bpPop1|))))) + (DEFUN |bpApplication| () - (AND (|bpPrimary|) (|bpAnyNo| #'|bpSelector|) - (OR (AND (|bpApplication|) - (|bpPush| (|bfApplication| (|bpPop2|) (|bpPop1|)))) - T))) + (OR (AND (|bpPrimary|) (|bpAnyNo| #'|bpSelector|) + (OR (AND (|bpApplication|) + (|bpPush| (|bfApplication| (|bpPop2|) (|bpPop1|)))) + T)) + (|bpNamedScope|))) (DEFUN |bpTyping| () (COND |