Beispiel #1
0
        public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
        {
            this.TipoDato = hijoASintetizar.TipoDato;

            double valor;

            double.TryParse(hijoASintetizar.Lexema, NumberStyles.Number, new CultureInfo("en-US"), out valor);

            if (valor > GlobalesCompilador.MAX_VALOR_NUMERO || double.IsPositiveInfinity(valor))
            {
                throw new ErrorSemanticoException(new ErrorValorNumericoMuyGrande(GlobalesCompilador.MAX_VALOR_NUMERO));
            }
            else
            {
                if (valor < GlobalesCompilador.MIN_VALOR_NUMERO || double.IsNegativeInfinity(valor))
                {
                    throw new ErrorSemanticoException(new ErrorValorNumericoMuyChico(GlobalesCompilador.MIN_VALOR_NUMERO));
                }
                else
                {
                    this.ValorConstanteNumerica = valor;
                }
            }

            this.Lexema = hijoASintetizar.Lexema;
            this.Gargar = hijoASintetizar.Gargar;
            this.NoEsAptaPasajeReferencia = true;
        }
Beispiel #2
0
 public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
 {
     if (hijoASintetizar.ListaFirma != null)
     {
         this.ListaFirma.AddRange(hijoASintetizar.ListaFirma);
     }
 }
Beispiel #3
0
        public NodoF(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
            : base(nodoPadre, elem)
        {
            this.ListaFirma = new List <Firma>();

            EsFirma = true;
        }
Beispiel #4
0
        public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
        {
            this.Lexema   = hijoASintetizar.Lexema;
            this.TipoDato = hijoASintetizar.TipoDato;

            this.Gargar = hijoASintetizar.Gargar;
            this.NoEsAptaPasajeReferencia = true;
        }
Beispiel #5
0
 public NodoStart(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
     this.ContextoActual                 = NodoTablaSimbolos.TipoContexto.Global;
     this.NombreContextoLocal            = EnumUtils.stringValueOf(NodoTablaSimbolos.TipoContexto.Global);
     this.ProcPrincipalYaCreadoyCorrecto = false;
     this.ProcPrincipalCrearUnaVez       = true;
 }
        internal void ActualizarAtributos(NodoArbolSemantico nodo)
        {
            this.TablaSimbolos                  = nodo.TablaSimbolos;
            this.NombreContextoLocal            = nodo.NombreContextoLocal;
            this.ProcPrincipalYaCreadoyCorrecto = nodo.ProcPrincipalYaCreadoyCorrecto;
            this.ProcPrincipalCrearUnaVez       = nodo.ProcPrincipalCrearUnaVez;

            int i = this.hijosNodo.IndexOf(nodo);

            this.atributosCalculados[i] = true;

            this.hijosNodo[i] = nodo;
        }
Beispiel #7
0
        public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
        {
            this.Lexema = hijoASintetizar.Lexema;

            this.TipoDato = hijoASintetizar.TipoDato;

            this.Gargar = hijoASintetizar.Gargar;
            this.NoEsAptaPasajeReferencia = true;

            if (Lexema.Length > GlobalesCompilador.MAX_LONG_CADENA)
            {
                throw new ErrorSemanticoException(new ErrorCantMaxCaracteresEnCadenaTexto(GlobalesCompilador.MAX_LONG_CADENA));
            }
        }
        public NodoArbolSemantico(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
        {
            this.elemento  = elem;
            this.padreNodo = nodoPadre;
            this.hijosNodo = new List <NodoArbolSemantico>();


            inicializado = false;

            //Sintetizados
            this.TipoDato    = NodoTablaSimbolos.TipoDeDato.Ninguno;
            this.Comparacion = TipoComparacion.None;

            this.EsFuncion = false;
            this.EsArreglo = false;
            this.Operacion = TipoOperatoria.Ninguna;
            this.Codigo    = string.Empty;

            this.EsArregloEnParametro = false;

            this.ValorConstanteNumerica = double.MinValue;

            this.ListaElementosVisualizar = new List <string>();

            this.LlamaProcs           = false;
            this.ModificaParametros   = false;
            this.TieneLecturas        = false;
            this.AsignaParametros     = false;
            this.UsaVariablesGlobales = false;

            //Heredados
            this.DeclaracionesPermitidas = TipoDeclaracionesPermitidas.Ninguno;
            this.EsFirma = false;
            this.EsPasajeParametrosAProcOFunc = false;

            if (nodoPadre != null)
            {
                this.EsConstante                    = nodoPadre.EsConstante;
                this.ContextoActual                 = nodoPadre.ContextoActual;
                this.TablaSimbolos                  = nodoPadre.TablaSimbolos;
                this.NombreContextoLocal            = nodoPadre.NombreContextoLocal;
                this.ProcPrincipalYaCreadoyCorrecto = nodoPadre.ProcPrincipalYaCreadoyCorrecto;
                this.ProcPrincipalCrearUnaVez       = nodoPadre.ProcPrincipalCrearUnaVez;
                this.DeclaracionesPermitidas        = nodoPadre.DeclaracionesPermitidas;
                this.EsPasajeParametrosAProcOFunc   = nodoPadre.EsPasajeParametrosAProcOFunc;
            }
        }
        public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
        {
            this.TipoDato = hijoASintetizar.TipoDato;
            switch (hijoASintetizar.Lexema)
            {
            case "*":
                this.Operacion = TipoOperatoria.Multiplicacion;
                break;

            case "/":
                this.Operacion = TipoOperatoria.Division;
                break;
            }

            this.NoEsAptaPasajeReferencia = true;
            this.Gargar = hijoASintetizar.Gargar;
        }
Beispiel #10
0
        public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
        {
            this.TipoDato = hijoASintetizar.TipoDato;
            switch (hijoASintetizar.Lexema)
            {
            case "+":
            case "++":
                this.Operacion = TipoOperatoria.Suma;
                break;

            case "-":
            case "--":
                this.Operacion = TipoOperatoria.Resta;
                break;

            case "&":
                this.Operacion = TipoOperatoria.Concatenacion;
                break;
            }

            this.NoEsAptaPasajeReferencia = true;
            this.Gargar = hijoASintetizar.Gargar;
        }
Beispiel #11
0
 public NodoExprBooleanas(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
 }
Beispiel #12
0
 public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
 {
     //Falta hacer cosas con los arreglos aca.
     this.VariablesACrear.AddRange(hijoASintetizar.VariablesACrear);
 }
Beispiel #13
0
 public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
 {
     this.TipoDato = hijoASintetizar.TipoDato;
 }
 public NodoIdAsignacion(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
 }
 public NodoTerminal(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
     inicializado = true;
 }
 public NodoConstantes(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
     this.EsConstante             = true;
     this.DeclaracionesPermitidas = TipoDeclaracionesPermitidas.Constantes;
 }
 public NodoOpMultDiv(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
 }
 public virtual void HeredarAtributosANodo(NodoArbolSemantico hijoAHeredar)
 {
 }
 public NodoBloqueMientras(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
 }
 public virtual void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
 {
 }
 public override void SintetizarAtributosANodo(NodoArbolSemantico nodoArbolSemantico)
 {
 }
Beispiel #22
0
 public override void HeredarAtributosANodo(NodoArbolSemantico hijoAHeredar)
 {
     hijoAHeredar.ProcPrincipalYaCreadoyCorrecto = this.ProcPrincipalYaCreadoyCorrecto;
     hijoAHeredar.ProcPrincipalCrearUnaVez       = this.ProcPrincipalCrearUnaVez;
 }
Beispiel #23
0
 public NodoTipoDatoConArreglo(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
 }
Beispiel #24
0
 public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
 {
     this.ProcPrincipalYaCreadoyCorrecto = hijoASintetizar.ProcPrincipalYaCreadoyCorrecto;
     this.ProcPrincipalCrearUnaVez       = hijoASintetizar.ProcPrincipalCrearUnaVez;
 }
Beispiel #25
0
 public NodoIdent(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
     this.VariablesACrear = new  List <Variable>();
 }
Beispiel #26
0
 public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
 {
     this.Lexema = hijoASintetizar.Lexema;
     this.NombreContextoLocal = hijoASintetizar.Lexema;
 }
 public NodoDeclaraciones(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
 }
 public NodoValorConst(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
 }
Beispiel #29
0
 public NodoLinea(NodoArbolSemantico nodoPadre, ElementoGramatica elem)
     : base(nodoPadre, elem)
 {
 }
 public override void SintetizarAtributosANodo(NodoArbolSemantico hijoASintetizar)
 {
     this.TipoDato = hijoASintetizar.TipoDato;
     this.ValorConstanteNumerica = hijoASintetizar.ValorConstanteNumerica;
     this.ValorConstanteTexto    = hijoASintetizar.Lexema;
 }