Beispiel #1
0
        public Context CreateSubContext(ObjLuaFunction fkt, out string paramlist)
        {
            Context c = new Context(globals, indent + "\t");

            paramlist = "";
            if (fkt != null)
            {
                int lc = 0;
                for (int i = 0; i < fkt.ArgumentCount; i++)
                {
                    if (i > 0)
                    {
                        paramlist += ", ";
                    }
                    paramlist += "param" + i;

                    c.ForceDefineLocal((ushort)lc, "param" + i);
                    c.SetLocal((ushort)lc, 0.0);
                    lc++;
                }

                /*for (int i=0; i<fkt.StackSize; i++)
                 * {
                 *      c.ForceDefineLocal((ushort)lc, "stack"+i);
                 *      c.SetLocal((ushort)lc, 0.0);
                 *      lc++;
                 * }*/
            }

            return(c);
        }
Beispiel #2
0
        public void Run(Context cx)
        {
            ObjLuaFunction fkt = cx.KProto(BX);

            cx.SetReg(this.A, fkt);

            System.IO.StreamWriter sw = new System.IO.StreamWriter(new System.IO.MemoryStream());
            string  paramlist;
            Context scx = cx.CreateSubContext(fkt, out paramlist);

            sw.WriteLine();
            sw.WriteLine(cx.Indent + "function {{name}}(" + paramlist + ")");
            fkt.ToSource(sw, scx);
            sw.Write(cx.Indent + "end");
            sw.WriteLine();

            sw.Flush();
            sw.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);
            System.IO.StreamReader sr = new System.IO.StreamReader(sw.BaseStream);
            cx.SetSReg(A, sr.ReadToEnd());
            sw.Close();
        }
Beispiel #3
0
 internal void Init(ObjLuaFunction parent)
 {
     this.parent = parent;
     pc          = -1;
 }
Beispiel #4
0
 public CONCAT(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #5
0
 public TextLine(uint val, ObjLuaFunction parent, string txt) : base(val, parent)
 {
     this.txt = txt;
 }
Beispiel #6
0
 public FORLOOP(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #7
0
 public RETURN(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #8
0
 public GETTABLE(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #9
0
 public LOADK(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #10
0
 public GT(uint val, ObjLuaFunction parent) : base(">", "<=", val, parent)
 {
 }
Beispiel #11
0
 public LT(uint val, ObjLuaFunction parent) : base("<", ">=", val, parent)
 {
 }
Beispiel #12
0
 public EQ(uint val, ObjLuaFunction parent) : base("==", "~=", val, parent)
 {
 }
Beispiel #13
0
 public IF(string symb, string nsymb, uint val, ObjLuaFunction parent) : base(val, parent)
 {
     this.symb  = symb;
     this.nsymb = nsymb;
 }
Beispiel #14
0
 public CLOSURE(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #15
0
 public Operator(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #16
0
 public MOVE(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #17
0
 public SELF(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #18
0
 public GETGLOBAL(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #19
0
 public TEST(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #20
0
 public CALL(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }
Beispiel #21
0
 public TFORREP(uint val, ObjLuaFunction parent) : base(val, parent)
 {
 }