diff options
| author | dos-reis <gdr@axiomatics.org> | 2008-02-15 04:28:18 +0000 |
|---|---|---|
| committer | dos-reis <gdr@axiomatics.org> | 2008-02-15 04:28:18 +0000 |
| commit | 8042d68702fdeda99a7e9e240b40e580ec82a8d8 (patch) | |
| tree | a21605ba0dc42deae3e42ec6d2d60e886f3499a5 /src/interp | |
| parent | 3287ad75396e6528ddc6fb7ca722d0b1d2aa75d5 (diff) | |
| download | open-axiom-8042d68702fdeda99a7e9e240b40e580ec82a8d8.tar.gz | |
Add try/catch to Boot.
* boot/tokens.boot (shoeKeyWords): Add new keywords.
* boot/ast.boot (Ast): Include three new nodes.
(bfTry): New.
(bfThrow): Likewise.
* boot/parser.boot ($bodyHasReturn): Remove.
(bpNoteReturnStmt): Likewise.
(bpThrow): New.
(bpTry): Likewise.
(bpPiledCatchItems): Likewise.
(bpCatchItemList): Likewise.
(bpExceptionHead): Likewise.
(bpExceptionTail): Likewise.
(bpException): Likewise.
(bpCatchItem): Likewise.
(bpReturn): Include `throw' expressions.
(bpStatement): Include `try' expressions.
* interp/macros.lisp (|tryLine|): Rename from |try|.
* interp/pspad1.boot: Replace `try' with `tryLine' throughout.
Diffstat (limited to 'src/interp')
| -rw-r--r-- | src/interp/macros.lisp | 2 | ||||
| -rw-r--r-- | src/interp/pspad1.boot | 14 | ||||
| -rw-r--r-- | src/interp/pspad2.boot | 10 |
3 files changed, 13 insertions, 13 deletions
diff --git a/src/interp/macros.lisp b/src/interp/macros.lisp index b4e7ab75..aec5e26e 100644 --- a/src/interp/macros.lisp +++ b/src/interp/macros.lisp @@ -717,7 +717,7 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size (defmacro wi (a b) b) -(defmacro |try| (X) +(defmacro |tryLine| (X) `(LET ((|$autoLine|)) (declare (special |$autoLine|)) (|tryToFit| (|saveState|) ,X))) diff --git a/src/interp/pspad1.boot b/src/interp/pspad1.boot index b738d5e2..3fa01f97 100644 --- a/src/interp/pspad1.boot +++ b/src/interp/pspad1.boot @@ -235,17 +235,17 @@ undent() == 0 spill(fn,a) == - u := try FUNCALL(fn,a) => u + u := tryLine FUNCALL(fn,a) => u (nearMargin() or spillLine()) and FUNCALL(fn,a) formatSpill(fn,a) == - u := try FUNCALL(fn,a) => u + u := tryLine FUNCALL(fn,a) => u v := (stay:= nearMargin() or indent() and newLine()) and FUNCALL(fn,a) w := stay or undent() v and w formatSpill2(fn,f,a) == - u := try FUNCALL(fn,f,a) => u + u := tryLine FUNCALL(fn,f,a) => u v := (stay:= nearMargin() or indent() and newLine()) and FUNCALL(fn,f,a) w := stay or undent() v and w @@ -293,7 +293,7 @@ formatDollar(name,p,argl) == kind := (n=1 => "Nud"; "Led") IDENTP name and GETL(p,kind) => format([p,:argl],name) formatForcePren [p,:argl] and - (try (format "$$" and formatForcePren name) + (tryLine (format "$$" and formatForcePren name) or (indent() and format "$__" and formatForcePren name and undent())) formatMacroCheck name == @@ -412,8 +412,8 @@ formatApplication1 u == [op,x] := u formatHasDollarOp x or $formatForcePren or pspadBindingPowerOf("left",x) < 1000 => formatOpPren(op,x) - try (formatOp op and format " ") and - (try formatApplication2 x or + tryLine (formatOp op and format " ") and + (tryLine formatApplication2 x or format "(" and formatApplication2 x and format ")") formatHasDollarOp x == @@ -433,7 +433,7 @@ formatApplication2 x == format x formatDot ["dot",a,x] == - try (formatOp a and format ".") and + tryLine (formatOp a and format ".") and ATOM x => format x formatPren x diff --git a/src/interp/pspad2.boot b/src/interp/pspad2.boot index fc1fba2a..bfcb317d 100644 --- a/src/interp/pspad2.boot +++ b/src/interp/pspad2.boot @@ -355,7 +355,7 @@ formatIf1 x == isTrue a => format b format "if " and format a and format " then " and format b format "if " and format a and - (try + (tryLine (format " then " and format b and format " else " and formatIfThenElse c) or spillLine() and format " then " and format b and @@ -381,7 +381,7 @@ formatConstruct(['construct,:u]) == "and"/[format "," and formatCut x for x in rest u]) and format "]" formatNextConstructItem x == - try format x or ($m := $m + 2) and newLine() and format x + tryLine format x or ($m := $m + 2) and newLine() and format x formatREPEAT ["REPEAT",:iteratorList,body] == tryBreakNB(null iteratorList or (formatIterator first iteratorList and @@ -463,12 +463,12 @@ formatNonAtom x == formatCAPSULE ['CAPSULE,:l,x] == $insideCAPSULE: local := true - try formatBlock(l,x) or formatPiles(l,x) or spillLine() and formatBlock(l,x) + tryLine formatBlock(l,x) or formatPiles(l,x) or spillLine() and formatBlock(l,x) formatPAREN [.,:argl] == formatFunctionCallTail argl formatSEQ ["SEQ",:l,[.,.,x]] == - try formatBlock(l,x) or formatPiles(l,x) or spillLine() and formatBlock(l,x) + tryLine formatBlock(l,x) or formatPiles(l,x) or spillLine() and formatBlock(l,x) --====================================================================== -- Comment Handlers @@ -593,7 +593,7 @@ isGensym x == -- Macro Helpers --====================================================================== tryToFit(s,x) == ---% try to format on current line; see macro try in file PSPADAUX LISP +--% try to format on current line; see macro tryLine in file PSPADAUX LISP --returns nil if unable to format stuff in x on a single line x => ($back:= rest $back; $c) restoreState() |
