コード例 #1
0
        // HECHAS: 1,2,4,5,8,9,12,33,35,36,37,38
        // TODO:  6,7,10,11,13,14,15,16,17,18,19,20,21,22,23,24...32,34,40,41,42,43

        /** IMPLEMENTACION. Tenemos las reglas. pasamos los atributos como objetos y ya. POrque estamos pasando un obj y se pasan por def por referencia jeje.
         * Cuando tenemos un cuarteto :
         *
         */
        public string regla_1(Atributo P, Desplazamiento despl)
        {
            generadorDeCodigoObjeto.TamZonaEstatica = despl.Despl;
            generadorDeCodigoObjeto.ensamblate(P.Codigo);
            generadorDeCodigoObjeto.finaliza();
            return(generadorDeCodigoObjeto.EnsambladorFich);
        }
コード例 #2
0
        public void regla_45(Atributo V, Atributo ID, Atributo MASMAS, Desplazamiento despl, int size_int) // TODO: Revisar NO TESTEADA Y TENGO SUEÑO.
        {                                                                                                  //V->ID MASMAS
            //Crea un temporal
            V.Lexema = gesTS.crearNuevaTemporal(despl.Despl, V.Tipo.ToString());
            var aux1 = gesTS.buscarDesplazamientoTS(V.Lexema);

            V.TipoOperando = aux1.Item1;
            V.Operando     = aux1.Item2;
            despl.Despl   += size_int;
            despl.update();

            var aux = gesTS.buscarDesplazamientoTS(ID.Lexema);

            ID.TipoOperando = aux.Item1;
            ID.Operando     = aux.Item2;

            V.Codigo = new List <Cuarteto>();
            V.Codigo.Add(new Cuarteto(Operador.OP_ASIG, ID, null, V));

            // asignamos a V el valor del ID antes de incrementar.
            // generadorDeCodigoObjeto.codegen(Operador.OP_ASIG, ID, null, V);

            V.Codigo.Add(new Cuarteto(Operador.OP_POST_INC, null, null, ID));
            // ahora si incrementamos
            // generadorDeCodigoObjeto.codegen(Operador.OP_POST_INC,null,null,ID);
        }
コード例 #3
0
        public void regla_34(Atributo R, Atributo R1, Atributo U, Desplazamiento despl, int size_int)
        {
            //R->R IGUALIGUAL U
            //| R.cod = gen("if", R1.lugar, "=", U.lugar, "goto", R.siguiente) || gen(R.lugar, "=", "0") || gen(R.siguiente, ":") || gen(R.lugar, "=", "1")

            R.Lexema = gesTS.crearNuevaTemporal(despl.Despl, U.Tipo.ToString());
            var aux = gesTS.buscarDesplazamientoTS(R.Lexema);

            R.TipoOperando = aux.Item1;
            R.Operando     = aux.Item2;
            despl.Despl   += size_int;
            despl.update();

            R.Codigo = new List <Cuarteto>();

            R.Codigo.AddRange(R1.Codigo);
            R.Codigo.AddRange(U.Codigo);

            Atributo rSiguiente = new Atributo();

            rSiguiente.TipoOperando = TipoOperando.Etiqueta;
            rSiguiente.Operando     = "r_" + numEtiq + "_siguiente";
            numEtiq++;
            R.Codigo.Add(new Cuarteto(Operador.OP_ASIG, cero, null, R));
            R.Codigo.Add(new Cuarteto(Operador.OP_IF_N, R1, U, rSiguiente));
            R.Codigo.Add(new Cuarteto(Operador.OP_ASIG, uno, null, R));
            R.Codigo.Add(new Cuarteto(Operador.OP_ETIQ, null, null, rSiguiente));
        }
コード例 #4
0
        public void regla_32(Atributo E, Atributo E1, Atributo R, Desplazamiento despl, int size_int)
        {// E -> E1 && R
         /*| E.siguiente = nuevaEtiq()
          | E.cod = E1.cod ||gen(E.lugar, "=", "1")|| gen("if", E1.lugar, "=", 1, "goto", E.siguiente) || gen (E.lugar, "=", "0") ||
          | gen(E.siguiente, ":") || R.cod || gen("if", R.lugar, "=", 1, "goto", E.fin) || gen(E.lugar, "=", "0") ||
          | gen(E.fin, ":")  */

            // crear temp y confis.
            E.Lexema = gesTS.crearNuevaTemporal(despl.Despl, R.Tipo.ToString());
            var aux = gesTS.buscarDesplazamientoTS(E.Lexema);

            E.TipoOperando = aux.Item1;
            E.Operando     = aux.Item2;
            despl.Despl   += size_int;
            despl.update();
            // fin crear temp
            Atributo etiq_siguiente = nuevaEtiqueta("E_", "siguiente");
            Atributo etiq_fin       = nuevaEtiqueta("E_", "fin");

            E.Codigo = E1.Codigo;
            E.Codigo.Add(new Cuarteto(Operador.OP_ASIG, uno, null, E));
            E.Codigo.Add(new Cuarteto(Operador.OP_IF, E1, uno, etiq_siguiente));
            E.Codigo.Add(new Cuarteto(Operador.OP_ASIG, cero, null, E));
            E.Codigo.Add(new Cuarteto(Operador.OP_ETIQ, null, null, etiq_siguiente));
            E.Codigo.AddRange(R.Codigo);
            E.Codigo.Add(new Cuarteto(Operador.OP_IF, R, uno, etiq_fin));
            E.Codigo.Add(new Cuarteto(Operador.OP_ASIG, cero, null, E));
            E.Codigo.Add(new Cuarteto(Operador.OP_ETIQ, null, null, etiq_fin));
        }
コード例 #5
0
    public void getPos()
    {
        //Debug.Log(posX.text);
        des  = GameObject.FindObjectOfType <Desplazamiento>();
        move = GameObject.FindObjectOfType <MovimientoAnimado>();
        int x = int.Parse(posX.text);
        int y = int.Parse(posY.text);

        newPos.x = (float)-4.5 + x;
        newPos.z = y;
        move.MoveTowardsTarget(newPos);
        //des.setTargetPos(newPos);
        // return x;
    }
コード例 #6
0
        public void regla_36(Atributo U, Atributo U1, Atributo Suma, Atributo V, Desplazamiento despl, int size_int)
        {
            /*U->U Suma V
             | U.lugar = nuevoTemp()
             | U.cod = U1.cod || V.cod || gen(U.lugar, "=", U1.lugar, "+", V.lugar)*/

            U.Lexema = gesTS.crearNuevaTemporal(despl.Despl, U.Tipo.ToString());
            var aux = gesTS.buscarDesplazamientoTS(U.Lexema);

            U.TipoOperando = aux.Item1;
            U.Operando     = aux.Item2;
            despl.Despl   += size_int;
            despl.update();
            U.Codigo = U1.Codigo;
            U.Codigo.AddRange(V.Codigo);
            U.Codigo.Add(new Cuarteto(Operador.OP_PLUS, U1, V, U));
        }