public ClaseReturn(Stack <Nodo> pila) { pila.Pop(); //estado pila.Pop(); //; if (pila.Peek().Token.Nombre == "null") { pila.Pop(); expresion = null; } else { expresion = new Operacion(pila); //expresion } pila.Pop(); //estado pila.Pop(); //return }
public ClaseWhile(Stack <Nodo> pila) { pila.Pop();//estado if (pila.Peek().Token.Nombre == "null") { pila.Pop(); Bloque = null; } else { Bloque = pila.Pop(); } pila.Pop(); //estado pila.Pop(); //) expresion = new Operacion(pila); //Expresion pila.Pop(); //estado pila.Pop(); //( pila.Pop(); //estado _while = pila.Pop().Token.Lexema; //while }
public Nodo Transicion(Stack <Nodo> pila, int regla) { Nodo aux = new Nodo(new Token("null", "", 0)); if (regla == 0 || regla == 3 || regla == 4 || regla == 16 || regla == 17 || regla == 32 || regla == 36 || regla == 37) { pila.Pop(); //estado aux = pila.Pop(); //definiciones } else if (regla == 13 || regla == 27 || regla == 38) { pila.Pop(); //estado pila.Pop(); //{ pila.Pop(); //estado aux = pila.Pop(); //nodo pila.Pop(); //estado pila.Pop(); //} } else if (regla == 24) //sentencia -> llamadafunc ; { pila.Pop(); //estado pila.Pop(); //; pila.Pop(); //estado aux = pila.Pop(); //nodo } else if (regla == 26) //Otro -> else SentenciaBloque { pila.Pop(); //estado aux = pila.Pop(); //nodo pila.Pop(); //estado pila.Pop(); //else } else if (regla == 2) { aux = ReglasGeneran2(pila, reglas[regla].Y); } else if (regla == 5) { aux = new DefVar(pila); } else if (regla == 7) { aux = new ListaVar(pila); } else if (regla == 8) { aux = new DefFunc(pila); } else if (regla == 10) { aux = new Parametros(pila); } else if (regla == 12) { aux = new ListaParam(pila); } else if (regla == 15) { aux = ReglasGeneran2(pila, reglas[regla].Y); } else if (regla == 19) { aux = ReglasGeneran2(pila, reglas[regla].Y); } else if (regla == 20) { aux = new Asignacion(pila); } else if (regla == 21) { aux = new ClaseIf(pila); } else if (regla == 22) { aux = new ClaseWhile(pila); } else if (regla == 23) { aux = new ClaseReturn(pila); } else if (regla == 29) { aux = ReglasGeneran2(pila, reglas[regla].Y); } else if (regla == 31) { aux = ReglasGeneran2(pila, reglas[regla].Y); } else if (regla == 33) { aux = new Id(pila); } else if (regla == 34) { aux = new Constante(pila); } else if (regla == 35) { aux = new LlamadaFunc(pila); } else if (regla >= 39 && regla <= 42) { aux = new Operacion(pila); } return(aux); }