Exemple #1
0
        public static void Main()
        {
            var codeReader = new StringReader(_code);
            var rawTokens  = new LuaRawTokenizer();
            var luaTokens  = new LuaTokenizer();

            rawTokens.Reset(codeReader);
            luaTokens.Reset(rawTokens);

            var parser  = new LuaParser();
            var builder = new SyntaxTreeBuilder();

            builder.Start();
            luaTokens.EnsureMoveNext();
            parser.Reset(luaTokens, builder);
            parser.Parse();

            var ast = builder.Finish();

            var env = new Table();

            env.SetRaw(TypedValue.MakeString("print"), TypedValue.MakeNClosure(Print));

            var codeGen = new CodeGenerator();
            var closure = codeGen.Compile(ast, env);

            var thread = new Thread();
            var stack  = thread.AllocateRootCSharpStack(1);

            var arg = TypedValue.MakeString("C#");

            stack.Write(0, in arg);
            LuaInterpreter.Execute(stack, closure, 0, 1);
            stack.Read(0, out var ret);
        }
Exemple #2
0
        public void HelloWorldTest()
        {
            LuaParser parser;

            var context = new LuaContext();
            context.AddBasicLibrary();
            context.AddIoLibrary();

            parser = new LuaParser(context, "helloworld.lua");
            parser.Parse();
        }
Exemple #3
0
        public void FunctionScopesTest()
        {
            LuaParser parser;

            var context = new LuaContext();
            context.AddBasicLibrary();
            context.AddIoLibrary();

            parser = new LuaParser(context, "functionscopes.lua");
            parser.Parse();
        }
Exemple #4
0
        public void DoFileTest()
        {
            LuaParser parser;

            var context = new LuaContext();
            context.AddBasicLibrary();
            context.AddIoLibrary();

            parser = new LuaParser(context, "dofile.lua");
            parser.Parse();
        }
Exemple #5
0
        public void HelloWorldTest()
        {
            LuaParser parser;

            var context = new LuaContext();

            context.AddBasicLibrary();
            context.AddIoLibrary();

            parser = new LuaParser(context, "helloworld.lua");
            parser.Parse();
        }
Exemple #6
0
        public void FunctionScopesTest()
        {
            LuaParser parser;

            var context = new LuaContext();

            context.AddBasicLibrary();
            context.AddIoLibrary();

            parser = new LuaParser(context, "functionscopes.lua");
            parser.Parse();
        }
Exemple #7
0
        public void DoFileTest()
        {
            LuaParser parser;

            var context = new LuaContext();

            context.AddBasicLibrary();
            context.AddIoLibrary();

            parser = new LuaParser(context, "dofile.lua");
            parser.Parse();
        }
Exemple #8
0
        // Compiling.

        public static LuaPrototype Compile(TextWriter errorWriter, TextReader sourceReader, string sourceName)
        {
            // Parse the function.
            LuaAST LuaAST = LuaParser.Parse(errorWriter, sourceReader, sourceName);

            if (LuaAST == null)
            {
                return(null);
            }


            // Compile.
            BytecodeCompiler compiler  = new BytecodeCompiler(sourceName);
            LuaPrototype     prototype = compiler.BuildPrototype(LuaAST);

            return(prototype);
        }
Exemple #9
0
        public void MethodBinding()
        {
            LuaParser parser;

            var context = new LuaContext();
            context.AddBasicLibrary();
            context.AddIoLibrary();
            double res = 0;
            var func = (Func<double, double>)((a) =>
                {
                    res = a;
                    return a + 1;
                });
            context.SetGlobal("test", LuaObject.FromDelegate(func));
            parser = new LuaParser(context, new StringReader("test(123)"));
            parser.Parse();
            Assert.AreEqual(123.0,res);
        }
Exemple #10
0
        public void MethodBinding()
        {
            LuaParser parser;

            var context = new LuaContext();

            context.AddBasicLibrary();
            context.AddIoLibrary();
            double res  = 0;
            var    func = (Func <double, double>)((a) =>
            {
                res = a;
                return(a + 1);
            });

            context.SetGlobal("test", LuaObject.FromDelegate(func));
            parser = new LuaParser(context, new StringReader("test(123)"));
            parser.Parse();
            Assert.AreEqual(123.0, res);
        }
        public SavedVariable(string path)
        {
            var fields = path.Split(".");

            foreach (var field in fields)
            {
                _path.Add(field);
            }

            Name = _path[fields.Length - 1];

            var parser = LuaParser.Parse(File.ReadAllText(_filePath));

            foreach (var s in _path)
            {
                parser = parser.Field(s);
            }


            Fields = parser.GetList();
        }
Exemple #12
0
        private static LClosure Compile(string code)
        {
            var codeReader = new StringReader(code);
            var rawTokens  = new LuaRawTokenizer();
            var luaTokens  = new LuaTokenizer();

            rawTokens.Reset(codeReader);
            luaTokens.Reset(rawTokens);

            var parser  = new LuaParser();
            var builder = new SyntaxTreeBuilder();

            builder.Start();
            luaTokens.EnsureMoveNext();
            parser.Reset(luaTokens, builder);
            parser.Parse();

            var ast = builder.Finish();

            return(_fastLuaCodeGen.Compile(ast, _fastLuaEnv));
        }