protected LuaFunction(ILuaFile luaFile, BinaryReader reader)
        {
            LuaFile = luaFile;
            Reader  = reader;

            Parse();
        }
        public Function GetDecompiledFile(ILuaFile luaFile)
        {
            var function = new Function(new SymbolTable(), luaFile);

            DecompileFunction(function, luaFile.MainFunction);

            return(function);
        }
示例#3
0
        public string Decompile(ILuaFile luaFile)
        {
            var function = new IR.Function();

            GenerateIRHKS(function, luaFile.MainFunction);

            return(function.ToString());
        }
示例#4
0
 public Function(SymbolTable symbolTable, ILuaFile luaFile)
 {
     SymbolTable  = symbolTable;
     LuaFile      = luaFile;
     Parameters   = new List <Identifier>();
     Closures     = new List <Function>();
     Instructions = new List <IInstruction>();
     Labels       = new Dictionary <uint, Label>();
 }
示例#5
0
        private static void ReadSplitFile <T>(bool hasNoKeyTable) where T : ITable
        {
            T                 luaTable     = default;
            ILuaFile <T>      luaFile      = (ILuaFile <T>)luaTable;
            ILuaSplitFile <T> luaSplitFile = (ILuaSplitFile <T>)luaTable;

            string[] arrayFullPath = Directory.GetFiles(luaSplitFile.GetFolderPath());
            if (arrayFullPath == null || arrayFullPath.Length == 0)
            {
                return;
            }
            List <T> list               = luaFile.GetModel();
            string   mainFileName       = luaSplitFile.GetMainFileName();
            string   childFileHeadStart = luaSplitFile.GetChildFileHeadStart();
            bool     isCheckMainFile    = false;

            for (int fileIndex = 0; fileIndex < arrayFullPath.Length; fileIndex++)
            {
                string fullPath = arrayFullPath[fileIndex];
                if (!isCheckMainFile && fullPath.Contains(mainFileName))
                {
                    isCheckMainFile = true;
                    continue;
                }
                if (fullPath.EndsWith(Config.MetaExtension))
                {
                    continue;
                }
                string luaText = File.ReadAllText(fullPath);
                if (hasNoKeyTable)
                {
                    WriteArrayKeyToFileString(ref luaText);
                }
                T table = ReadLuaSplitFileTable <T>(luaText, childFileHeadStart);
                list.Add(table);
            }
        }
 public LuaJitFunction(ILuaFile luaFile, BinaryReader reader) : base(luaFile, reader)
 {
 }
        public string Decompile(ILuaFile luaFile)
        {
            var function = GetDecompiledFile(luaFile);

            return(function.ToString());
        }
示例#8
0
 public HavokLuaFunctionT6(ILuaFile luaFile, BinaryReader reader) : base(luaFile, reader)
 {
 }
示例#9
0
 public Function(Function parent, SymbolTable symbolTable, ILuaFile luaFile) : this(symbolTable, luaFile)
 {
     Parent = parent;
 }