diff options
author | dos-reis <gdr@axiomatics.org> | 2008-12-08 07:35:22 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2008-12-08 07:35:22 +0000 |
commit | 52b3f7dee38b7a15e1b017e6a41ac63cbf6e95e8 (patch) | |
tree | 9f6023cdfd57bf982486d866ba32252d304b659e /src/interp/i-spec1.boot | |
parent | dec92cd40550e8532d36502dd75d6f9d639d7f7c (diff) | |
download | open-axiom-52b3f7dee38b7a15e1b017e6a41ac63cbf6e95e8.tar.gz |
2008-12-07 Gabriel Dos Reis <gdr@cs.tamu.edu>
* 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.
Diffstat (limited to 'src/interp/i-spec1.boot')
-rw-r--r-- | src/interp/i-spec1.boot | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/interp/i-spec1.boot b/src/interp/i-spec1.boot index ee6d9787..8cc56925 100644 --- a/src/interp/i-spec1.boot +++ b/src/interp/i-spec1.boot @@ -42,7 +42,7 @@ $specialOps := '( ADEF AlgExtension _and _case COERCE COLLECT construct Declare DEF Dollar equation error free has IF _is _isnt iterate _break %LET _local MDEF _or pretend QUOTE REDUCE REPEAT _return SEQ TARGET tuple typeOf _where - _[_|_|_] %Macro %MLambda %Import %Export %Inline %With %Add) + _[_|_|_] %Macro %MLambda %Import %Export %Inline %With %Add %Match) $repeatLabel := NIL $breakCount := 0 @@ -1134,9 +1134,7 @@ declare(var,mode) == if var is ['free,v] then upfreeWithType(v,mode) var := v - not IDENTP(var) => - throwKeyedMsg("S2IS0016",[STRINGIMAGE var]) - var in '(% %%) => throwKeyedMsg("S2IS0050",[var]) + validateVariableNameOrElse var if get(var,'isInterpreterFunction,$e) then mode isnt ['Mapping,.,:args] => throwKeyedMsg("S2IS0017",[var,mode]) |