diff options
author | dos-reis <gdr@axiomatics.org> | 2011-08-14 21:23:34 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-08-14 21:23:34 +0000 |
commit | 7dff09b8cac803d6936887fdfa286a2a25073ac2 (patch) | |
tree | 1f82b9c5f57145f6f2234617bb35503666f0b2dc /src/interp/fnewmeta.lisp | |
parent | 775f2c3cca11ab64df713afb7f35363afe5d4ce0 (diff) | |
download | open-axiom-7dff09b8cac803d6936887fdfa286a2a25073ac2.tar.gz |
* interp/lisp-backend.boot ($freeVarName): New global constant.
(loopVarInit): New.
(expandIN): Use it.
(expandON): Likewise.
(expandSTEP): Likewise.
(massageFreeVarInits): New.
(expandLoop): Use it.
* interp/fnewmeta.lisp (PARSE-QuantifiedVariable): Tidy.
(PARSE-AnyId): Likewise.
(PARSE-Variable): New. Allow scope-of-type specification for
loop variable.
(PARSE-Iterator): Use it.
* interp/compiler.boot (massage_llop): Don't check
$mayHaveFreeIteratorVariables.
(compRepeatOrCollect): Don't bind it.
(classifyIteratorVariable): New.
(complainIfShadowing): Remove as no longer needed.
(compStepIterator): Use it. Tidy.
(compONIterator, compINIterator): New. Split out of compIterator.
(compIterator): Refactor.
* interp/functor.boot (optFunctorBody): Fix thinko.
* interp/g-opt.boot (optCollectVector): A STEP iterator may have a
storage class.
* algebra/clip.spad.pamphlet: Fix loop variable scope.
* algebra/ffpoly.spad.pamphlet: Likewise.
* algebra/fparfrac.spad.pamphlet: Likewise.
* algebra/gdpoly.spad.pamphlet: Likewise.
* algebra/ghensel.spad.pamphlet: Likewise.
* algebra/groebsol.spad.pamphlet: Likewise.
* algebra/intfact.spad.pamphlet: Likewise.
* algebra/matfuns.spad.pamphlet: Likewise.
* algebra/moddfact.spad.pamphlet: Likewise.
* algebra/numtheor.spad.pamphlet: Likewise.
* algebra/permgrps.spad.pamphlet: Likewise.
* algebra/pfbr.spad.pamphlet: Likewise.
* algebra/pgcd.spad.pamphlet: Likewise.
* algebra/pleqn.spad.pamphlet: Likewise.
* algebra/pseudolin.spad.pamphlet: Likewise.
* algebra/radeigen.spad.pamphlet: Likewise.
* algebra/radix.spad.pamphlet: Likewise.
* algebra/regset.spad.pamphlet: Likewise.
* algebra/rep2.spad.pamphlet: Likewise.
* algebra/sgcf.spad.pamphlet: Likewise.
* algebra/smith.spad.pamphlet: Likewise.
* algebra/sregset.spad.pamphlet: Likewise.
* algebra/syssolp.spad.pamphlet: Likewise.
* algebra/zerodim.spad.pamphlet: Likewise.
* algebra/crfp.spad.pamphlet: Remove capsule-level declaration of
local variables.
* algebra/galfact.spad.pamphlet: Likewise.
* algebra/mathml.spad.pamphlet: Likewise.
* algebra/numode.spad.pamphlet: Likewise.
* algebra/tex.spad.pamphlet: Likewise.
* algebra/updecomp.spad.pamphlet: Likewise.
Diffstat (limited to 'src/interp/fnewmeta.lisp')
-rw-r--r-- | src/interp/fnewmeta.lisp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/interp/fnewmeta.lisp b/src/interp/fnewmeta.lisp index f1cd15e0..28c9e03c 100644 --- a/src/interp/fnewmeta.lisp +++ b/src/interp/fnewmeta.lisp @@ -263,7 +263,7 @@ (MUST (MATCH-ADVANCE-STRING ")")))) (DEFUN |PARSE-QuantifiedVariable| () - (AND (PARSE-IDENTIFIER) + (AND (|PARSE-Name|) (MUST (MATCH-ADVANCE-STRING ":")) (MUST (|PARSE-Application|)) (MUST (PUSH-REDUCTION '|PARSE-QuantifiedVariable| @@ -437,8 +437,18 @@ (CONS 'REPEAT (CONS (POP-STACK-1) NIL)))))) +(DEFUN |PARSE-Variable| () + (OR (AND (|PARSE-Name|) + (OPTIONAL (AND (MATCH-ADVANCE-STRING ":") + (MUST (|PARSE-Application|)) + (MUST (PUSH-REDUCTION '|PARSE-Variable| + (CONS '|:| + (CONS (POP-STACK-2) + (CONS (POP-STACK-1) NIL)))))))) + (|PARSE-Primary|))) + (DEFUN |PARSE-Iterator| () - (OR (AND (MATCH-ADVANCE-KEYWORD "for") (MUST (|PARSE-Primary|)) + (OR (AND (MATCH-ADVANCE-KEYWORD "for") (MUST (|PARSE-Variable|)) (MUST (MATCH-ADVANCE-KEYWORD "in")) (MUST (|PARSE-Expression|)) (MUST (OR (AND (MATCH-ADVANCE-KEYWORD "by") @@ -792,7 +802,7 @@ (DEFUN |PARSE-AnyId| () - (OR (PARSE-IDENTIFIER) + (OR (|PARSE-Name|) (OR (AND (MATCH-STRING "$") (PUSH-REDUCTION '|PARSE-AnyId| (CURRENT-SYMBOL)) (ACTION (ADVANCE-TOKEN))) |