public static string escrbiriAtributosContenedor(string nombre, Simbolo nodo) { string result = ""; TeDeU type = nodo.obtenerInstanciaTipo(); if (Utilidades.esPrimitivo(type)) { return($"{nodo.obtenerValor().stringBonito()} "); } if (nodo.obtenerValor() is ZInstancia instancia) { result += escribirContenedor(instancia); return(result); } if (nodo.obtenerValor() is ZNull) { return($"{nodo.obtenerValor().stringBonito()}"); } return(result); }
public static bool esPrimitivo(TeDeU type) { return(type == TiposPrimitivos.tipoBool || type == TiposPrimitivos.tipoDate || type == TiposPrimitivos.tipoDicimal || type == TiposPrimitivos.tipoNumero || type == TiposPrimitivos.tipoString || type == TiposPrimitivos.tipoTime); }
public string writeParameters(NodoDeclararParametro parametro, bool primero, bool @in) { string result = ""; result += primero ? $"{tab}{tab}{tab}{tab}<\n" : $"{tab}{tab}{tab}{tab},<\n"; result += $"{tab}{tab}{tab}{tab}"; result += $"{co}NAME{co}={co}{parametro.Id}{co},\n"; result += $"{tab}{tab}{tab}{tab}"; TeDeU tipo = (TeDeU)parametro.Tipo.ejecutar(ambitoCaputrado); result += $"{co}TYPE{co}={co}{tipo.Nombre}{co},\n"; result += $"{tab}{tab}{tab}{tab}"; result += $"{co}AS{co}="; result += @in ? "IN": "OUT"; result += "\n"; result += $"{tab}{tab}{tab}{tab}>\n"; return(result); }
public override object ejecutarSinposicion(ZContenedor e) { TeDeU tipo = e.getTeDeU("int"); tipo.isCount = true; return(tipo); }
public override object ejecutarSinposicion(ZContenedor e) { TeDeU ti = (TeDeU)tipo.ejecutar(e); Funcion funcion = new Funcion(ti, parametros, lInsturcciones, e); e.declararFuncion(id, funcion); return(null); }
public override object ejecutarSinposicion(ZContenedor e) { TeDeU @struct = (TeDeU)tipo.ejecutar(e); ZTupla algo = (ZTupla)tupla.ejecutar(e); ZInstancia zinstancia = @struct.crearInstancia(e); @struct.asignarValores(algo.argumentos, zinstancia); return(zinstancia); }
public override object ejecutarSinposicion(ZContenedor e) { TeDeU nuevoTeDeU = new TeDeU(id); nuevoTeDeU.definirListaDeclaraciones(listaAtributos); e.setTeDeU(id, nuevoTeDeU); //se declara el TeDeU return(null); }
public override object ejecutarSinposicion(ZContenedor e) { TeDeU tipo = (TeDeU)this.tipo.ejecutar(e); Simbolo sim = new Simbolo(tipo, null); //se agrega el valor inicial Utilidades.AsignarValorInicial(sim); e.setVariable(id, sim); return(sim); }
public TeDeU obtenerTedeULista(TeDeU teDeUElementoLista) { var entryResult = entries.Find(entry => entry.Key == teDeUElementoLista); if (entryResult != null) { return(entryResult.Value); } var teDeULista = new TeDeULista($"list<{teDeUElementoLista.Nombre}>", teDeUElementoLista); entries.Add(new Entry(teDeUElementoLista, teDeULista)); return(teDeULista); }
public override object ejecutarSinposicion(ZContenedor e) { //obtener tipo TeDeU t = (TeDeU)tipo.ejecutar(e); foreach (NodoDeclararVar decV in declaraciones) { decV.definirTipo(t); decV.ejecutar(e); } //e.setVariable(id,new Simbolo(t, null)); return(null); }
public string writeObject(TeDeU tedeu, bool primero) { string result = ""; result += primero ? $"{tab}{tab}{tab}<\n" : $"{tab}{tab}{tab},<\n"; result += $"{tab}{tab}{tab}{tab}"; result += $"{co}CQL-TYPE{co}={co}OBJECT{co},\n"; result += $"{tab}{tab}{tab}{tab}"; result += $"{co}NAME{co}={co}{tedeu.Nombre}{co},\n"; result += $"{tab}{tab}{tab}{tab}"; result += $"{co}ATTRS{co}=[\n"; bool primeroAtr = true; foreach (NodoDeclararParametro nodo in tedeu.ListaDelcaraciones) { result += primeroAtr ? $"{tab}{tab}{tab}{tab}{tab}<\n" : $"{tab}{tab}{tab}{tab}{tab},<\n"; result += $"{tab}{tab}{tab}{tab}{tab}{tab}"; result += $"{co}NAME{co}={co}{nodo.Id}{co},\n"; result += $"{tab}{tab}{tab}{tab}{tab}{tab}"; TeDeU type = (TeDeU)nodo.Tipo.ejecutar(ambitoCaputrado); result += $"{co}TYPE{co}={co}{type.Nombre}{co}\n"; result += $"{tab}{tab}{tab}{tab}{tab}>\n"; primeroAtr = false; } result += $"{tab}{tab}{tab}{tab}]\n"; result += $"{tab}{tab}{tab}>\n"; return(result); }
public string writeAtributes(Simbolo simbolo) { string result = ""; TeDeU tipo = simbolo.obtenerInstanciaTipo(); if (Utilidades.esPrimitivo(tipo) || simbolo.obtenerValor() is ZNull) { return($"{simbolo.obtenerValor().stringBonito()}"); } if (simbolo.obtenerValor() is ZInstancia) { return("\n" + writeContainer(simbolo.obtenerValor(), true)); } throw new RuntimeBinderException("erro al escrbirir archivo chison, bd-atributos"); //return result; }
public string writeEncabezados(NodoDeclararEncabezados nodo, bool primero) { string result = ""; result += primero ? $"{tab}{tab}{tab}{tab}<\n" : $"{tab}{tab}{tab}{tab},<\n"; result += $"{tab}{tab}{tab}{tab}{tab}"; result += $"{co}NAME{co}={co}{nodo.Nombre}{co},\n"; result += $"{tab}{tab}{tab}{tab}{tab}"; TeDeU tipo = (TeDeU)nodo.Tipo.ejecutar(ambitoCaputrado); result += $"{co}TYPE{co}={co}{tipo.Nombre}{co},\n"; result += $"{tab}{tab}{tab}{tab}{tab}"; result += $"{co}PK{co}={co}TRUE{co}\n"; result += $"{tab}{tab}{tab}{tab}>\n"; return(result); }
public ZContenedor ladoDerechoCadena(string valor, TeDeU tipo) { if (tipo == TiposPrimitivos.tipoDate) { return(new ZDate(valor)); } if (tipo == TiposPrimitivos.tipoTime) { return(new ZTiempo(valor)); } if (tipo == TiposPrimitivos.tipoNumero) { try { return(new ZNumero(Convert.ToInt32(valor))); } catch (Exception e) { throw new SemanticError("no se puede convertir este valor a entero"); } } if (tipo == TiposPrimitivos.tipoDicimal) { try { return(new ZDecimal(Convert.ToDouble(valor))); } catch (Exception e) { throw new SemanticError("no se puede convertir este valor a decimal"); } } throw new SemanticError("se esta intentando castear un tipo a string no compatible"); }
public override object ejecutarSinposicion(ZContenedor e) { TeDeU tedeu = (TeDeU)tipo.ejecutar(e); Object algo = this.valor.ejecutar(e); ZContenedor valor = Utilidades.desenvolver(algo); //lado izquierdo cadena if (tedeu == TiposPrimitivos.tipoString) { return(casteoExplicitoCadnea(valor)); } //lado derecho cadena if (valor is ZCadena n1) { return(ladoDerechoCadena(n1.obtenerValor(), tedeu)); } throw new SemanticError("se esta intentando castear un tipo a string no compatible"); }
public ZNull(ZContenedor anterior, TeDeU origen) : base(anterior, origen) { }
public Entry(TeDeU key, TeDeU value) { Key = key; Value = value; }
public TeDeULista(string nombre, TeDeU tipoElemento) : base(nombre) { this.TipoElemento = tipoElemento; }
public override object ejecutarSinposicion(ZContenedor e) { TeDeU tedeu = e.getTeDeU(id); return(tedeu.crearInstancia(e)); }
public Simbolo(TeDeU instanciaTipo, ZContenedor valorInicial) { this.instanciaTipo = instanciaTipo; valor = valorInicial; }
public override object ejecutarSinposicion(ZContenedor e) { TeDeU t = e.getTeDeU(nombreTipo); //obtner tipo tdu //asignacion // return(t); }
public void definirTipo(TeDeU tipo) { this.tipo = tipo; }
public ZInstancia(ZContenedor anterior, TeDeU origen) : base(anterior, origen) { }