// flanzani 8/11/2012 // IDC_APP_2 // Agregar funciones por defecto en el framework // Creacion de la libreria de funciones Normal private static void AgregarLibreriaNormal(TablaSimbolos tablaSimbolos) { string nombre; string nombreFunc; string codigo; List <FirmaProc> parametros; nombre = "EsPar"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionEsPar(nombreFunc); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Booleano, codigo, nombreFunc); nombre = "EsImpar"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionEsImpar(nombreFunc); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Booleano, codigo, nombreFunc); nombre = "Redondear"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionRedondearAEntero(nombreFunc); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); nombre = "Truncar"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionTruncar(nombreFunc); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); }
private void ReiniciarCompilador() { GlobalesCompilador.ReiniciarFilaYColumna(); GeneracionCodigoHelpers.ReiniciarValoresVariablesAleatorias(); analizadorSintactico.ReiniciarAnalizadorSintactico(); }
public static string DefinirFuncionesBasicas() { StringBuilder strBldr = new StringBuilder(); strBldr.AppendLine("function FrameworkProgramArProgramAr0000001EscribirBooleano( x : boolean) : string ;"); strBldr.AppendLine("VAR "); strBldr.AppendLine("retorno : string; "); strBldr.AppendLine("begin "); strBldr.AppendLine("if ( x ) then"); strBldr.AppendLine("begin "); strBldr.AppendLine("\tretorno := 'verdadero'; "); strBldr.AppendLine("end "); strBldr.AppendLine("else "); strBldr.AppendLine("begin "); strBldr.AppendLine("\tretorno := 'falso'; "); strBldr.AppendLine("end; "); strBldr.AppendLine("\tFrameworkProgramArProgramAr0000001EscribirBooleano := retorno; "); strBldr.AppendLine("end; "); strBldr.AppendLine(); strBldr.AppendLine("function FrameworkProgramArProgramAr0000001EscribirReal( x : real) : string ;"); strBldr.AppendLine("VAR "); strBldr.AppendLine("aux : string; "); strBldr.AppendLine("longitud : integer; "); strBldr.AppendLine("begin "); //strBldr.AppendLine("aux := FloatToStrF(x, ffFixed,45, 15);"); strBldr.AppendLine("aux := FormatFloat('#.###################################',x);"); strBldr.AppendLine("longitud := Length(aux);"); strBldr.AppendLine("while ((longitud > 0) and (aux[longitud] = '0')) do"); strBldr.AppendLine("begin "); strBldr.AppendLine("\tDelete(aux, longitud, 1);"); strBldr.AppendLine("\tlongitud := longitud - 1;"); strBldr.AppendLine("end; "); strBldr.AppendLine("longitud := Length(aux);"); strBldr.AppendLine("if (aux[longitud] = ',' ) then"); strBldr.AppendLine("begin "); strBldr.AppendLine("\tDelete(aux, longitud, 1);"); strBldr.AppendLine("end"); strBldr.AppendLine("else"); strBldr.AppendLine("begin"); strBldr.AppendLine("\tif (aux[longitud] = '.') then"); strBldr.AppendLine("\tbegin"); strBldr.AppendLine("\t\tDelete(aux, longitud, 1);"); strBldr.AppendLine("\tend;"); strBldr.AppendLine("end;"); strBldr.AppendLine("FrameworkProgramArProgramAr0000001EscribirReal := aux; "); strBldr.AppendLine("end; "); strBldr.AppendLine(); strBldr.AppendLine(GeneracionCodigoHelpers.DefinirConversionYChequeoIndiceArreglo()); return(strBldr.ToString()); }
// flanzani 8/11/2012 // IDC_APP_2 // Agregar funciones por defecto en el framework // Creacion de la libreria de funciones matematicas private static void AgregarLibreriaMatematica(TablaSimbolos tablaSimbolos) { string nombre; string nombreFunc; string codigo; List <FirmaProc> parametros; nombre = "Potencia"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); parametros.Add(new FirmaProc("exp", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionPotencia(nombreFunc); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); nombre = "Raiz"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); parametros.Add(new FirmaProc("exp", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionRaiz(nombreFunc); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); // flanzani 15/11/2012 // IDC_APP_6 // Agregar funciones matematicas al framework // Agrego la funcion a la libreria matematica nombre = "PI"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); codigo = GeneracionCodigoHelpers.ArmarFuncionPI(nombreFunc); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); // flanzani 15/11/2012 // IDC_APP_6 // Agregar funciones matematicas al framework // Agrego la funcion a la libreria matematica nombre = "ValAbs"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionValorAbsoluto(nombreFunc); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); // flanzani 15/11/2012 // IDC_APP_6 // Agregar funciones matematicas al framework // Agrego la funcion a la libreria matematica nombre = "Seno"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionSeno(nombreFunc, false); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); // flanzani 15/11/2012 // IDC_APP_6 // Agregar funciones matematicas al framework // Agrego la funcion a la libreria matematica nombre = "Coseno"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionCoseno(nombreFunc, false); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); // flanzani 15/11/2012 // IDC_APP_6 // Agregar funciones matematicas al framework // Agrego la funcion a la libreria matematica nombre = "Tangente"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionTangente(nombreFunc, false); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); // flanzani 15/11/2012 // IDC_APP_6 // Agregar funciones matematicas al framework // Agrego la funcion a la libreria matematica nombre = "rSeno"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionSeno(nombreFunc, true); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); // flanzani 15/11/2012 // IDC_APP_6 // Agregar funciones matematicas al framework // Agrego la funcion a la libreria matematica nombre = "rCoseno"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionCoseno(nombreFunc, true); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); // flanzani 15/11/2012 // IDC_APP_6 // Agregar funciones matematicas al framework // Agrego la funcion a la libreria matematica nombre = "rTangente"; nombreFunc = string.Format("FrameworkProgramArProgramAr0000001{0}", nombre); parametros = new List <FirmaProc>(); parametros.Add(new FirmaProc("num", NodoTablaSimbolos.TipoDeDato.Numero, false, false)); codigo = GeneracionCodigoHelpers.ArmarFuncionTangente(nombreFunc, true); tablaSimbolos.AgregarFuncionDelFramework(nombre, parametros, NodoTablaSimbolos.TipoDeDato.Numero, codigo, nombreFunc); }