예제 #1
0
        private void Parsing(ArrayInitNode node, StringBuilder sb, ref int lineNum)
        {
            if (node.ChildCount > 2)
            {
                //PrintCommand(sb, "start array init", ref lineNum);

                Parsing(node.GetChild(0) as dynamic, sb, ref lineNum); // пуш массива

                Parsing(node.GetChild(1) as dynamic, sb, ref lineNum); // пуш индекса

                Parsing(node.GetChild(2) as dynamic, sb, ref lineNum); // пуш значения

                PrintCommand(sb, "stelem.i4", ref lineNum);

                //PrintCommand(sb, "end array init", ref lineNum);
            }
            else
            {
                Parsing(node.GetChild(0) as dynamic, sb, ref lineNum); // пуш массива

                Parsing(node.GetChild(1) as dynamic, sb, ref lineNum); // пуш индекса

                PrintCommand(sb, "ldelem.i4", ref lineNum);            // пуш значения из ячейки
            }
        }
예제 #2
0
 private void Parsing(ArrayInitNode node, string methodName)
 {
     for (int i = 0; i < node.ChildCount; i++)
     {
         Parsing(node.GetChild(i) as dynamic, methodName);
     }
 }
예제 #3
0
        private VarType GetArrayType(ArrayInitNode node, string methodName)
        {
            if (Context.IsContainsLocalVar(node.ID.GetChild(0).Text, methodName))
            {
                return Context.GetTypeLocalVar(node.ID.GetChild(0).Text, methodName);
            }
            else
            {
                Console.WriteLine("{0} не существует в текущем контексте. Строка {1}", node.ID.GetChild(0), node.Line);
            }

            return VarType.Undefined;

        }
예제 #4
0
 private void Parsing(ArrayInitNode node)
 {
     Console.WriteLine("Check initialization array");
 }