Files
argon-v3/src/run.go

28 lines
597 B
Go

package main
// returns (number|string|nil), error
func runVal(line any, stack []map[string]variableValue) (any, ArErr) {
switch x := line.(type) {
case translateNumber:
return (x.number), ArErr{}
case translateString:
return (x.str), ArErr{}
case call:
return runCall(x, stack)
case accessVariable:
return readVariable(x, stack)
}
panic("unreachable")
}
// returns error
func run(translated []any, stack []map[string]variableValue) (any, ArErr) {
for _, val := range translated {
_, err := runVal(val, stack)
if err.EXISTS {
return nil, err
}
}
return nil, ArErr{}
}