Beispiel #1
0
        public dynamic ExecuteFunc(StructFunc func)
        {
            Log("Running Func:" + func.Name);

            return(func.Exec());

            return(func.LocalScope);
        }
Beispiel #2
0
        public StructFunc ParseFunc(ref int i)
        {
            bool is_static = false;

            Log("Begun parsing function", i, false);

            if (toks.Tokes[i].Token != Token.Func)
            {
                Error(i, "Expecting 'func' definition.");
            }

            if (Peek(i + 1).Text == "static")
            {
                is_static = true;
                i++;
            }

            string func_name = Peek(i + 1).Text;

            if (func_name.Contains("test1"))
            {
                int v = 5;
            }

            Log("Module func:" + func_name + " static:" + is_static, i, false);

            i += 2;

            StructFunc func = new StructFunc();

            func.Static   = is_static;
            func.FuncName = func_name;

            var ftok = toks.Tokes[i];

            if (ftok.Text != "(")
            {
                Error(i, "Expected begining of function definition parameters.");
                //    Console.WriteLine("Error, expected (");
            }

            var pars = ParseParameters(ref i);

            Log("ParsPassed:", i);

            var code_body = ParseCodeBody(ref i);

            Log("Parsed code-body.", i);
            func.Code = code_body;
            func.Pars = pars;

            return(func);
        }
Beispiel #3
0
        public CodeScope RunEntry()
        {
            StructFunc entry_func = Entry.FindSystemFunc("Entry");

            if (entry_func == null)
            {
                Error("Unable to find entry point.");
            }
            PushScope(SystemScope);
            return(ExecuteFunc(entry_func));

            PopScope();
        }
Beispiel #4
0
        public void WriteNewFunc(StructFunc func)
        {
            C("public ");
            if (func.Static)
            {
                C("static ");
            }
            C(func.FuncName + "(");
            WritePars(func.Pars);
            Write(")");
            Write("{");
            WriteCode(func.Code);

            Write("}");
        }
Beispiel #5
0
 public void WriteFunc(StructFunc func)
 {
     Console.WriteLine("WriteFunc:" + func.Name + "!");
     C("public ");
     if (func.Static)
     {
         C("static ");
     }
     C("dynamic " + func.FuncName + "(");
     WritePars(func.Pars);
     Write(")");
     Write("{");
     if (func.FuncName == "Get")
     {
         int v = 5;
     }
     WriteCode(func.Code);
     Write("return null;");
     Write("}");
 }
Beispiel #6
0
 public SynFunc(StructFunc link)
 {
     Link = link;
     Name = link.FuncName;
     Type = FuncType.SCode;
 }