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); // пуш значения из ячейки } }
private void Parsing(ArrayInitNode node, string methodName) { for (int i = 0; i < node.ChildCount; i++) { Parsing(node.GetChild(i) as dynamic, methodName); } }
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; }
private void Parsing(ArrayInitNode node) { Console.WriteLine("Check initialization array"); }