aboutsummaryrefslogtreecommitdiff
path: root/src/interp/metalex.lisp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-12-07 02:13:06 +0000
committerdos-reis <gdr@axiomatics.org>2010-12-07 02:13:06 +0000
commit871ae5f27191cd50a4629143243312da1be7ca94 (patch)
tree3f1fb2417bf23ca38b2af02e9bda143e710993f3 /src/interp/metalex.lisp
parentd14fd317bc282ba83762209a48632087e5036ebf (diff)
downloadopen-axiom-871ae5f27191cd50a4629143243312da1be7ca94.tar.gz
Add support for exception handling.
* interp/parsing.lisp (TEST-LEXING): Remove. (RTRACE): Likewise. (RUNTRACE): Likewise. (MATCH-ADVANCE-KEYWORD): New. (MATCH-ADVANCE-GLYPH): Likewise. (MATCH-ADVANCE-SPECIAL): Likewise. (MATCH-SPECIAL): Likewise. (MATCH-KEYWORD-NEXT): Likewise. * interp/newaux.lisp: Make try and throw prefix operators. * interp/metalex.lisp (KEYWORDS): Include finally, catch and throw. * interp/fnewmeta.lisp (PARSE-Throw): New. Parse throw-expressions. (PARSE-Catch): New. Parse catch-expressions. (PARSE-Finally): New. Parse finally-expressions. (PARSE-Try): New. Parse try-expressions. * interp/compiler.boot (compThrow): New. Register to compile throw-expressions. (compTry): New. Register to compiler try-expressions. (compCatch): New. Compile catch-handler expression. * interp/g-opt.boot (optTry): New. Simplify simple expressions in the try operand. * interp/g-util.boot (expandThrow): New. Expand %throw forms. (domainMatchCode): New. (expandTry): New. Expand %try forms. * doc/msgs/s2-us.msgs: Add new message with key S2GE0020. * interp/g-error.boot (systemErrorHandler): Handle possible uncaucght expression condition.
Diffstat (limited to 'src/interp/metalex.lisp')
-rw-r--r--src/interp/metalex.lisp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/interp/metalex.lisp b/src/interp/metalex.lisp
index 788eb449..73d6bee1 100644
--- a/src/interp/metalex.lisp
+++ b/src/interp/metalex.lisp
@@ -571,8 +571,8 @@ empty (if File-Closed (return nil))
(defconstant Keywords
'(|or| |and| |isnt| |is| |when| |where| |forall| |exist| |try|
- |has| |with| |add| |case| |in| |by| |pretend| |mod|
- |exquo| |div| |quo| |else| |rem| |then| |suchthat|
+ |has| |with| |add| |case| |in| |by| |pretend| |mod| |finally|
+ |exquo| |div| |quo| |else| |rem| |then| |suchthat| |catch| |throw|
|if| |yield| |iterate| |break| |from| |exit| |leave| |return|
|not| |unless| |repeat| |until| |while| |for| |import| |inline|)