aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-06-30 20:59:38 +0000
committerdos-reis <gdr@axiomatics.org>2010-06-30 20:59:38 +0000
commitd7ba76ec28cadc0dd9e2319938aabc91e92e1618 (patch)
treeabdf32c26ac3e9a8c11888ed4765cdf73a1a8434 /src/interp
parent2b3e5e071c5ebb0d4982ae8fd2426c43f6147e36 (diff)
downloadopen-axiom-d7ba76ec28cadc0dd9e2319938aabc91e92e1618.tar.gz
* interp/c-util.boot (giveVariableSomeValue): New.
* interp/compiler.boot (setqMultiple): Use it. (compColon): Likewise. (compRetractGuard): Likewise. (compRecoverDomain): Likewise. (defineMatchScrutinee): Likewise. (compStepIterator): Likewise. (compIterator): Likewise. (compUnnamedMapping): Likewise. * interp/define.boot (giveFormalParametersValues): Likewise. * interp/wi1.boot (setqMultiple): Likewise. * interp/wi2.boot (compIterator): Likewise. (smallIntegerStep): Likewise.
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/c-util.boot7
-rw-r--r--src/interp/compiler.boot20
-rw-r--r--src/interp/define.boot4
-rw-r--r--src/interp/g-opt.boot4
-rw-r--r--src/interp/wi1.boot4
-rw-r--r--src/interp/wi2.boot8
6 files changed, 27 insertions, 20 deletions
diff --git a/src/interp/c-util.boot b/src/interp/c-util.boot
index 1403eaf8..5a42c2f0 100644
--- a/src/interp/c-util.boot
+++ b/src/interp/c-util.boot
@@ -46,6 +46,7 @@ module c_-util where
getFunctionReplacement: %Symbol -> %Form
getSuccessEnvironment: (%Form,%Env) -> %Env
getInverseEnvironment: (%Form,%Env) -> %Env
+ giveVariableSomeValue: (%Symbol,%Mode,%Env) -> %Env
--%
@@ -465,6 +466,12 @@ getInverseEnvironment(a,e) ==
a is ["not",a'] => getSuccessEnvironment(a',e)
e
+++ Give some abstract value to the variable `v' of mode `m' in `e'.
+++ Return the resulting environment.
+giveVariableSomeValue(x,m,e) ==
+ put(x,'value,[genSomeVariable(),m,nil],e)
+
+
printEnv E ==
for x in E for i in 1.. repeat
for y in x for j in 1.. repeat
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot
index 6fa7b699..f412c078 100644
--- a/src/interp/compiler.boot
+++ b/src/interp/compiler.boot
@@ -865,7 +865,7 @@ setqMultiple(nameList,val,m,e) ==
-- 1.1. exit if result is a list
m1 is ["List",D] =>
for y in nameList repeat
- e:= put(y,"value",[genSomeVariable(),D,$noEnv],e)
+ e:= giveVariableSomeValue(y,D,e)
convert([["PROGN",x,["%LET",nameList,g],g],m',e],m)
-- 2. verify that the #nameList = number of parts of right-hand-side
selectorModePairs:=
@@ -1536,7 +1536,7 @@ compColon([":",f,t],m,e) ==
put(f,"mode",t,e)
if not $bootStrapMode and $insideFunctorIfTrue and
makeCategoryForm(t,e) is [catform,e] then
- e:= put(f,"value",[genSomeVariable(),t,$noEnv],e)
+ e := giveVariableSomeValue(f,t,e)
["/throwAway",getmode(f,e),e]
unknownTypeError name ==
@@ -1738,7 +1738,7 @@ coerceSuperset(T,sub) ==
T'.rest.first := "$"
T'
pred := isSubset(sub,T.mode,T.env) =>
- [["%Retract",T.expr,sub,pred],sub,T.env]
+ [["%retract",T.expr,sub,pred],sub,T.env]
nil
compCoerce1(x,m',e) ==
@@ -1983,7 +1983,7 @@ compRetractGuard(x,t,sn,sm,e) ==
else return stackAndThrow('"%1bp is not retractable to %2bp",[sm,t])
-- 2. Now declare `x'.
[.,.,e] := compMakeDeclaration(x,t,e) or return nil
- e := put(x,"value",[genSomeVariable(),t,$noEnv],e)
+ e := giveVariableSomeValue(x,t,e)
-- 3. Assemble result.
[caseCode, [[x,restrictCode]],e,envFalse]
@@ -2000,7 +2000,7 @@ compRecoverDomain(x,t,sn,e) ==
-- 2. Declare `x'.
originalEnv := e
[.,.,e] := compMakeDeclaration(x,t,e) or return nil
- e := put(x,"value",[genSomeVariable(),t,$noEnv],e)
+ e := giveVariableSomeValue(x,t,e)
-- 3. Assemble the result
[caseCode,[[x,['%tail,sn]]],e,originalEnv]
@@ -2082,7 +2082,7 @@ defineMatchScrutinee(m,e) ==
where defTemp(m,e) ==
t := gensym()
[.,.,e] := compMakeDeclaration(t,m,e)
- [t,put(t,"value",[genSomeVariable(),m,$noEnv],e)]
+ [t,giveVariableSomeValue(t,m,e)]
++ Generate code for guard in a simple pattern where
++ `sn' is the name of the temporary holding the scrutinee value,
@@ -2415,7 +2415,7 @@ compStepIterator(index,start,final,inc,e) ==
joinIntegerModes(startMode,finalMode,e)
if get(index,"mode",e) = nil then
[.,.,e] := compMakeDeclaration(index,indexMode,e) or return nil
- e:= put(index,"value",[genSomeVariable(),indexMode,$noEnv],e)
+ e := giveVariableSomeValue(index,indexMode,e)
[["STEP",index,start,inc,:final],e]
compIterator(it,e) ==
@@ -2432,7 +2432,7 @@ compIterator(it,e) ==
stackMessage('"mode: %1pb must be a list of some mode",[m])
if null get(x,"mode",e) then [.,.,e]:=
compMakeDeclaration(x,mUnder,e) or return nil
- e:= put(x,"value",[genSomeVariable(),mUnder,$noEnv],e)
+ e:= giveVariableSomeValue(x,mUnder,e)
[y'',m'',e] := coerce([y',m,e], mOver) or return nil
[["IN",x,y''],e]
it is ["ON",x,y] =>
@@ -2445,7 +2445,7 @@ compIterator(it,e) ==
stackMessage('"mode: %1pb must be a list of other modes",[m])
if null get(x,"mode",e) then [.,.,e]:=
compMakeDeclaration(x,m,e) or return nil
- e:= put(x,"value",[genSomeVariable(),m,$noEnv],e)
+ e:= giveVariableSomeValue(x,m,e)
[y'',m'',e] := coerce([y',m,e], mOver) or return nil
[["ON",x,y''],e]
it is ["STEP",index,start,inc,:optFinal] =>
@@ -2516,7 +2516,7 @@ compUnnamedMapping(parms,source,target,body,env) ==
savedEnv := env
for p in parms for s in source repeat
[.,.,env] := compMakeDeclaration(p,s,env)
- env := put(p,'value,[genSomeVariable(),get(p,'mode,env),nil],env)
+ env := giveVariableSomeValue(p,get(p,'mode,env),env)
T := comp(body,target,env) or return nil
[.,fun] := optimizeFunctionDef [nil,["LAMBDA",parms,T.expr]]
fun := finishLambdaExpression(fun,env)
diff --git a/src/interp/define.boot b/src/interp/define.boot
index ad52ec88..039f1618 100644
--- a/src/interp/define.boot
+++ b/src/interp/define.boot
@@ -332,8 +332,8 @@ getTargetFromRhs(lhs,rhs,e) ==
(compOrCroak(rhs,$EmptyMode,e)).mode
giveFormalParametersValues(argl,e) ==
- for x in argl repeat
- e:= put(x,'value,[genSomeVariable(),get(x,'mode,e),nil],e)
+ for x in argl | IDENTP x repeat
+ e := giveVariableSomeValue(x,get(x,'mode,e),e)
e
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot
index 6786bbbf..1670e994 100644
--- a/src/interp/g-opt.boot
+++ b/src/interp/g-opt.boot
@@ -659,7 +659,7 @@ optCollectVector form ==
++ Translate retraction of a value denoted by `e' to sub-domain `m'
++ defined by predicate `pred',
-optRetract ["%Retract",e,m,pred] ==
+optRetract ["%retract",e,m,pred] ==
atom e => ["check-subtype",substitute(e,"#1",pred),MKQ m,e]
g := gensym()
["LET",[[g,e]],["check-subtype",substitute(g,"#1",pred),MKQ m,g]]
@@ -682,7 +682,7 @@ for x in '( (%call optCall) _
(_| optSuchthat)_
(CATCH optCatch)_
(COND optCond)_
- (%Retract optRetract)_
+ (%retract optRetract)_
(%CollectV optCollectVector)_
(mkRecord optMkRecord)_
(RECORDELT optRECORDELT)_
diff --git a/src/interp/wi1.boot b/src/interp/wi1.boot
index e67cc234..f8f7c5c9 100644
--- a/src/interp/wi1.boot
+++ b/src/interp/wi1.boot
@@ -605,7 +605,7 @@ setqMultiple(nameList,val,m,e) ==
[x,m',e]:= convert(T,m) or return nil
--1.1 exit if result is a list
m1 is ["List",D] =>
- for y in nameList repeat e:= put(y,"value",[genSomeVariable(),D,$noEnv],e)
+ for y in nameList repeat e := giveVariableSomeValue(y,D,e)
convert([["PROGN",x,["%LET",nameList,g],g],m',e],m)
--2. verify that the #nameList = number of parts of right-hand-side
selectorModePairs:=
@@ -730,7 +730,7 @@ compColon([":",f,t],m,e) ==
put(f,"mode",t,e)
if not $bootStrapMode and $insideFunctorIfTrue and
makeCategoryForm(t,e) is [catform,e] then
- e:= put(f,"value",[genSomeVariable(),t,$noEnv],e)
+ e:= giveVariableSomeValue(f,t,e)
["/throwAway",getmode(f,e),e]
compConstruct(form,m,e) == (T := compConstruct1(form,m,e)) and markConstruct(form,T)
diff --git a/src/interp/wi2.boot b/src/interp/wi2.boot
index 451a4b70..1bd25e3b 100644
--- a/src/interp/wi2.boot
+++ b/src/interp/wi2.boot
@@ -761,7 +761,7 @@ compIterator(it,e) ==
stackMessage ["mode: ",m," must be a list or vector of some mode"]
if null get(x,"mode",e) then [.,.,e]:=
compMakeDeclaration(x,mUnder,e) or return nil
- e:= put(x,"value",[genSomeVariable(),mUnder,e],e)
+ e:= giveVariableSomeValue(x,mUnder,e)
markReduceIn(it, [["IN",x,y'],e])
it is ["ON",x,y] =>
---------------> new <---------------------
@@ -777,7 +777,7 @@ compIterator(it,e) ==
stackMessage ["mode: ",m," must be a list of other modes"]
if null get(x,"mode",e) then [.,.,e]:=
compMakeDeclaration(x,m,e) or return nil
- e:= put(x,"value",[genSomeVariable(),m,e],e)
+ e:= giveVariableSomeValue(x,m,e)
[["ON",x,y'],e]
it is ["STEP",oindex,start,inc,:optFinal] =>
index := markKillAll oindex
@@ -805,7 +805,7 @@ compIterator(it,e) ==
-- markImport ['Segment,indexmode]
if null get(index,"mode",e) then [.,.,e]:=
compMakeDeclaration(index,indexmode,e) or return nil
- e:= put(index,"value",[genSomeVariable(),indexmode,e],e)
+ e:= giveVariableSomeValue(index,indexmode,e)
markReduceStep(it, [["STEP",markStep(index),start,inc,:optFinal],e])
it is ["WHILE",p] =>
[p',m,e]:=
@@ -853,7 +853,7 @@ smallIntegerStep(it,index,start,inc,optFinal,e) ==
givenRange => givenRange
nil
e:= put(index,"range",range,e)
- e:= put(index,"value",[genSomeVariable(),indexmode,e],e)
+ e:= giveVariableSomeValue(index,indexmode,e)
noptFinal :=
final' =>
[final'.expr]