public Nodo Instruccion(ParseTreeNode actual) { String toke = actual.Term.Name; switch (toke) { case "writeln": return(Main.Inst_Writeln(actual)); case "write": return(Main.Inst_Write(actual)); case "ifthen": return(Main.Inst_Ifthen(actual)); case "ifelse": return(Main.Instru_IfElse(actual)); case "caseof": return(Main.Case_OF(actual.ChildNodes[0])); case "whiledo": return(Main.While(actual)); case "repeat": return(Main.Repeat(actual)); case "no_for": return(Main.For(actual)); case "asignacion": return(Asignaciones.Tipo_asignacion(actual)); case "continue": return(Tranferencias.Sentencia_continue(actual)); case "break": return(Tranferencias.Sentencia_break(actual)); case "llamada_funciones": return(Main.LLamada_funcion(actual)); case "exit": return(Tranferencias.Sentencia_Exit(actual)); case "tabla_sym": return(Main.Instruccion_Graficar_ts(actual)); } return(null); }
public static Nodo For(ParseTreeNode entrada) { int linea = entrada.Span.Location.Line; int columna = entrada.Span.Location.Column; //captura de la expresion Asignacion1 asignacion = (Asignacion1)Asignaciones.Tipo_asignacion(entrada.ChildNodes[1]); //entrada.childNodes[1]; string token = entrada.ChildNodes[2].Term.Name.ToLower(); bool comportamiento = false; switch (token) { case "to": comportamiento = false; break; case "downto": comportamiento = true; break; } Nodo expresion = Expresion.Expresion.evaluar(entrada.ChildNodes[3]); token = entrada.ChildNodes[5].Term.Name; if (entrada.ChildNodes.Count == 6) { LinkedList <Nodo> temporal = new LinkedList <Nodo>(); temporal.AddLast(Main_If(entrada.ChildNodes[5].ChildNodes[0])); return(new For(linea, columna, asignacion, expresion, temporal, comportamiento)); } else if (entrada.ChildNodes.Count == 9) { LinkedList <Nodo> temporal; temporal = ListaMain_If(entrada.ChildNodes[6]); return(new For(linea, columna, asignacion, expresion, temporal, comportamiento)); } return(null); }
public static void Instruccion(ParseTreeNode actual, LinkedList <Nodo> lista) { String toke = actual.Term.Name; switch (toke) { case "writeln": lista.AddLast(Main.Inst_Writeln(actual)); break; case "write": lista.AddLast(Main.Inst_Write(actual)); break; case "ifthen": lista.AddLast(Main.Inst_Ifthen(actual)); break; case "ifelse": lista.AddLast(Main.Instru_IfElse(actual)); break; case "caseof": lista.AddLast(Main.Case_OF(actual.ChildNodes[0])); break; case "whiledo": lista.AddLast(Main.While(actual)); break; case "repeat": lista.AddLast(Main.Repeat(actual)); break; case "no_for": lista.AddLast(Main.For(actual)); break; case "asignacion": lista.AddLast(Asignaciones.Tipo_asignacion(actual)); break; case "continue": lista.AddLast(Tranferencias.Sentencia_continue(actual)); break; case "break": lista.AddLast(Tranferencias.Sentencia_break(actual)); break; case "llamada_funciones": lista.AddLast(Main.LLamada_funcion(actual)); break; case "exit": lista.AddLast(Tranferencias.Sentencia_Exit(actual)); break; case "tabla_sym": lista.AddLast(Main.Instruccion_Graficar_ts(actual)); break; case "sentencia_case": lista.AddLast(Main.Case_OF(actual)); break; case "sentencia_while": lista.AddLast(Main.While_If(actual)); break; case "sentencia_repeat": lista.AddLast(Main.Repeat(actual)); break; case "sentencia_for": lista.AddLast(Main.For_if(actual)); break; } }