// flanzani 8/11/2012 // IDC_APP_2 // Agregar funciones por defecto en el framework // Agregado de las funciones del framework para ser creadas en codigo pascal internal static string DefinirFuncionesFramework(Semantico.TablaDeSimbolos.TablaSimbolos tabla) { StringBuilder strBldr = new StringBuilder(); foreach (NodoTablaSimbolos item in tabla.ListaNodos.FindAll(x => x.EsDelFramework)) { strBldr.AppendLine(item.CodigoPascalParaElFramework); strBldr.AppendLine(); } return(strBldr.ToString()); }
internal static string DefinirVariablesAuxiliares(Semantico.TablaDeSimbolos.TablaSimbolos tablaSimbolos) { StringBuilder strBldr = new StringBuilder(); List <CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos> listaVars = tablaSimbolos.ObtenerAuxilairesParaCodIntermedio(); foreach (CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos item in listaVars) { switch (item.TipoDato) { case CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoDeDato.Texto: if (!item.EsConstante) { strBldr.AppendLine(string.Format("var {0} : string;", item.Nombre)); } break; case CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoDeDato.Numero: if (!item.EsConstante) { //strBldr.AppendLine(string.Format("var {0} : integer;", item.Nombre)); strBldr.AppendLine(string.Format("var {0} : real;", item.Nombre)); } break; case CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoDeDato.Booleano: if (!item.EsConstante) { strBldr.AppendLine(string.Format("var {0} : boolean;", item.Nombre)); } break; case CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoDeDato.Ninguno: break; default: break; } } return(strBldr.ToString()); }
internal static string InicializarVariablesProc(Semantico.TablaDeSimbolos.TablaSimbolos tablaSimbolos, string nombreProc) { return(InicializarVariables(tablaSimbolos, Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoContexto.Local, nombreProc)); }
private static string InicializarVariables(Semantico.TablaDeSimbolos.TablaSimbolos tablaSimbolos, Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoContexto cont, string nombreProc) { StringBuilder strBldr = new StringBuilder(); List <CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos> listaVars = tablaSimbolos.ObtenerVariablesDeclaradasEnProcedimiento(cont, nombreProc); foreach (CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos item in listaVars) { switch (item.TipoDato) { case CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoDeDato.Texto: if (item.EsArreglo) { for (double i = 1; i <= item.Valor; i++) { strBldr.AppendLine(string.Format("{0}[{1}] := '';", item.NombreParaCodigo, i)); } } else { if (!item.EsConstante) { strBldr.AppendLine(string.Format("{0} := '';", item.NombreParaCodigo)); } } break; case CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoDeDato.Numero: if (item.EsArreglo) { for (double i = 1; i <= item.Valor; i++) { strBldr.AppendLine(string.Format("{0}[{1}] := 0;", item.NombreParaCodigo, i)); } } else { if (!item.EsConstante) { strBldr.AppendLine(string.Format("{0} := 0;", item.NombreParaCodigo)); } } break; case CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoDeDato.Booleano: if (item.EsArreglo) { for (double i = 1; i <= item.Valor; i++) { strBldr.AppendLine(string.Format("{0}[{1}] := true;", item.NombreParaCodigo, i)); } } else { if (!item.EsConstante) { strBldr.AppendLine(string.Format("{0} := true;", item.NombreParaCodigo)); } } break; case CompiladorGargar.Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoDeDato.Ninguno: break; default: break; } } return(strBldr.ToString()); }
internal static string InicializarVariablesGlobales(Semantico.TablaDeSimbolos.TablaSimbolos tablaSimbolos) { return(InicializarVariables(tablaSimbolos, Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoContexto.Global, string.Empty)); }