예제 #1
0
        public string verificarIdentificadoresReservados(SymbolsTable table)
        {
            string resultado = "";

            foreach (Symbols simbolo in table.Simbolos)
            {
                if (this.lexicConfig.reservadas.Contains(simbolo.Id))
                {
                    resultado += "El identificador [" + simbolo.Id + "] esta utilizando una palabra reservada \r\n" +
                                 getErrorLine(simbolo.Tipo + " " + simbolo.Id + " " + simbolo.Operador + " " + simbolo.Dato,
                                              "Estas usando como nombre de variable una palabra que pertenece al lenguaje JAVA. Intenta cambiarla.");
                }
            }
            return(resultado);
        }
예제 #2
0
        public string verificarIdentificadores(SymbolsTable tabla)
        {
            var    listaIds  = new List <string>();
            string resultado = "";

            foreach (Symbols simbolo in tabla.Simbolos)
            {
                string id = simbolo.Id;
                if (!listaIds.Contains(id))
                {
                    listaIds.Add(id);
                }
                else
                {
                    resultado += "El identificador [" + id + "] esta repetido \r\n" +
                                 getErrorLine(simbolo.Tipo + " " + simbolo.Id + " " + simbolo.Operador + " " + simbolo.Dato,
                                              "Ops!. Parece que esta variable ya fue declarada Revisa tu código.");
                }
            }
            return(resultado);
        }
예제 #3
0
        public string verificarTipoDeDato(SymbolsTable tabla)
        {
            var    listaIds  = new List <string>();
            string resultado = "";

            #region vaTypes
            Boolean boolType;
            int     intType;
            float   floatType;
            long    longType;
            double  doubleType;
            #endregion

            foreach (Symbols simbolo in tabla.Simbolos)
            {
                switch (simbolo.Tipo.ToLower())
                {
                case "boolean":
                    if (!bool.TryParse(simbolo.Dato, out boolType))
                    {
                        resultado += "Incoherencia de valores en [" + simbolo.Id + "] ->" +
                                     " - No puedes asignar un valor <" + simbolo.Dato + "> a una variable de tipo Bool. \r\n" +
                                     getErrorLine(simbolo.Tipo + " " + simbolo.Id + " " + simbolo.Operador + " " + simbolo.Dato,
                                                  "Tienes una error aqui en el tipo de dato asignado al tipo boolean."
                                                  );
                    }
                    break;

                case "int":
                    if (!int.TryParse(simbolo.Dato, out intType))
                    {
                        resultado += "Incoherencia de valores en [" + simbolo.Id + "] \r\n" +
                                     " - No puedes asignar un valor <" + simbolo.Dato + "> a una variable de tipo int. \r\n"
                                     + getErrorLine(simbolo.Tipo + " " + simbolo.Id + " " + simbolo.Operador + " " + simbolo.Dato,
                                                    "Tienes una error aqui en el tipo de dato asignado al tipo int.");
                    }
                    break;

                case "float":
                    if (!float.TryParse(simbolo.Dato, out floatType))
                    {
                        resultado += "Incoherencia de valores en [" + simbolo.Id + "] \r\n" +
                                     " - No puedes asignar un valor <" + simbolo.Dato + "> a una variable de tipo float. \r\n"
                                     + getErrorLine(simbolo.Tipo + " " + simbolo.Id + " " + simbolo.Operador + " " + simbolo.Dato,
                                                    "Tienes una error aqui en el tipo de dato asignado al tipo float.");
                    }
                    break;

                case "long":
                    if (!long.TryParse(simbolo.Dato, out longType))
                    {
                        resultado += "Incoherencia de valores en [" + simbolo.Id + "] \r\n" +
                                     " - No puedes asignar un valor <" + simbolo.Dato + "> a una variable de tipo Long. \r\n"
                                     + getErrorLine(simbolo.Tipo + " " + simbolo.Id + " " + simbolo.Operador + " " + simbolo.Dato,
                                                    "Tienes una error aqui en el tipo de dato asignado al tipo long.");
                    }
                    break;

                case "double":
                    if (!double.TryParse(simbolo.Dato, out doubleType))
                    {
                        resultado += "Incoherencia de valores en [" + simbolo.Id + "] \r\n" +
                                     " - No puedes asignar un valor <" + simbolo.Dato + "> a una variable de tipo Double. \r\n"
                                     + getErrorLine(simbolo.Tipo + " " + simbolo.Id + " " + simbolo.Operador + " " + simbolo.Dato,
                                                    "Tienes una error aqui en el tipo de dato asignado al tipo double.");
                    }
                    break;

                default:
                    break;
                }
            }
            return(resultado);
        }