public elegir(expresion expresion, List <caso> lista_caso, caso defecto, ambito ambito) { this.expresion = expresion; this.lista_caso = lista_caso; this.defecto = defecto; this.ambito = ambito; }
public para(simbolo declara_asigna, expresion condicion, simbolo decre_aum, ambito ambito) { this.declara_asigna = declara_asigna; this.condicion = condicion; this.decre_aum = decre_aum; this.ambito = ambito; }
public caso(expresion expresion, ambito ambito) { this.expresion = expresion; this.ambito = ambito; this.fila = fila; this.columna = columna; }
public si(expresion expresion, ambito ambito, List <sino_si> lista_sino_si, sino sino) { this.expresion = expresion; this.ambito = ambito; this.lista_sino_si = lista_sino_si; this.sino = sino; }
public asignacion(llamadaObjeto objeto, expresion expresion, ambito ambito, int fila, int columna) { this.objeto = objeto; this.expresion = expresion; this.ambito = ambito; this.fila = fila; this.columna = columna; }
public ciclo_x(expresion expresion1, expresion expresion2, int fila, int columna, ambito ambito) { this.expresion1 = expresion1; this.expresion2 = expresion2; this.fila = fila; this.columna = columna; this.ambito = ambito; }
public String generar3D() { String codigo = ""; expresion expresion_llamada_objeto = new expresion(null, null, "LLAMADA_OBJETO", "LLAMADA_OBJETO", fila, fila, llamadaObjeto); expresion expresion_tipo = new expresion(expresion_llamada_objeto, null, tipo, tipo, fila, fila, null); codigo += expresion_tipo.resCondicion().codigo; return(codigo); }
public declaracion(String visibilidad, String tipo, String nombre, List <expresion> dimensiones, ambito ambito, int fila, int columna, expresion expresion) { this.visibilidad = visibilidad; this.tipo = tipo; this.nombre = nombre; this.dimensiones = dimensiones; this.ambito = ambito; this.fila = fila; this.columna = columna; this.expresion = expresion; }
public String generar3D() { String codigo = ""; String etq1 = memoria.getEtq(); String etqVerdadera = memoria.getEtq(); String etqFalsa = memoria.getEtq(); String etqSalida = memoria.getEtq(); expresion expresion_or = new expresion(expresion1, expresion2, "||", "||", fila, columna, null); expresion expresion_and = new expresion(expresion1, expresion2, "&&", "&&", fila, columna, null); cadena3D expresion3D_OR = expresion_or.resCondicion(); if (expresion3D_OR.tipo.Equals("BOOLEANO")) { codigo += "/*Inicio del ciclo X*/" + "\r\n"; codigo += etq1 + ":" + "\r\n"; codigo += expresion3D_OR.codigo; codigo += expresion3D_OR.etqVerdadera + ":" + "\r\n"; codigo += memoria.identar("goto " + etqVerdadera + ";\r\n"); codigo += expresion3D_OR.etqFalsa + ":" + "\r\n"; codigo += memoria.identar("goto " + etqSalida + ";\r\n"); codigo += etqVerdadera + ":" + "\r\n"; /*Se concatena las sentencias dentro del mientras*/ pasadas pasadas = new pasadas(ambito.tablaSimbolo); codigo += memoria.identar(pasadas.ejecutar()); /*Se concatena las sentencias dentro del mientras*/ cadena3D expresion3D_AND = expresion_and.resCondicion(); codigo += expresion3D_AND.codigo; codigo += expresion3D_AND.etqVerdadera + ":" + "\r\n"; codigo += memoria.identar("goto " + etqVerdadera + ";\r\n"); codigo += expresion3D_AND.etqFalsa + ":" + "\r\n"; codigo += memoria.identar("goto " + etqSalida + ";\r\n"); codigo += etqSalida + ":" + "\r\n"; codigo += "/*Fin del ciclo X*/" + "\r\n\n"; } else { memoria.addError("ERROR SEMANTICO ", "La condicion debe ser de tipo booleano", fila, columna); } //Goto etiqueta de retorno y salida codigo = memoria.reemplazar(codigo, "goto " + etqSalida + ";", "goto " + etq1 + ";"); //Goto etiqueta de retorno y salida return(codigo); }
public imprimir(expresion expresion) { this.expresion = expresion; }
public sino_si(expresion expresion, ambito ambito) { this.expresion = expresion; this.ambito = ambito; }
public mientras(expresion expresion, ambito ambito) { this.expresion = expresion; this.ambito = ambito; }
public String ejecutar() { String codigo = ""; for (int i = 0; i < tablaSimbolo.Count(); i++) { if (tablaSimbolo[i].rol.Equals("CLASE")) { clase clase = (clase)tablaSimbolo[i].valor; codigo += clase.generar3D(); } else if (tablaSimbolo[i].rol.Equals("DECLARACION")) { declaracion declaracion = (declaracion)tablaSimbolo[i].valor; codigo += declaracion.generar3D(); } else if (tablaSimbolo[i].rol.Equals("METODO")) { metodo metodo = (metodo)tablaSimbolo[i].valor; codigo += metodo.generar3D(); } else if (tablaSimbolo[i].rol.Equals("CONSTRUCTOR")) { metodo metodo = (metodo)tablaSimbolo[i].valor; codigo += metodo.generar3D(); } else if (tablaSimbolo[i].rol.Equals("MIENTRAS")) { mientras metodo = (mientras)tablaSimbolo[i].valor; codigo += metodo.generar3D(); } else if (tablaSimbolo[i].rol.Equals("ASIGNACION")) { asignacion asignacion = (asignacion)tablaSimbolo[i].valor; codigo += asignacion.generar3D(); } else if (tablaSimbolo[i].rol.Equals("HACER_MIENTRAS")) { hacer_mientras hacer_mientras = (hacer_mientras)tablaSimbolo[i].valor; codigo += hacer_mientras.generar3D(); } else if (tablaSimbolo[i].rol.Equals("REPETIR_HASTA")) { repetir_hasta repetir_hasta = (repetir_hasta)tablaSimbolo[i].valor; codigo += repetir_hasta.generar3D(); } else if (tablaSimbolo[i].rol.Equals("LOOP")) { loop loop = (loop)tablaSimbolo[i].valor; codigo += loop.generar3D(); } else if (tablaSimbolo[i].rol.Equals("IMPRIMIR")) { imprimir imprimir = (imprimir)tablaSimbolo[i].valor; codigo += imprimir.generar3D(); } else if (tablaSimbolo[i].rol.Equals("IMPRIMIR")) { imprimir imprimir = (imprimir)tablaSimbolo[i].valor; codigo += imprimir.generar3D(); } else if (tablaSimbolo[i].rol.Equals("PARA")) { para para = (para)tablaSimbolo[i].valor; codigo += para.generar3D(); } else if (tablaSimbolo[i].rol.Equals("ELEGIR")) { elegir elegir = (elegir)tablaSimbolo[i].valor; codigo += elegir.generar3D(); } else if (tablaSimbolo[i].rol.Equals("SI")) { si elegir = (si)tablaSimbolo[i].valor; codigo += elegir.generar3D(); } else if (tablaSimbolo[i].rol.Equals("CONTINUAR")) { codigo += "~CONTINUAR~" + "//Continuar \r\n\n"; } else if (tablaSimbolo[i].rol.Equals("SALIR")) { codigo += "~SALIR~" + "//Salir \r\n\n"; } else if (tablaSimbolo[i].rol.Equals("RETORNAR")) { expresion expresion = (expresion)tablaSimbolo[i].valor; cadena3D expresion3D = expresion.resCondicion(); codigo += "/*Inicio de retorno*/" + "\r\n"; codigo += expresion3D.codigo + "\r\n"; String temp = memoria.getTemp(); codigo += temp + "=P+1" + ";" + "\r\n"; codigo += "Stack[" + temp + "]=" + expresion3D.temporal + ";" + "\r\n"; codigo += "~RETORNAR~" + "//Retornar \r\n"; codigo += "/*Fin de retorno*/" + "\r\n\n"; } } return(codigo); }
public repetir_hasta(expresion expresion, ambito ambito) { this.expresion = expresion; this.ambito = ambito; }