Age | Commit message (Collapse) | Author | Files | Lines |
|
(PARSE-LabelExpr): Remove.
* interp/newaux.lisp: Remove Nud property for << and >>.
|
|
* interp/compiler.boot (compUnnamedMapping): New.
(gatherParameterList): Likewise.
(compLambda): Likewise.
|
|
compWithMappingMode.
(finishLambdaExpression): Likewise.
(compWithMappingMode): Restructure.
|
|
* 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.
|
|
* 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.
|
|
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.
|
|
* 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.
|
|
* interp/metalex.lisp (|PARSE-OperatorFunctionName|): New. Use it.
* interp/fnewmeta.lisp (|PARSE-Category|): Handle operator
function names.
|
|
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'.
|
|
* 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.
|
|
* interp/c-util.boot: Likewise.
* interp/comp.lisp: Likewise.
* interp/compiler.boot: Likewise.
* interp/cparse.boot: Likewise.
* interp/def.lisp: Likewise.
* interp/define.boot: Likewise.
* interp/functor.boot: Likewise.
* interp/g-opt.boot: Likewise.
* interp/i-eval.boot: Likewise.
* interp/i-intern.boot: Likewise.
* interp/i-map.boot: Likewise.
* interp/i-spec1.boot: Likewise.
* interp/i-spec2.boot: Likewise.
* interp/iterator.boot: Likewise.
* interp/mark.boot: Likewise.
* interp/newaux.lisp: Likewise.
* interp/nruncomp.boot: Likewise.
* interp/nrunopt.boot: Likewise.
* interp/package.boot: Likewise.
* interp/parse.boot: Likewise.
* interp/pf2atree.boot: Likewise.
* interp/pf2sex.boot: Likewise.
* interp/postpar.boot: Likewise.
* interp/property.lisp: Likewise.
* interp/pspad1.boot: Likewise.
* interp/pspad2.boot: Likewise.
* interp/slam.boot: Likewise.
* interp/spad.lisp: Likewise.
* interp/wi1.boot: Likewise.
* interp/wi2.boot: Likewise.
|
|
* interp/newaux.lisp: Increase the binding power of "+->".
|
|
* compiler.boot (compileQuasiquote): New function.
* fnewmeta.lisp (|PARSE-Enclosure|): Parse quasiquotes too.
* i-intern.boot (mkAtree3): Don't evaluate arguments to
quasiquote.
* i-spec1.boot ($specialOps): Register [||].
(up[||]): Handle quasiquotes.
* newaux.lisp: Register `[|' and `|]' as new glyphs.
* pf2sex.boot ($insideApplication): Now count the nesting level of
application forms.
($insideQuasiquote): New. Count nesting level of quasiquotes.
(pfFinishApplication): Ensure application form nesting level is
properly decreased.
(pfApplication2Sex): Use it.
(pfQuasiquotation2Sex): Transform quasiquote forms.
(pf2Sex1): Use it.
* sys-constants.boot ($Syntax): New.
|
|
|