// Start is called before the first frame update void Start() { string code = @" function fact (n) if n == 0 then return 1 else return n * fact(n-1) end end s = fact(3) return s "; ev = new Eval(); var parser = new Parser(code, new Parser.Settings()); var statements = parser.Read(); var node = ev.EvaluateNode(statements); Debug.Log($"evaluator returned a {node.GetType()} of val {node}"); if (node.IsError()) { var err = node as Error; Debug.LogWarning($"program returned the following error: {err.Message}"); } }
public Object Call(Object[] objects) { for (int i = 0; i < objects.Length; ++i) { Object obj = objects[i]; ctx.Set(definition.ArgumentNames[i], obj); } return(localEvaluator.EvaluateNode(definition.Block)); }