public override void ValidaTipo(List <ElementoTS> tablaSimbolos, Queue <string> errores) { char tipodato2, tipodato3;//si el tipo dato es '\0' entonces no hay que validar que coincida derecha.Ambito = Ambito; derecha.TipoDato = TipoDato; derecha.ValidaTipo(tablaSimbolos, errores); tipodato3 = derecha.TipoDato; if (tipodato3 == 'e') { if (derecha.Token.Nombre != "Operacion" && derecha.Token.Nombre != "") { errores.Enqueue("La variable: " + derecha.Token.Lexema + " no ha sido declarada"); } } if (izquierda != null)//tiene izquierda { izquierda.Ambito = Ambito; izquierda.TipoDato = TipoDato; izquierda.ValidaTipo(tablaSimbolos, errores); tipodato2 = izquierda.TipoDato; if (tipodato2 == 'e') { if (izquierda.Token.Nombre != "Operacion" && derecha.Token.Nombre != "") { errores.Enqueue("La variable: " + izquierda.Token.Lexema + " no ha sido declarada"); } } if (tipodato2 == tipodato3 && tipodato2 != 'e') { if (Sig != null) { Sig.ValidaTipo(tablaSimbolos, errores); } } else { string der, izq; if (derecha.Token.Nombre != "Operacion" && derecha.Token.Nombre != "") { der = derecha.Token.Lexema; } else { der = "Operacion derecha"; } if (izquierda.Token.Nombre != "Operacion" && izquierda.Token.Nombre != "") { izq = izquierda.Token.Lexema; } else { izq = "Operacion izquieda"; } errores.Enqueue("Los tipos de datos entre " + izq + " y " + der + " son distintos"); tipodato3 = 'e'; } } TipoDato = tipodato3; }
public override void ValidaTipo(List <ElementoTS> tablaSimbolos, Queue <string> errores) { TipoDato = BuscarTablaSimbolos(tablaSimbolos, id.Token.Lexema, Ambito); char tipo1 = TipoDato; if (TipoDato == 'e') { errores.Enqueue("La variable " + id.Token.Lexema + " no ha sido declarada"); } if (expresion != null) { expresion.Ambito = Ambito; expresion.TipoDato = tipo1; expresion.ValidaTipo(tablaSimbolos, errores); } char tipo2 = expresion.TipoDato; if (tipo1 != tipo2) { errores.Enqueue("El tipo de dato de " + id.Token.Lexema + " en la funcion " + Ambito + " es diferente de la expresion."); } if (Sig != null) { Sig.Ambito = Ambito; Sig.ValidaTipo(tablaSimbolos, errores); } }
public virtual void ValidaTipo(List <ElementoTS> tablaSimbolos, Queue <string> errores) { if (Sig != null) { Sig.ValidaTipo(tablaSimbolos, errores); } if (Token != null) { if (Token.Nombre != "null") { if (EsInt(Token.Lexema)) { TipoDato = 'i'; } else if (EsFloat(Token.Lexema)) { TipoDato = 'f'; } else { TipoDato = BuscarTablaSimbolos(tablaSimbolos, Token.Lexema, Ambito); } } } }
public override void ValidaTipo(List <ElementoTS> tablaSimbolos, Queue <string> errores) { TipoDato = GetTipoDato(tipo); string nombre = id.Token.Lexema; if (BuscarTablaSimbolos(tablaSimbolos, nombre, Ambito) != 'e') { errores.Enqueue("La variable: " + nombre + " ya fue declarada"); } else { tablaSimbolos.Add(new ElementoTS(nombre, TipoDato, Ambito, "")); } CadenaParametros += tipo[0]; if (listaParam != null) { listaParam.Ambito = Ambito; listaParam.CadenaParametros = CadenaParametros; listaParam.ValidaTipo(tablaSimbolos, errores); CadenaParametros = listaParam.CadenaParametros; } if (Sig != null) { Sig.Ambito = Ambito; Sig.ValidaTipo(tablaSimbolos, errores); } }
public override void ValidaTipo(List <ElementoTS> tablaSimbolos, Queue <string> errores) { if (expresion != null) { expresion.Ambito = Ambito; expresion.ValidaTipo(tablaSimbolos, errores); } if (Bloque != null) { Bloque.Ambito = Ambito; Bloque.ValidaTipo(tablaSimbolos, errores); } if (Sig != null) { Sig.Ambito = Ambito; Sig.ValidaTipo(tablaSimbolos, errores); } }
public override void ValidaTipo(List <ElementoTS> tablaSimbolos, Queue <string> errores) { Nodo aux = argumentos; TipoDato = BuscarTablaSimbolos(tablaSimbolos, id.Token.Lexema); string cadenaParametros = ""; if (aux.Token != null) { while (aux != null) { if (aux.Token.Nombre != "null") { if (EsInt(aux.Token.Lexema)) { cadenaParametros += 'i'; } else if (EsFloat(aux.Token.Lexema)) { cadenaParametros += 'f'; } else { cadenaParametros += BuscarTablaSimbolos(tablaSimbolos, aux.Token.Lexema, Ambito); } } aux = aux.Sig; } } if (existefunc(tablaSimbolos, new ElementoTS(id.Token.Lexema, '\0', Ambito, cadenaParametros), errores)) { id.Ambito = Ambito; id.ValidaTipo(tablaSimbolos, errores); } if (Sig != null) { Sig.Ambito = Ambito; Sig.ValidaTipo(tablaSimbolos, errores); } }
public override void ValidaTipo(List <ElementoTS> tablaSimbolos, Queue <string> errores) { if (BuscarTablaSimbolos(tablaSimbolos, id.Token.Lexema, Ambito) != 'e') { errores.Enqueue("La variable: " + id.Token.Lexema + " en: " + Ambito + " ya esta declarada"); } else { tablaSimbolos.Add(new ElementoTS(id.Token.Lexema, TipoDato, Ambito, "")); } if (listavar != null) { listavar.Ambito = Ambito; listavar.TipoDato = TipoDato; listavar.ValidaTipo(tablaSimbolos, errores); } if (Sig != null) { Sig.Ambito = Ambito; Sig.ValidaTipo(tablaSimbolos, errores); } }
public override void ValidaTipo(List <ElementoTS> tablaSimbolos, Queue <string> errores) { TipoDato = GetTipoDato(tipo); char TipoDtemp = TipoDato; string nombre = id.Token.Lexema; Ambito = nombre; if (parametros != null) { parametros.Ambito = Ambito; parametros.ValidaTipo(tablaSimbolos, errores); CadenaParametros = parametros.CadenaParametros; } if (BuscarTablaSimbolos(tablaSimbolos, nombre, "global") != 'e') { errores.Enqueue(" La funcion: " + nombre + " ya existe."); } else { tablaSimbolos.Add(new ElementoTS(nombre, TipoDtemp, "global", CadenaParametros)); } CadenaParametros = ""; if (BloqFunc != null) { BloqFunc.Ambito = Ambito; BloqFunc.ValidaTipo(tablaSimbolos, errores); } Ambito = ""; if (Sig != null) { Sig.Ambito = Ambito; Sig.ValidaTipo(tablaSimbolos, errores); } }