Exemplo n.º 1
0
    public string RunProgram(string program)
    {
        xmlScriptParse scriptParse = new xmlScriptParse();

        scriptParse.Set(program);
        var element    = scriptParse.Parse1();
        var pgmelement = (element.GetListElement(0).isPROGRAM()) ? element.GetListElement(0) : null;

        if (pgmelement == null)
        {
            throw new SystemException("Error program");
        }

        m_rootElement.list.Add(pgmelement);

        var scrObj = GetScriptObj(null);

        if (string.IsNullOrEmpty(pgmelement.decname))
        {
            pgmelement.decname = "program_" + pgm_num++;
        }
        var stack = m_stackval.CreateStack(pgmelement.decname, pgmelement);

        scrObj.m_stdout = "";
        try
        {
            xmlScriptFunc.ExecutePROGRAM(pgmelement, scrObj, stack);
        }
        catch (SystemException e)
        {
            Debug.Log(e.Message);
        }
        return(scrObj.m_stdout);
    }
Exemplo n.º 2
0
    public static object ExecuteDEC_FUNC(ELEMENT e, xmlScriptObj scrObj, STACKVAL stack, object args)
    {
        if (e == null || !e.isDEC_FUNC())
        {
            return(null);
        }

        var newstack = stack.CreateStack(e.decname, e);

        var block_c = e.GetListElement(0);

        for (int i = 0; i < block_c.GetListCount(); i++)
        {
            var vname = block_c.GetListElement(i).raw;
            var val   = ((object[])args)[i];
            newstack.DeclareLocalVal(vname);
            newstack.SetVal(vname, val);
        }

        var o = Execute(e.GetListElement(1), scrObj, newstack);

        stack.DestroyStack(newstack);
        return(o);
    }