Пример #1
0
        private static void Main(string[] args)
        {
//            var l=new List<int>();
//            l.Add(1);
//            l.Add(2);
//            l.Add(3);
//                l.Add(4);
//            l.Reverse(1,2);
//            l.ForEach(Console.WriteLine);

            if (args.Length <= 0)
            {
                return;
            }
            try
            {
                var fs   = File.OpenRead(args[0]);
                var data = new byte[fs.Length];
                fs.Read(data, 0, data.Length);

                var ls = new state.LuaState();
                ls.Register("print", print);
                ls.Register("getmetatable", getMetatable);
                ls.Register("setmetatable", setMetatable);
                ls.Load(ref data, "chunk", "b");
                ls.Call(0, 0);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            //            Console.ReadKey();
        }
Пример #2
0
        static void luaMain(Prototype proto)
        {
            var nRegs = proto.MaxStackSize;
            var ls    = new state.LuaState().New(nRegs + 8, proto);

            ls.SetTop(nRegs);
            for (;;)
            {
                var pc     = ls.PC();
                var inst   = new Instruction(ls.Fetch());
                var opCode = inst.Opcode();
//                var opMode = inst.OpMode();
                if (opCode != OpCodes.OP_RETURN)
                {
                    inst.Execute(ls);
                    Console.Write("[{0:D2}] {1}", pc + 1, inst.OpName());
                    printStack(ls);
                }
                else
                {
                    break;
                }
            }
        }