Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 public caso(expresion expresion, ambito ambito)
 {
     this.expresion = expresion;
     this.ambito    = ambito;
     this.fila      = fila;
     this.columna   = columna;
 }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
 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;
 }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 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;
 }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 public imprimir(expresion expresion)
 {
     this.expresion = expresion;
 }
Ejemplo n.º 11
0
 public sino_si(expresion expresion, ambito ambito)
 {
     this.expresion = expresion;
     this.ambito    = ambito;
 }
Ejemplo n.º 12
0
 public mientras(expresion expresion, ambito ambito)
 {
     this.expresion = expresion;
     this.ambito    = ambito;
 }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
 public repetir_hasta(expresion expresion, ambito ambito)
 {
     this.expresion = expresion;
     this.ambito    = ambito;
 }