Exemplo n.º 1
0
        // 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());
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
 internal static string InicializarVariablesProc(Semantico.TablaDeSimbolos.TablaSimbolos tablaSimbolos, string nombreProc)
 {
     return(InicializarVariables(tablaSimbolos, Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoContexto.Local, nombreProc));
 }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 5
0
 internal static string InicializarVariablesGlobales(Semantico.TablaDeSimbolos.TablaSimbolos tablaSimbolos)
 {
     return(InicializarVariables(tablaSimbolos, Semantico.TablaDeSimbolos.NodoTablaSimbolos.TipoContexto.Global, string.Empty));
 }