public Termino(Pila p, LlamadaFunc ll) { p.pop(); p.pop(); llamada = ll; }
public Definicion(Pila p, DefFunc f) { p.pop(); p.pop(); funciones = f; }
public DefLocal(Pila p, DefVar v) { p.pop(); p.pop(); variables = v; }
public Sentencia(Pila p, Expresion l) { exp = l; p.pop(); id = ((Terminal)p.pop()).simbolo; }
public DefLocal(Pila p, Sentencia s) { p.pop(); p.pop(); sent = s; }
public Parametros(Pila p) { p.pop(); //estado id = ((Terminal)p.pop()).simbolo; p.pop(); // estado tipo = ((Terminal)p.pop()).simbolo; }
public Definicion(Pila p, DefVar v) { p.pop(); p.pop(); variables = v; }
public Definiciones(Pila p, Definicion d) { p.pop(); p.pop(); p.pop(); p.pop(); definicion = d; }
public Programa(Pila p, List <Definiciones> d) { p.pop(); p.pop(); def = new List <Definiciones>(); for (int i = 0; i < d.Count; i++) { def.Add(d[i]); } }
public DefLocales(Pila p, List <DefLocal> d) { p.pop(); p.pop(); p.pop(); p.pop(); dlocal = new List <DefLocal>(); for (int i = 0; i < d.Count; i++) { dlocal.Add(d[i]); } }
public DefVar(Pila p) { p.pop(); p.pop(); p.pop(); listaVar = ((NoTerminal)p.pop()).nodo; p.pop(); id = ((Terminal)p.pop()).simbolo; p.pop(); tipo = ((Terminal)p.pop()).simbolo; }
public LlamadaFunc(Pila p, Argumentos a) { p.pop(); p.pop(); p.pop(); p.pop(); p.pop(); p.pop(); p.pop(); id = ((Terminal)p.pop()).simbolo; args = a; }
public BloqFunc(Pila p, DefLocales d) { p.pop(); p.pop(); p.pop(); p.pop(); p.pop(); p.pop(); dlocales = d; }
public Expresion(Pila p, List <Expresion> l) { p.pop(); expresion = ((NoTerminal)p.pop()).nodo; p.pop(); p.pop(); p.pop(); expresion = ((NoTerminal)p.pop()).nodo; exp = new List <Expresion>(); for (int i = 0; i < l.Count; i++) { exp.Add(l[i]); } }
public void arbolSintactico(String regla, String simb) { Termino nuevoTermino; switch (regla) { case "R1": Programa prog = new Programa(pila, listaDefiniciones); prog.muestra(arbolSint); break; case "R30": pila.pop(); pila.pop(); break; case "R3": Definiciones nuevaDef = new Definiciones(pila, listaDefinicion.Last <Definicion>()); listaDefiniciones.Add(nuevaDef); Definicion auxDef = listaDefinicion.Last <Definicion>(); listaDefinicion.Remove(auxDef); break; case "R4": Definicion defVariable = new Definicion(pila, listaVariables.Last <DefVar>()); listaDefinicion.Add(defVariable); break; case "R5": Definicion def = new Definicion(pila, listaFunciones.Last <DefFunc>()); listaDefinicion.Add(def); break; case "R6": DefVar arbol = new DefVar(pila); listaVariables.Add(arbol); break; case "R9": DefFunc nuevaFuncion = new DefFunc(pila, listaParam, bloqFuncs.Last <BloqFunc>()); listaFunciones.Add(nuevaFuncion); listaParam = new List <Parametros>(); listaExpresion = new List <Expresion>(); listaExpresiones = new List <Expresion>(); listaDefLocal = new List <DefLocal>(); listaDefLocales = new List <DefLocales>(); break; case "R10": listaParam.Add(null); break; case "R11": pila.pop(); pila.pop(); Parametros nuevoParametro = new Parametros(pila); listaParam.Add(nuevoParametro); break; case "R12": break; case "R13": pila.pop(); pila.pop(); Parametros nuevoParametros = new Parametros(pila); listaParam.Add(nuevoParametros); pila.pop(); pila.pop(); break; case "R14": BloqFunc bFunc = new BloqFunc(pila, listaDefLocales.Last <DefLocales>()); bloqFuncs.Add(bFunc); break; case "R16": DefLocales locales = new DefLocales(pila, listaDefLocal); listaDefLocales.Add(locales); break; case "R17": DefLocal nuevaVar = new DefLocal(pila, listaVariables.Last <DefVar>()); listaDefLocal.Add(nuevaVar); break; case "R18": DefLocal defSentencia = new DefLocal(pila, listaSentencias.Last <Sentencia>()); listaDefLocal.Add(defSentencia); break; case "R20": pila.pop(); pila.pop(); pila.pop(); pila.pop(); break; case "R21": Expresion aux; pila.pop(); pila.pop(); pila.pop(); pila.pop(); pila.pop(); pila.pop(); if (listaExpresion.Count > 0) { Sentencia nuevaSentencia = new Sentencia(pila, listaExpresion.Last <Expresion>()); listaSentencias.Add(nuevaSentencia); if (nuevaSentencia.validar(listaVariables) == false) { agregarErrorSemantico("R21", nuevaSentencia.id); } aux = listaExpresion.Last <Expresion>(); listaExpresion.Remove(aux); } else { Sentencia nuevaSentencia = new Sentencia(pila, listaExpresiones.Last <Expresion>()); listaSentencias.Add(nuevaSentencia); } break; case "R23": for (int i = 0; i < 10; i++) { pila.pop(); } break; case "R24": pila.pop(); pila.pop(); pila.pop(); pila.pop(); Sentencia sentReturn = new Sentencia(pila, listaExpresion.Last <Expresion>()); listaSentencias.Add(sentReturn); aux = listaExpresion.Last <Expresion>(); listaExpresion.Remove(aux); break; case "R28": pila.pop(); pila.pop(); pila.pop(); pila.pop(); pila.pop(); pila.pop(); break; case "R32": pila.pop(); pila.pop(); pila.pop(); pila.pop(); listaArgumentos.Add(listaExpresiones[listaExpresiones.Count - 2]); break; case "R34": pila.pop(); pila.pop(); pila.pop(); pila.pop(); pila.pop(); pila.pop(); listaArgumentos.Add(listaExpresiones.Last <Expresion>()); break; case "R35": Termino nuevoTermFunc = new Termino(pila, listaLlamadaFunc.Last <LlamadaFunc>()); listaTerminos.Add(nuevoTermFunc); break; case "R36": case "R37": case "R38": nuevoTermino = new Termino(pila); listaTerminos.Add(nuevoTermino); break; case "R40": Argumentos args = new Argumentos(listaArgumentos); LlamadaFunc llamadaFunc = new LlamadaFunc(pila, args); if (llamadaFunc.comparar(listaFunciones) == false) { agregarErrorSemantico("R40", llamadaFunc.id); } listaLlamadaFunc.Add(llamadaFunc); break; case "R47": Expresion nuevaExpresion = new Expresion(pila, listaExpresiones); listaExpresion.Add(nuevaExpresion); break; case "R48": pila.pop(); pila.pop(); pila.pop(); pila.pop(); pila.pop(); pila.pop(); break; case "R52": Expresion nuevaExp = new Expresion(pila, listaTerminos.Last <Termino>()); listaExpresiones.Add(nuevaExp); break; default: break; } }
public Expresion(Pila p, Termino t) { p.pop(); expresion = ((NoTerminal)p.pop()).nodo; termino = t; }
public Termino(Pila p) { p.pop(); //estado id = ((Terminal)p.pop()).simbolo; }
public DefFunc(Pila p, List <Parametros> l, BloqFunc f) { bloqFunc = f; if (l == null) { p.pop(); p.pop(); p.pop(); p.pop(); p.pop(); p.pop(); //Parametros p.pop(); p.pop(); p.pop(); id = ((Terminal)p.pop()).simbolo; p.pop(); tipo = ((Terminal)p.pop()).simbolo; } else { param = new List <Parametros>(); for (int i = 0; i < l.Count; i++) { param.Add(l[i]); } p.pop(); p.pop(); p.pop(); p.pop(); p.pop(); p.pop(); //Parametros p.pop(); p.pop(); p.pop(); id = ((Terminal)p.pop()).simbolo; p.pop(); tipo = ((Terminal)p.pop()).simbolo; } }