diff options
author | dos-reis <gdr@axiomatics.org> | 2010-12-11 22:48:38 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2010-12-11 22:48:38 +0000 |
commit | a07faca18a3f5f7435cfc21f0a66a183d2c0cd05 (patch) | |
tree | cdc26e56baad314d992424ba2223ef98dda3af4b /src/boot/strap | |
parent | 0835ad7e9a8e7f90f61b633fd74304f00b07d386 (diff) | |
download | open-axiom-a07faca18a3f5f7435cfc21f0a66a183d2c0cd05.tar.gz |
* boot/tokens.boot: `finally' is now a keyword.
* boot/parser.boot (bpMissing): Use a BootParserException exception.
(bpTrap): Likewise.
(bpListAndRecover): Catch them.
* boot/parser.boot (shoeOutParse): Likewise.
* boot/ast.boot (bfHandlers): Fix thinko.
(codeForCatchHandlers): Likewise.
Diffstat (limited to 'src/boot/strap')
-rw-r--r-- | src/boot/strap/ast.clisp | 5 | ||||
-rw-r--r-- | src/boot/strap/parser.clisp | 19 | ||||
-rw-r--r-- | src/boot/strap/tokens.clisp | 7 | ||||
-rw-r--r-- | src/boot/strap/translator.clisp | 13 |
4 files changed, 34 insertions, 10 deletions
diff --git a/src/boot/strap/ast.clisp b/src/boot/strap/ast.clisp index 70ac6194..8511e03e 100644 --- a/src/boot/strap/ast.clisp +++ b/src/boot/strap/ast.clisp @@ -2082,7 +2082,7 @@ (RETURN (COND ((NULL |hs|) - (LIST 'COND + (CONS 'COND (NREVERSE (CONS (LIST T (LIST 'THROW :OPEN-AXIOM-CATCH-POINT |n|)) @@ -2135,8 +2135,7 @@ (PROGN (SETQ |ehTest| (LIST 'AND (LIST 'CONSP |g|) - (LIST (|bfQ| (LIST 'CAR |g|) - :OPEN-AXIOM-CATCH-POINT)))) + (|bfQ| (LIST 'CAR |g|) :OPEN-AXIOM-CATCH-POINT))) (LIST 'LET (LIST (LIST |g| (LIST 'CATCH :OPEN-AXIOM-CATCH-POINT |e|))) diff --git a/src/boot/strap/parser.clisp b/src/boot/strap/parser.clisp index e009d80d..9cdd72cb 100644 --- a/src/boot/strap/parser.clisp +++ b/src/boot/strap/parser.clisp @@ -319,7 +319,7 @@ (|bpSpecificErrorHere| (CONCAT (PNAME |s|) " possibly missing")) (THROW :OPEN-AXIOM-CATCH-POINT (CONS :OPEN-AXIOM-CATCH-POINT - (CONS '(|SystemException|) (TRAPPOINT 'TRAPPED)))))) + (CONS '(|BootParserException|) 'TRAPPED))))) (DEFUN |bpCompMissing| (|s|) (OR (|bpEqKey| |s|) (|bpMissing| |s|))) @@ -328,7 +328,7 @@ (|bpGeneralErrorHere|) (THROW :OPEN-AXIOM-CATCH-POINT (CONS :OPEN-AXIOM-CATCH-POINT - (CONS '(|SystemException|) (TRAPPOINT 'TRAPPED)))))) + (CONS '(|BootParserException|) 'TRAPPED))))) (DEFUN |bpRecoverTrap| () (PROG (|pos2| |pos1|) @@ -356,7 +356,20 @@ (COND (|done| (RETURN NIL)) (T (PROGN - (SETQ |found| (CATCH 'TRAPPOINT (APPLY |f| NIL))) + (SETQ |found| + (LET ((#0=#:G1354 + (CATCH :OPEN-AXIOM-CATCH-POINT + (APPLY |f| NIL)))) + (COND + ((AND (CONSP #0#) + (EQUAL (CAR #0#) + :OPEN-AXIOM-CATCH-POINT)) + (COND + ((EQUAL (CAR #1=(CDR #0#)) + '(|BootParserException|)) + (LET ((|e| (CDR #1#))) |e|)) + (T (THROW :OPEN-AXIOM-CATCH-POINT #0#)))) + (T #0#)))) (COND ((EQ |found| 'TRAPPED) (SETQ |$inputStream| |c|) (|bpRecoverTrap|)) diff --git a/src/boot/strap/tokens.clisp b/src/boot/strap/tokens.clisp index d64068f8..ecc3ce7e 100644 --- a/src/boot/strap/tokens.clisp +++ b/src/boot/strap/tokens.clisp @@ -8,9 +8,10 @@ (DEFCONSTANT |shoeKeyWords| (LIST (LIST "and" 'AND) (LIST "by" 'BY) (LIST "case" 'CASE) (LIST "catch" 'CATCH) (LIST "cross" 'CROSS) - (LIST "else" 'ELSE) (LIST "for" 'FOR) (LIST "has" 'HAS) - (LIST "if" 'IF) (LIST "import" 'IMPORT) (LIST "in" 'IN) - (LIST "is" 'IS) (LIST "isnt" 'ISNT) (LIST "leave" 'LEAVE) + (LIST "else" 'ELSE) (LIST "finally" 'FINALLY) + (LIST "for" 'FOR) (LIST "has" 'HAS) (LIST "if" 'IF) + (LIST "import" 'IMPORT) (LIST "in" 'IN) (LIST "is" 'IS) + (LIST "isnt" 'ISNT) (LIST "leave" 'LEAVE) (LIST "module" 'MODULE) (LIST "namespace" 'NAMESPACE) (LIST "of" 'OF) (LIST "or" 'OR) (LIST "rem" 'REM) (LIST "repeat" 'REPEAT) (LIST "return" 'RETURN) diff --git a/src/boot/strap/translator.clisp b/src/boot/strap/translator.clisp index 1d17a095..2171c415 100644 --- a/src/boot/strap/translator.clisp +++ b/src/boot/strap/translator.clisp @@ -506,7 +506,18 @@ (SETQ |$bpCount| 0) (SETQ |$bpParenCount| 0) (|bpFirstTok|) - (SETQ |found| (CATCH 'TRAPPOINT (|bpOutItem|))) + (SETQ |found| + (LET ((#0=#:G1354 + (CATCH :OPEN-AXIOM-CATCH-POINT (|bpOutItem|)))) + (COND + ((AND (CONSP #0#) + (EQUAL (CAR #0#) :OPEN-AXIOM-CATCH-POINT)) + (COND + ((EQUAL (CAR #1=(CDR #0#)) + '(|BootParserException|)) + (LET ((|e| (CDR #1#))) |e|)) + (T (THROW :OPEN-AXIOM-CATCH-POINT #0#)))) + (T #0#)))) (COND ((EQ |found| 'TRAPPED) NIL) ((NOT (|bStreamNull| |$inputStream|)) (|bpGeneralErrorHere|) |