示例#1
0
    // 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}");
        }
    }
示例#2
0
 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));
 }