public void buscarTipo(string cadena, Entorno entorno) { switch (cadena) { case "string": tipo = Simbolo.EnumTipo.cadena; break; case "integer": tipo = Simbolo.EnumTipo.entero; break; case "real": tipo = Simbolo.EnumTipo.real; break; case "boolean": tipo = Simbolo.EnumTipo.boleano; break; default: Simbolo sim = entorno.buscar(cadena); if (sim.tipo == Simbolo.EnumTipo.arreglo || sim.tipo == Simbolo.EnumTipo.objeto) { tipo = sim.tipo; break; } tipo = Simbolo.EnumTipo.error; break; } retorno.tipo = this.tipo; }
public SubPrograma(ParseTreeNode root, Entorno entorno) { this.root = root; parametrosValor = new Dictionary <string, Simbolo>(); parametrosVariable = new Dictionary <string, Simbolo>(); correlacionParametros = new Dictionary <string, string>(); retorno = new Simbolo(Simbolo.EnumTipo.nulo, ""); tipo = Simbolo.EnumTipo.nulo; this.entorno = entorno; ordenParametros = new ArrayList(); correlacionIndices = new Dictionary <string, int>(); }
public Objeto(Objeto objeto) { Simbolo sim; this.nombre = objeto.nombre; this.nombreTipo = objeto.nombreTipo; this.parametros = new Dictionary <string, Simbolo>(); foreach (KeyValuePair <string, Simbolo> parametro in objeto.parametros) { this.parametros.Add(parametro.Key, parametro.Value); } this.tipo = objeto.tipo; if (!(objeto.arreglo is null)) { this.arreglo = objeto.arreglo; } }
private static void ejecutarDeclaracion(ParseTreeNode raiz, Entorno ent) { ParseTreeNode[] hijos = raiz.ChildNodes.ToArray(); Simbolo.EnumTipo tipoVariable = obtenerTipo(hijos[0].ToString().Replace(" (Keyword)", "")); String id = hijos[1].Token.ValueString; if (hijos.Length > 2) { Expresion resultado = resolverExpresion(hijos[3], ent); if (tipoVariable != resultado.tipo) { Program.ventanaPrincipal.richConsola.AppendText("El tipo que se le quiere asignar a la variable '" + id + "' no es permitido. '" + tipoVariable + "' != '" + resultado.tipo + "'. Línea: " + (hijos[3].Token.Location.Line + 1) + " Columna: " + (hijos[3].Token.Location.Column + 1) + "\n"); return; } Simbolo nuevo = new Simbolo(tipoVariable, resultado.valor); ent.insertar(id, nuevo, hijos[1].Token.Location.Line + 1, hijos[1].Token.Location.Column + 1); } else { ent.insertar(id, new Simbolo(), hijos[1].Token.Location.Line + 1, hijos[1].Token.Location.Column + 1); } }
public Expresion(Simbolo.EnumTipo tipo, Object valor) { this.tipo = tipo; this.valor = valor; }
public Expresion(Simbolo.EnumTipo tipo, Object valor, String error) { this.tipo = tipo; this.valor = valor; this.error = error; }