Esempio n. 1
0
        private List <int> PatchCode(List <int> bytecode, List <GPLCSource> patchList, List <Binding> bs)
        {
            int           i, offset, patch;
            List <string> errorLog = new List <string>();

            for (i = 7; i < patchList.Count; i = i + 2)
            {
                offset           = SafeArgumentHandler.RefToOffset(bs, patchList[i], 2, errorLog) + 1;
                patch            = SafeArgumentHandler.ReadLiteral(patchList[i + 1], errorLog, 2);
                bytecode[offset] = patch;
            }
            if (errorLog.Count > 0)
            {
                foreach (string error in errorLog)
                {
                    Console.Write(error);
                }
                Console.Write("\n\nCompilation aborted at data block patching stage.");
                Console.ReadLine();
                Environment.Exit(1);
            }
            return(bytecode);
        }
Esempio n. 2
0
        private List <int> TransformArguments(List <GPLCSource> source, List <Binding> bs, List <int> mode, List <string> errorLog, int i)
        {
            int        n;
            List <int> transformedArguments = new List <int>();

            i++;
            for (n = 0; n < mode.Count; n++)
            {
                if (mode[n] == 0)
                {
                    transformedArguments.Add(SafeArgumentHandler.RefToOffset(bs, source[i], 0, errorLog));
                }
                else if (mode[n] == 1)
                {
                    transformedArguments.Add(SafeArgumentHandler.RefToOffset(bs, source[i], 1, errorLog));
                }
                else
                {
                    transformedArguments.Add(SafeArgumentHandler.ReadLiteral(source[i], errorLog, 1));
                }
                i++;
            }
            return(transformedArguments);
        }