예제 #1
0
        /*public opModelo(nodoModelo hijo11, nodoModelo hijo21, tablaSimbolos tabla)
         * {
         *  this.hijo11 = hijo11;
         *  this.hijo21 = hijo21;
         *  this.tabla = tabla;
         * }*/

        public opModelo(nodoModelo hijo1, nodoModelo hijo2, tablaSimbolos tabla, token signo)
        {
            this.hijo1 = (_E)hijo1;
            this.hijo2 = (_E)hijo2;
            this.tabla = tabla;
            this.signo = signo;
        }
예제 #2
0
        public objetoClase este; //sirve para guardar el puntero de la misma clase

        public elementoEntorno(elementoEntorno anterior, tablaSimbolos tabla, String nombre, objetoClase este)
        {
            this.este     = este;
            this.nombre   = nombre;
            this.tabla    = tabla;
            this.anterior = anterior;
            lstEntorno    = new Dictionary <string, itemEntorno>();
        }
예제 #3
0
 public void elementoPolimorfo3(tablaSimbolos tabla)
 {
     this.tablaSimbolos = tabla;
     this.tipo          = new token();
     this.lstParametros = new Dictionary <llaveParametro, elementoParametro>();
     this.retorno       = new object();
     this.LST_CUERPO    = new nodoModelo("", tabla);
     this.nombre        = new token();
     this.visibilidad   = new token("publico");
 }
예제 #4
0
 public elementoPolimorfo(token visibilidad, tablaSimbolos tabla, token tipo, token nombre, nodoModelo LST_CUERPO, int dimension)
 {
     this.dimension     = dimension;
     this.tablaSimbolos = tabla;
     this.tipo          = tipo;
     this.nombre        = nombre;
     this.lstParametros = new Dictionary <llaveParametro, elementoParametro>();
     this.retorno       = new object();
     this.LST_CUERPO    = LST_CUERPO;
     this.visibilidad   = visibilidad;
 }
예제 #5
0
        private void crearArbol(nodoModelo padre, ParseTreeNode nodoIrony, tablaSimbolos tabla)
        {
            nodoModelo hijoNodo = null;

            if (nodoIrony.ChildNodes.Count == 0)
            {
                if (nodoIrony.Token == null)
                {
                    //no terminal sin hijos
                    //Console.WriteLine("NoTerminal->" + nodoIrony.ToString());
                    // grafo += nodoIrony.GetHashCode() + "[label=\"" + nodoIrony.ToString() + "\"];\n";
                    hijoNodo = getNodo(nodoIrony.ToString(), tabla);
                    padre.insertar(hijoNodo);
                }
                else
                {
                    String terminal       = escapar(nodoIrony.Token.Value.ToString());
                    String nombreTerminal = nodoIrony.Term.Name;
                    token  tok            = new token(terminal, nodoIrony.Token.Location.Line, nodoIrony.Token.Location.Column, nombreArchivo);

                    //Console.WriteLine("[generarArbol]crearArbol:"+nodoIrony.Term.ToString());
                    padre.lstAtributos.insertar(nombreTerminal, tok);

                    //Console.WriteLine("terminal->" + terminal);
                    //grafo += nodoIrony.GetHashCode() + "[label=\"" + terminal + "\"];\n";
                }
            }
            else
            {
                hijoNodo = getNodo(nodoIrony.ToString(), tabla);
                //Console.WriteLine("insertando| " + padre.nombre + "->" + hijoNodo.nombre);
                padre.insertar(hijoNodo);
                //grafo += nodoIrony.GetHashCode() + "[label=\"" + nodoIrony + "\"];\n";
            }


            foreach (ParseTreeNode hijo in nodoIrony.ChildNodes)
            {
                crearArbol(hijoNodo, hijo, tabla);

                //grafo += nodoIrony.GetHashCode() + "->" + hijo.GetHashCode() + ";\n";
            }

            return;
        }
예제 #6
0
        /*
         |--------------------------------------------------------------------------
         | Constructor
         |--------------------------------------------------------------------------
         |
         */

        public elementoClase(token nombre, token visibilidad, token extender, List <nodoModelo> lstHijos, tablaSimbolos tabla)
        {
            this.tablaErrores = tabla;
            this.lstHijos     = lstHijos;
            this.nombreClase  = nombre;
            this.visibilidad  = visibilidad;
            this.extender     = extender;



            this.lstPrincipal      = new lstPrincipal(this.tablaErrores, "principales");
            this.lstMetodo_funcion = new lstMetodo_funcion(this.tablaErrores, "metodos_funciones");
            this.lstConstructores  = new lstConstructores(this.tablaErrores, "constructores");
            //this.lstSobrescritura = new lstPolimorfismo(this.tablaErrores, "sobrescritura");
            this.lstVariablesGlobales      = new lstVariablesGlobales(this.tablaErrores, "var_globales");
            this.lstConstructoresHeredados = new lstConstructores(this.tablaErrores, "constructores_heredados");
            this.lstFormularios            = new lstMetodo_funcion(this.tablaErrores, "formulario");
        }
예제 #7
0
 public lstConstructores(tablaSimbolos tabla, string nombre) : base(tabla, nombre)
 {
 }
예제 #8
0
 public _CP_CLASE(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #9
0
 public _USAR_VARIABLE(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #10
0
 public _SOBRESCRITURA(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #11
0
 public _CONSTRUCTOR(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
 public _DECLARAR_VARIABLE_SINVISIBI(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #13
0
 public _METODO(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #14
0
 public _SUPER(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #15
0
 public _TO_FECHA(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #16
0
 public lstMetodo_funcion(tablaSimbolos tabla, string nombre) : base(tabla, nombre)
 {
 }
예제 #17
0
 public _LST_CORCHETES(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #18
0
 public _ASIG_VALOR(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #19
0
 public _IMAGEN(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #20
0
 public IgualQue(nodoModelo hijo1, nodoModelo hijo2, tablaSimbolos tabla, token signo) : base(hijo1, hijo2, tabla, signo)
 {
 }
예제 #21
0
 public _WHILE(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #22
0
 public _CUERPO(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #23
0
        // public String rutaDeLaCarpeta = "";


        public arbol(FastColoredTextBox cuadro)
        {
            tablaDeSimbolos = new tablaSimbolos(cuadro);
            //tablaDeSimbolos.setRutaProyecto("ruta prueba prro");
            raizArbol = new nodoModelo("raiz", tablaDeSimbolos);
        }
예제 #24
0
 public _LST_LLAVES_VAL(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
 public _DECLARAR_VARIABLE_GLOBAL(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #26
0
        /*
         * public itemEntorno(tablaSimbolos tabla)
         * {
         *  this.tipo = new token("nulo");
         *  this.nombre = new token("--");
         *  this.valor = new itemValor();
         *  valor.setTypeNulo();
         *  this.visibilidad = new token("privado");
         *  this.dimension = 0;
         *  this.tabla = tabla;
         * }*/

        public itemEntorno(token nombre, token tipo, itemValor valor, token visibilidad, List <int> dimension, tablaSimbolos tabla)
        {
            //validando si lo que estoy esperando es un arreglo

            if (dimension.Count > 0)
            {
                if (dimension.Count == valor.dimensiones.Count)
                {
                    this.tipo   = tipo;
                    this.nombre = nombre;


                    //aqui tengo qee validar los objetos
                    this.valor = valor;
                    itemValor tempIt    = new itemValor();
                    String    tipoDato1 = tempIt.getTipoApartirDeString(tipo.valLower);

                    if (tipoDato1.Equals("objeto") != valor.isTypeNulo())
                    {
                        this.valor.setTypeObjeto(tipo.valLower);
                    }


                    this.visibilidad = visibilidad;
                    this.dimension   = valor.dimensiones; //asi ya tiene dimensiones definidas
                }
                else
                {
                    tabla.tablaErrores.insertErrorSemantic("Se esta recibiendo :" + valor.dimensiones.Count + " en la matriz : " + nombre.val + " de dimension:" + dimension.Count, nombre);
                }
            }
            else
            {
                this.tabla = tabla;

                if (valor.dimensiones.Count != 0)
                {
                    tabla.tablaErrores.insertErrorSemantic("Se está intentando guardar en la variable :" + nombre.val + " de tipo " + tipo.valLower + ", una matriz de dimension : " + valor.dimensiones.Count, nombre);
                }
                else if (sePuedeParsear(tipo.valLower, valor))
                {
                    this.tipo   = tipo;
                    this.nombre = nombre;


                    //guardar el valor parseado.

                    this.valor       = valor;
                    this.valor.valor = valor.getValorParseado(tipo.valLower);


                    itemValor tempIt    = new itemValor();
                    String    tipoDato1 = tempIt.getTipoApartirDeString(tipo.valLower);
                    if (tipoDato1.Equals("objeto") != valor.isTypeNulo())
                    {
                        this.valor.setTypeObjeto(tipo.valLower);
                    }



                    this.visibilidad = visibilidad;
                    this.dimension   = dimension;
                }
                else if (validandoTipo(tipo.valLower, valor))
                {
                    this.tipo   = tipo;
                    this.nombre = nombre;


                    //aqui tengo qee validar los objetos
                    this.valor = valor;
                    itemValor tempIt    = new itemValor();
                    String    tipoDato1 = tempIt.getTipoApartirDeString(tipo.valLower);
                    if (tipoDato1.Equals("objeto") != valor.isTypeNulo())
                    {
                        this.valor.setTypeObjeto(tipo.valLower);
                    }



                    this.visibilidad = visibilidad;
                    this.dimension   = dimension;
                }
                else
                {
                    tabla.tablaErrores.insertErrorSemantic("Se está intentando guardar en :" + nombre.val + " de tipo " + tipo.valLower + ", un valor de tipo " + valor.getTipo(), nombre);

                    //error semantico, se está intentando asiganar un valor diferente al declarado por la variable
                }
            }
        }
예제 #27
0
 public _COSENO(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #28
0
 public _POTENCIA(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #29
0
 public _HOY(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }
예제 #30
0
 public _POS_CAD(string nombre, tablaSimbolos tabla) : base(nombre, tabla)
 {
 }