Exemplo n.º 1
0
 public Parametros(Stack <Nodo> pila)
 {
     pila.Pop();//estado
     if (pila.Peek().Token.Nombre == "null")
     {
         pila.Pop();
         listaParam = null;
     }
     else
     {
         listaParam = (ListaParam)pila.Pop();//parametros
     }
     id = new Id(pila);
     pila.Pop();                     //estado
     tipo = pila.Pop().Token.Lexema; //tipo
 }
Exemplo n.º 2
0
        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);
        }