fix bug in repeated function calls
This commit is contained in:
parent
93cd5c5a48
commit
81d299aa5e
3 changed files with 20 additions and 11 deletions
13
ast/eval.go
13
ast/eval.go
|
|
@ -43,17 +43,16 @@ func (in *Token) Eval(funcs FuncTable, vars VarTable, cnvtUndefVars bool) *Token
|
|||
|
||||
switch in.Tag {
|
||||
case BOOL, NUMBER, STRING:
|
||||
res = in
|
||||
res = in.Copy()
|
||||
|
||||
case SYMBOL:
|
||||
res = GetVar(in.Value(), vars)
|
||||
if res == nil {
|
||||
res = in
|
||||
res = in.Copy()
|
||||
|
||||
if GetFunction(in.Value(), funcs) == nil {
|
||||
if cnvtUndefVars {
|
||||
in.Tag = STRING
|
||||
res = in
|
||||
res.Tag = STRING
|
||||
break
|
||||
}
|
||||
|
||||
|
|
@ -63,19 +62,17 @@ func (in *Token) Eval(funcs FuncTable, vars VarTable, cnvtUndefVars bool) *Token
|
|||
return nil
|
||||
}
|
||||
}
|
||||
res.Next = in.Next
|
||||
|
||||
|
||||
case LIST:
|
||||
inner := in.Expand()
|
||||
if inner == nil {
|
||||
res = in
|
||||
res = in.Copy()
|
||||
break
|
||||
}
|
||||
|
||||
if inner.Tag != SYMBOL {
|
||||
in.Direct(inner.Eval(funcs, vars, cnvtUndefVars))
|
||||
res = in
|
||||
res = in.Copy()
|
||||
break
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue