aboutsummaryrefslogtreecommitdiff
path: root/src/interp/metalex.lisp
AgeCommit message (Collapse)AuthorFilesLines
2010-12-07 Add support for exception handling.dos-reis1-2/+2
* 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.
2010-12-06 * interp/metalex.lisp (KEYWORDS): Include try.dos-reis1-1/+1
* algebra/numode.spad.pamphlet: Change field try to tryValue. * algebra/multsqfr.spad.pamphlet: Change identifier try to tryCount.
2009-07-13 * interp/metalex.lisp: "break" is now a keyword.dos-reis1-1/+1
* interp/fnewmeta.lisp (PARSE-Jump): New. * interp/compiler.boot (compAtom): Dipatch compilation of "break" and "iterate" to... (compBreak): ... here (compIterate): and here. (jumpFromLoop): New. (compRepeatOrCollect): Initialize $lookKind, $iterateCount, and $breakCount. Set exit point for loop bodies with 'iterate' expressions. * interp/parse.boot (parseAtom): Remove. (parseTran): Adjust. * algebra/outform.spad.pamphlet: Tidy. * interp/c-util.boot ($loopKind): Declare. ($repeatBodyLabel): Likewise. ($iterateCount): Likewise. ($breakCount): Likewise.
2009-06-14 Add support for existential type recovery.dos-reis1-1/+1
* interp/compiler.boot (compRecoverDomain): New. Split from compRecoverGuard. (compRecoverGuard): Split. Handle existential type recovery. (compScheme): New. Register as compiler. * interp/g-opt.boot (optLET*): New. Turn into LET-form if appropriate. Register as backend transformer. * interp/fnewmeta.lisp (|PARSE-Scheme|): New. (|PARSE-Quantifier|): Likewise. (|PARSE-QuantifiedVariableList|): Likewise. (|PARSE-QuantifiedVariable|): Likewise. * interp/metalex.lisp (KEYWORDS): Add 'forall' and 'exist' as new keywords. * interp/newaux.lisp: Register parser for expression schemes. * algebra/any.spad.pamphlet (=$Any): If the underlying domain has BasicType, use that equality operator. (coerce$Any): If the underlying domain has CoercibleTo OutputForm then use it.
2009-06-11 * interp/newaux.lisp: Remove digraphs '(<' and '>) as alternatedos-reis1-2/+1
spelling for '{' and '}'. * interp/fnewmeta.lisp (|PARSE-Primary1|): Use PARSE-Data for quoted forms. (|PARSE-Sexpr1|): Tidy. * interp/parse.boot (washOperatorName): New. Issue deprecation diagnostics for string syntax for operator names in signatures. (parseHas): Use it. (transCategoryItem): Likewise. * interp/metalex.lisp (advance-token): Likewise. * algebra/boolean.spad.pamphlet: Tidy.
2009-06-07 * algebra/domain.spad.pamphlet (DomainTemplate): New.dos-reis1-5/+5
(FunctorData): Likewise. (functorData$DomainConstructor): Likewise.
2009-05-28 * interp/newaux.lisp: Bot / and /\ are gliphs.dos-reis1-2/+3
* interp/sys-constants.boot ($OperatorFunctionNames): Include /\ and \/. * interp/fnewmeta.lisp (|PARSE-ReductionOp|): Tidy. * interp/metalex.lisp (|PARSE-OperatorFunctionName|): Likewise. * algebra/boolean.spad.pamphlet (PropositionalLogic): Use plain syntax for operators. (Logic): Likewise. (Boolean): Likewise. (KleeneTrivalentLogic): Likewise.
2009-05-25 * interp/sys-constants.boot ($OperatorFunctionNames): New.dos-reis1-0/+7
* interp/metalex.lisp (|PARSE-OperatorFunctionName|): New. Use it. * interp/fnewmeta.lisp (|PARSE-Category|): Handle operator function names.
2009-03-01 * interp/compiler.boot (compTopLevel): Initialize list ofdos-reis1-1/+1
optimizable domain constructors. (processInlineRequest): New. * interp/define.boot (spadCompileOrSetq): Tidy. (mutateToNothing): New. (doIt): Use it. Add support for inline directives. * interp/fnewmeta.lisp (PARSE-Inline): New. * interp/metalex.lisp (KEYWORDS): Include 'inline'.
2009-01-15 * algebra/riccati.spad.pamphlet (innerlb$PrimitiveRatRicDE): Fixdos-reis1-8/+9
thinko. * interp/bootlex.lisp (get-decimal-number-token): New. (get-integer-in-radix): Likewise. (is-radix-char): Likewise. (get-spad-integer-token): Likewise. Use them. (get-BOOT-token): Use it. * interp/metalex.lisp: Tidy.
2008-12-082008-12-07 Gabriel Dos Reis <gdr@cs.tamu.edu>dos-reis1-1/+1
* interp/g-opt.boot ($simpleVMoperators): New. (isSimpleVMForm): Likewise. (isFloatableVMForm): Likewise. (optLET): Likewise. Expand backend let-forms. * interp/c-util.boot (foldSpadcall): Look into LET and COND forms. (replaceSimpleFunctions): Likewise. (mutateCONDFormWithUnaryFunction): New. (mutateLETFormWithUnaryFunction): Likewise. * interp/compiler.boot (tryCourtesyCoercion): Split from coerce. (compRetractAlternative): Simplify. Now try courtesy coercions before retraction. (compRecoverAlternative): New. (compMatch): Simplify. Implement type recovery too. 2008-12-06 Gabriel Dos Reis <gdr@cs.tamu.edu> * interp/compiler.boot (compRetractAlternative): New. (compMatch): Likewise. Use it to implement pattern macthing for retractable domains. * interp/parse.boot (parseAtAt): New. * interp/postpar.boot (postAtAt): Likewise. (postAlternatives): Likewise. (postMatch): Likewise. * interp/metalex.lisp (Keywords): Remove `otherwise' as keyword. * interp/fnewmeta.lisp (|PARSE-Match|): New local parser. * interp/newaux.lisp (@@): New token. Align wih interpreter. (otherwise): Remove binding specification. (case): Now also a Nud token.
2008-11-24 * interp/i-output.boot ($RecordSeparator): New.dos-reis1-1/+2
(maprin): Use it. Separate record in lean mode. * interp/sys-globals.boot ($leanMode): Define. * interp/sys-driver.boot (systemMain): Initialize. * interp/ht-util.boot (executeInterpreterCommand): Print prompt only in non-lean mode. * interp/int-top.boot (SpadInterpretStream): Likewise. (intloopReadConsole): Likewise. * interp/metalex.lisp (get-a-line): Likewise. * interp/server.boot: Likewise.
2008-10-08 * interp/i-util.boot (printPrompt): New.dos-reis1-1/+1
* interp/ht-util.boot (executeInterpreterCommand): Use it. * interp/int-top.boot (SpadInterpretStream): Likewise. * interp/metalex.lisp (get-a-line): Likewise. * interp/server.boot (serverReadLine): Likewise. (serverLoop): Likewise.
2008-07-07 * interp/spad.lisp (S-PROCESS): Remove Old Boot specific codes.dos-reis1-1/+1
* interp/server.boot (parseAndInterpret): Don't set $BOOT. * interp/setvars.boot (resetWorkspaceVariables): Likewise. * interp/spad-parser.boot (parseSpadFile): Likewise. * interp/postpar.boot: Disable Old Boot handling codes. * interp/metalex.lisp (quote-if-string): Don't test for $BOOT. * interp/parsing.lisp (IOStat): Likewise. (IOClear): Likewise. * interp/ht-util.boot (parseAndEval): Don't set $BOOT. * interp/int-top.boot (ncTopLevel): Likewise. * interp/fnewmeta.lisp: Remove Old Boot specific productions. * interp/sys-macros.lisp (-REDUCE): Don't test for $BOOT. (SPADDO): Likewise. * interp/comp.lisp (COMP-TRAN-1): Likewise. * interp/util.lisp (|string2SpadTree|): Likewise. * interp/bootlex.lisp (READBOOT): Remove. (READ-BOOT): Likewise. (spad): Don't initialize $BOOT. * interp/debug.lisp (/D-2): Likewise.
2008-03-25 * interp/bootlex.lisp: Import "sys-globals". dos-reis1-4/+4
Consistently use $InputStream and $OutputStream for I/O. * interp/c-util.boot: Likewise. * interp/comp.lisp: Likewise. * interp/compat.boot: Likewise. * interp/debug.lisp: Likewise. * interp/def.lisp: Likewise. * interp/g-error.boot: Likewise. * interp/i-toplev.boot: Likewise. * interp/int-top.boot: Likewise. * interp/intfile.boot: Likewise. * interp/lisplib.boot: Likewise. * interp/macros.lisp: Likewise. * interp/metalex.lisp: Likewise. * interp/msgdb.boot: Likewise. * interp/patches.lisp: Likewise. * interp/preparse.lisp: Likewise. * interp/server.boot: Likewise. * interp/spad-parser.boot: Likewise. * interp/spad.lisp: Likewise. * interp/sys-globals.boot: Likewise. * interp/sys-macros.lisp: Likewise. * interp/sys-os.boot: Likewise. * interp/unlisp.lisp: Likewise. * interp/vmlisp.lisp: Likewise. * interp/Makefile.pamphlet (bootlex.$(FASLEXT)): Require sys-globals.$(FASLEXT) too. (vmlisp.$(FASLEXT)): Likewise.
2007-10-13Remove more pamphletsdos-reis1-0/+2
2007-09-192007-09-19 Gabriel Dos Reis <gdr@cs.tamu.edu>dos-reis1-3/+541
* Makefile.pamphlet (all-interpsys): Now depend on all-depsys. src/interp/ 2007-09-19 Gabriel Dos Reis <gdr@cs.tamu.edu> * util.lisp.pamphlet ($directory-list): Move to sys-globals.boot. ($library-directory-list): Likewise. * spad.lisp.pamphlet: Import "bootlex". * preparse.lisp.pamphlet: Import "fnewmeta". * postprop.lisp: Import "macros". * postpar.boot.pamphlet: Import "postprop". * nlib.lisp.pamphlet (rdefiostream): Define unconditionally. (get-io-index-stream): Likewise. (makedir): Likewise. (get-directory-list): Don't use $current-diretory. ($filetype-table): Move to sys-constants.boot. * patches.lisp.pamphlet ($current-directory): Remove. (|cd|): Simplify implementation. * newaux.lisp.pamphlet: Import "macros". (|PARSE-NewKEY|): Define. * metalex.lisp: Move various file, line, stack, character utilities to here. * macros.lisp.pamphlet (NREVERSE0): Move to sys-macros.lisp. Tidy. * fnewmeta.lisp.pamphlet: Import "parsing". * comp.lisp: Import "macros". * def.lisp: Likewise. (B-MDEF): Fix thinko. * bootlex.lisp: Import "preparse", "def", and "nlib". (BOOT-LINE-STACK): Move to metalex.lisp. (NEXT-LINES-CLEAR): Likewise. (NEXT-LINES-SHOW): Likewise. (XCAPE): Likewise. (KEYWORDS): Likewise. * Makefile.pamphlet (${DEPSYS}): Now have all Lisp in compiled form and load them. * bookvol5.pamphlet ($current-directory): Remove.
2007-09-10 * Makefile.pamphlet (DEP): Adjust path to comp.lisp.dos-reis1-0/+275
(${DEPSYS}): Likewise for def.lisp, bootlex.lisp, postprop.lisp, metalex.lisp. Use |compileLispFile| instead of COMPILE-FILE. * Makefile.in: Regenerate. * union.lisp: New. * union.lisp.pamphlet: Move content to union.lisp. Remove. * obey.lisp: New. * obey.lisp.pamphlet: Move content to obey.lisp. Remove. * nspadaux.lisp: New. * nspadaux.lisp.pamphlet: Move content to nspadaux.lisp. Remove. * fname.lisp: New. * fname.lisp.pamphlet: Move content to fname.lisp. Remove. * def.lisp: New. * def.lisp.pamphlet: Move content to def.lisp. Remove. * comp.lisp: New. * comp.lisp.pamphlet: Move content to comp.lisp. Remove. * bootlex.lisp: New. * bootlex.lisp.pamphlet: Move content to bootlex.lisp. Remove. * postprop.lisp: New. * postprop.lisp.pamphlet: Move content to postprop.lisp. Remove. * metalex.lisp: New. * metalex.lisp.pamphlet: Move content to metalex.lisp. Remove. * parsing.lisp: New. * parsing.lisp.pamphlet: Move content to parsing.lisp. Remove.