コード例 #1
0
 public Instruccion(string instruccion, int tiempo, Carita cara, bool estado)
 {
     this.Instrucciones = instruccion;
     this.Tiempo        = tiempo;
     this.Cara          = cara;
     this.Estado        = estado;
 }
コード例 #2
0
ファイル: Sintactico.cs プロジェクト: Gil0/LT_1
        public Respuesta analizarSintaxis(string Codigo)
        {
            Lexico    Analiza_Lexico = new Lexico();
            Respuesta respuesta      = new Respuesta();

            Analiza_Lexico.Inicia();
            Analiza_Lexico.Analiza(Codigo);
            List <Instruccion> listain = new List <Instruccion>();

            respuesta.listains = listain;

            if (Analiza_Lexico.NoTokens > 0)
            {
                if (Analiza_Lexico.Lexema[0] == "Programa")
                {
                    if (Analiza_Lexico.Token[1] == "id")
                    {
                        if (Analiza_Lexico.Lexema[2] == "Inicio")
                        {
                            int valido = 3;
                            for (int i = valido; i < Analiza_Lexico.NoTokens - 1; i++)
                            {
                                if (Analiza_Lexico.Token[i] == "PalabraReservada" && Analiza_Lexico.Lexema[i] != "Programa" && Analiza_Lexico.Lexema[i] != "Inicio" && Analiza_Lexico.Lexema[i] != "Fin")
                                {
                                    switch (Analiza_Lexico.Lexema[i])
                                    {
                                    case "DibujarCara":

                                        if (Analiza_Lexico.Lexema[i + 1] == "(")
                                        {
                                            if (Analiza_Lexico.Token[i + 2] == "num")
                                            {
                                                if (Analiza_Lexico.Lexema[i + 3] == ",")
                                                {
                                                    if (Analiza_Lexico.Token[i + 4] == "num")
                                                    {
                                                        if (Analiza_Lexico.Lexema[i + 5] == ",")
                                                        {
                                                            if (Analiza_Lexico.Token[i + 6] == "num")
                                                            {
                                                                if (Analiza_Lexico.Lexema[i + 7] == ",")
                                                                {
                                                                    if (Analiza_Lexico.Token[i + 8] == "id")
                                                                    {
                                                                        if (Analiza_Lexico.Lexema[i + 9] == ",")
                                                                        {
                                                                            if (Analiza_Lexico.Token[i + 10] == "Modo")
                                                                            {
                                                                                if (Analiza_Lexico.Lexema[i + 11] == ")")
                                                                                {
                                                                                    int         nombreToken = i + 8;
                                                                                    int         xToken      = i + 2;
                                                                                    int         yToken      = i + 4;
                                                                                    int         modoToken   = i + 10;
                                                                                    int         radioToken  = i + 6;
                                                                                    string      nomC        = Analiza_Lexico.Lexema[nombreToken];
                                                                                    int         xC          = Convert.ToInt32(Analiza_Lexico.Lexema[xToken]);
                                                                                    int         yC          = Convert.ToInt32(Analiza_Lexico.Lexema[yToken]);
                                                                                    int         radioC      = Convert.ToInt32(Analiza_Lexico.Lexema[radioToken]);
                                                                                    string      modoC       = Analiza_Lexico.Lexema[modoToken];
                                                                                    Carita      car         = new Carita(nomC, xC, yC, radioC, modoC, true);
                                                                                    Instruccion ins         = new Instruccion("dibujar", 0, car);
                                                                                    respuesta.listains.Add(ins);
                                                                                    i = i + 11;
                                                                                    if (i == Analiza_Lexico.NoTokens - 2)     //solo una sentencia
                                                                                    {
                                                                                        respuesta.estado  = true;
                                                                                        respuesta.Mensaje = "[●][Estado: Exito] \nNo se han encontrado Errores";

                                                                                        return(respuesta);
                                                                                        //Console.Out.WriteLine("No se han encontrado Errores");
                                                                                    }
                                                                                }
                                                                                else
                                                                                {
                                                                                    respuesta.estado  = false;
                                                                                    respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en:" + Analiza_Lexico.Lexema[i + 11] + " Linea:" + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 11]) + "\n[Descripcion]: Se esperaba el elemento )";
                                                                                    //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 11] + "\n" + "Error [Sintactico]: Se esperaba el elemento )";
                                                                                    //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 11]);
                                                                                    //Console.Out.WriteLine("Error [Sintactico]: Se esperaba el elemento )");
                                                                                    i = Analiza_Lexico.NoTokens - 2;
                                                                                    return(respuesta);
                                                                                }
                                                                            }
                                                                            else
                                                                            {
                                                                                respuesta.estado  = false;
                                                                                respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en:" + Analiza_Lexico.Lexema[i + 10] + " Linea:" + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 10]) + "\n[Descripcion]: Se esperaba un Modo valido (triste, enojada, feliz, dormida, neutral)";
                                                                                //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 10] + "\n" + "Error [Sintactico]: Modo no valido (triste, enojada, feliz, dormida, neutral)";
                                                                                //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 10]);
                                                                                //Console.Out.WriteLine("Error [Sintactico]: Modo no valido (triste, enojada, feliz, dormida, neutral)");
                                                                                i = Analiza_Lexico.NoTokens - 2;
                                                                                return(respuesta);
                                                                            }
                                                                        }
                                                                        else
                                                                        {
                                                                            respuesta.estado  = false;
                                                                            respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en:" + Analiza_Lexico.Lexema[i + 9] + " Linea:" + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 9]) + "\n[Descripcion]: Se esperaba el elemento ,";
                                                                            //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 9] + "\n" + "Error [Sintactico]: Se esperaba una ,";
                                                                            //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 9]);
                                                                            //Console.Out.WriteLine("Error [Sintactico]: Se esperaba una ,");
                                                                            i = Analiza_Lexico.NoTokens - 2;
                                                                            return(respuesta);
                                                                        }
                                                                    }
                                                                    else
                                                                    {
                                                                        respuesta.estado  = false;
                                                                        respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en:" + Analiza_Lexico.Lexema[i + 8] + " Linea:" + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 8]) + "\n[Descripcion]: Se esperaba un tipo de nombre valido";
                                                                        //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 8] + "\n" + "Error [Sintactico]: Se esperaba un nombre valido";
                                                                        //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 8]);
                                                                        //Console.Out.WriteLine("Error [Sintactico]: Se esperaba un nombre valido");
                                                                        i = Analiza_Lexico.NoTokens - 2;
                                                                        return(respuesta);
                                                                    }
                                                                }
                                                                else
                                                                {
                                                                    respuesta.estado  = false;
                                                                    respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en:" + Analiza_Lexico.Lexema[i + 7] + " Linea:" + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 7]) + "\n[Descripcion]: Se esperaba el elemento ,";
                                                                    //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 7] + "\n" + "Error [Sintactico]: Se esperaba una ,";
                                                                    //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 7]);
                                                                    //Console.Out.WriteLine("Error [Sintactico]: Se esperaba una ,");
                                                                    i = Analiza_Lexico.NoTokens - 2;
                                                                    return(respuesta);
                                                                }
                                                            }
                                                            else
                                                            {
                                                                respuesta.estado  = false;
                                                                respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en:" + Analiza_Lexico.Lexema[i + 6] + " Linea:" + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 6]) + "\n[Descripcion]: Se esperaba un tipo numerico";
                                                                //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 6] + "\n" + "Error [Sintactico]: Se esperaba un numero";
                                                                //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 6]);
                                                                //Console.Out.WriteLine("Error [Sintactico]: Se esperaba un numero");
                                                                i = Analiza_Lexico.NoTokens - 2;
                                                                return(respuesta);
                                                            }
                                                        }
                                                        else
                                                        {
                                                            respuesta.estado  = false;
                                                            respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 5] + " Linea:" + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 5]) + "\n[Descripcion]: Se esperaba el elemento ,";
                                                            //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 5] + "\n" + "Error [Sintactico]: Se esperaba una ,";
                                                            //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 5]);
                                                            //Console.Out.WriteLine("Error [Sintactico]: Se esperaba una ,");
                                                            i = Analiza_Lexico.NoTokens - 2;
                                                            return(respuesta);
                                                        }
                                                    }
                                                    else
                                                    {
                                                        respuesta.estado  = false;
                                                        respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 4] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 4]) + "\n[Descripcion]: Se esperaba un tipo numerico";
                                                        //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 4] + "\n" + "Error [Sintactico]: Se esperaba un numero";
                                                        //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 4]);
                                                        //Console.Out.WriteLine("Error [Sintactico]: Se esperaba un numero");
                                                        i = Analiza_Lexico.NoTokens - 2;
                                                        return(respuesta);
                                                    }
                                                }
                                                else
                                                {
                                                    respuesta.estado  = false;
                                                    respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 3] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 3]) + "\n[Descripcion]: Se esperaba el elemento ,";
                                                    //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 3] + "\n" + "Error [Sintactico]: Se esperaba una ,";
                                                    //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 3]);
                                                    //Console.Out.WriteLine("Error [Sintactico]: Se esperaba una ,");
                                                    i = Analiza_Lexico.NoTokens - 2;
                                                    return(respuesta);
                                                }
                                            }
                                            else
                                            {
                                                respuesta.estado  = false;
                                                respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 2] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 2]) + "\n[Descripcion]: Se esperaba un tipo numerico";
                                                //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 2] + "\n" + "Error [Sintactico]: Se esperaba un numero";
                                                //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 2]);
                                                //Console.Out.WriteLine("Error [Sintactico]: Se esperaba un numero");
                                                i = Analiza_Lexico.NoTokens - 2;
                                                return(respuesta);
                                            }
                                        }
                                        else
                                        {
                                            respuesta.estado  = false;
                                            respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en:" + Analiza_Lexico.Lexema[i + 1] + " Linea:" + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 1]) + "\n[Descripcion]: Se esperaba el elemento (";
                                            //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 1] + "\n" + "Error [Sintactico]: Se esperaba el elemento (";
                                            //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 1]);
                                            //Console.Out.WriteLine("Error [Sintactico]: Se esperaba el elemento (");
                                            i = Analiza_Lexico.NoTokens - 2;
                                            return(respuesta);
                                        }
                                        break;

                                    case "EliminarCara":
                                        //Console.Out.WriteLine("Selecciono EliminarCara");
                                        if (Analiza_Lexico.Lexema[i + 1] == "(")
                                        {
                                            if (Analiza_Lexico.Token[i + 2] == "id")
                                            {
                                                if (Analiza_Lexico.Lexema[i + 3] == ")")
                                                {
                                                    i = i + 3;
                                                    if (i == Analiza_Lexico.NoTokens - 2)
                                                    {
                                                        respuesta.estado  = true;
                                                        respuesta.Mensaje = "[●][Estado: Exito] \nNo se han encontrado Errores";
                                                        return(respuesta);
                                                        //Console.Out.WriteLine("No se han encontrado Errores");
                                                    }
                                                }
                                                else
                                                {
                                                    respuesta.estado  = false;
                                                    respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 3] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 3]) + "\n[Descripcion]: Se esperaba el elemento )";
                                                    //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 3]);
                                                    //Console.Out.WriteLine("Error [Sintactico]: Se esperaba el elemento )");
                                                    i = Analiza_Lexico.NoTokens - 2;
                                                    return(respuesta);
                                                }
                                            }
                                            else
                                            {
                                                respuesta.estado  = false;
                                                respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 2] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 2]) + "\n[Descripcion]: Se esperaba un tipo de nombre valido";
                                                //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 2] + "\n" + "Error [Sintactico]: Se esperaba un nombre valido";
                                                //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 2]);
                                                //Console.Out.WriteLine("Error [Sintactico]: Se esperaba un nombre valido");
                                                i = Analiza_Lexico.NoTokens - 2;
                                                return(respuesta);
                                            }
                                        }
                                        else
                                        {
                                            respuesta.estado  = false;
                                            respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 1] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 1]) + "\n[Descripcion]: Se esperaba el elemento (";
                                            //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 1] + "\n" + "Error[Sintactico]: Se esperaba el elemento(";
                                            //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 1]);
                                            //Console.Out.WriteLine("Error [Sintactico]: Se esperaba el elemento (");
                                            i = Analiza_Lexico.NoTokens - 2;
                                            return(respuesta);
                                        }
                                        break;

                                    case "Dormir":
                                        if (Analiza_Lexico.Lexema[i + 1] == "(")
                                        {
                                            if (Analiza_Lexico.Token[i + 2] == "num")
                                            {
                                                if (Analiza_Lexico.Lexema[i + 3] == ")")
                                                {
                                                    int milliseconds = Convert.ToInt32(Analiza_Lexico.Lexema[i + 2]);
                                                    Thread.Sleep(milliseconds * 1000);
                                                    i = i + 3;
                                                    if (i == Analiza_Lexico.NoTokens - 2)
                                                    {
                                                        respuesta.estado  = true;
                                                        respuesta.Mensaje = "[●][Estado: Exito] \nNo se han encontrado Errores";

                                                        return(respuesta);
                                                        //Console.Out.WriteLine("No se han encontrado Errores");
                                                    }
                                                }
                                                else
                                                {
                                                    respuesta.estado  = false;
                                                    respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 3] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 3]) + "\n[Descripcion]: Se esperaba el elemento )";
                                                    //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 3] + "\n" + "Error [Sintactico]: Se esperaba el elemento )";
                                                    //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 3]);
                                                    //Console.Out.WriteLine("Error [Sintactico]: Se esperaba el elemento )");
                                                    i = Analiza_Lexico.NoTokens - 2;
                                                    return(respuesta);
                                                }
                                            }
                                            else
                                            {
                                                respuesta.estado  = false;
                                                respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en:" + Analiza_Lexico.Lexema[i + 2] + " Linea:" + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 2]) + "\n[Descripcion]: Se esperaba un tipo numerico";
                                                //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 2] + "\n" + "Error [Sintactico]: Se esperaba un numero";
                                                //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 2]);
                                                //Console.Out.WriteLine("Error [Sintactico]: Se esperaba un numero");
                                                i = Analiza_Lexico.NoTokens - 2;
                                                return(respuesta);
                                            }
                                        }
                                        else
                                        {
                                            respuesta.estado  = false;
                                            respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 1] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 1]) + "\n[Descripcion]: Se esperaba el elemento (";
                                            //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 1] + "\n" + "Error [Sintactico]: Se esperaba el elemento (";
                                            //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 1]);
                                            //Console.Out.WriteLine("Error [Sintactico]: Se esperaba el elemento (");
                                            i = Analiza_Lexico.NoTokens - 2;
                                            return(respuesta);
                                        }
                                        break;

                                    case "CambiarModo":
                                        if (Analiza_Lexico.Lexema[i + 1] == "(")
                                        {
                                            if (Analiza_Lexico.Token[i + 2] == "id")
                                            {
                                                if (Analiza_Lexico.Lexema[i + 3] == ",")
                                                {
                                                    if (Analiza_Lexico.Token[i + 4] == "Modo")
                                                    {
                                                        if (Analiza_Lexico.Lexema[i + 5] == ")")
                                                        {
                                                            i = i + 5;
                                                            if (i == Analiza_Lexico.NoTokens - 2)
                                                            {
                                                                respuesta.estado  = true;
                                                                respuesta.Mensaje = "[●][Estado: Exito] \nNo se han encontrado Errores";
                                                                return(respuesta);
                                                                //Console.Out.WriteLine("No se han encontrado Errores");
                                                            }
                                                        }
                                                        else
                                                        {
                                                            respuesta.estado  = false;
                                                            respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 5] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 5]) + "\n[Descripcion]: Se esperaba el elemento )";
                                                            //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 5] + "\n" + "Error [Sintactico]: Se esperaba el elemento )";
                                                            //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 5]);
                                                            //Console.Out.WriteLine("Error [Sintactico]: Se esperaba el elemento )");
                                                            i = Analiza_Lexico.NoTokens - 2;
                                                            return(respuesta);
                                                        }
                                                    }
                                                    else
                                                    {
                                                        respuesta.estado  = false;
                                                        respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 4] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 4]) + "\n[Descripcion]: Se esperaba un tipo de nombre valido";
                                                        //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 4] + "\n" + "Error [Sintactico]: Se esperaba un nombre valido";
                                                        //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 4]);
                                                        //Console.Out.WriteLine("Error [Sintactico]: Se esperaba un nombre valido");
                                                        i = Analiza_Lexico.NoTokens - 2;
                                                        return(respuesta);
                                                    }
                                                }
                                                else
                                                {
                                                    respuesta.estado  = false;
                                                    respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 3] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 3]) + "\n[Descripcion]: Se esperaba el elemento ,";
                                                    //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 3] + "\n" + "Error [Sintactico]: Se esperaba una ,";
                                                    //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 3]);
                                                    //Console.Out.WriteLine("Error [Sintactico]: Se esperaba una ,");
                                                    i = Analiza_Lexico.NoTokens - 2;
                                                    return(respuesta);
                                                }
                                            }
                                            else
                                            {
                                                respuesta.estado  = false;
                                                respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 2] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 2]) + "\n[Descripcion]: Se esperaba un tipo de nombre valido";
                                                //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 2] + "\n" + "Error [Sintactico]: Se esperaba un nombre valido";
                                                //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 2]);
                                                //Console.Out.WriteLine("Error [Sintactico]: Se esperaba un nombre valido");
                                                i = Analiza_Lexico.NoTokens - 2;
                                                return(respuesta);
                                            }
                                        }
                                        else
                                        {
                                            respuesta.estado  = false;
                                            respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i + 1] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i + 1]) + "\n[Descripcion]: Se esperaba el elemento (";
                                            //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i + 1] + "\n" + "Error [Sintactico]: Se esperaba el elemento (";
                                            //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i + 1]);
                                            //Console.Out.WriteLine("Error [Sintactico]: Se esperaba el elemento (");
                                            i = Analiza_Lexico.NoTokens - 2;
                                            return(respuesta);
                                        }
                                        break;

                                    default:
                                        Console.Out.WriteLine("Selecciono otro");
                                        break;
                                    }
                                }
                                else
                                {
                                    respuesta.estado  = false;
                                    respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[i] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[i]) + "\n[Descripcion]: Instruccion incorrecta, se esperaba algun tipo de instruccion bien formada";
                                    //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[i] + "\n" + "Error [Lexico]: Instruccion incorrecta, se esperaba algun tipo de instruccion bien formada";
                                    return(respuesta);
                                    //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[i]);
                                    //Console.Out.WriteLine("Error [Lexico]: Instruccion incorrecta, se esperaba algun tipo de instruccion bien formada");
                                }
                            }

                            //Fin for

                            if (Analiza_Lexico.Lexema[Analiza_Lexico.NoTokens - 1] == "Fin")
                            {
                                respuesta.estado  = true;
                                respuesta.Mensaje = "[●][Estado: Exito] \nNo se han encontrado Errores";
                                return(respuesta);
                            } /////************************************ Aqui Fin
                            else
                            {
                                respuesta.estado = false;
                                ///aqui te quedaste we, lo tienes pegao
                                respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[Analiza_Lexico.NoTokens - 1] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[Analiza_Lexico.NoTokens - 1]) + "\n[Descripcion]: Se esperaba la palabra reservada Fin al final del codigo";
                                //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[Analiza_Lexico.NoTokens - 1] + "\n" + "Error [Lexico]: Se esperaba la palabra reservada Fin";
                                return(respuesta);
                                //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[Analiza_Lexico.NoTokens - 1]);
                                //Console.Out.WriteLine("Error [Lexico]: Se esperaba la palabra reservada Fin");
                            }
                        }
                        else
                        {
                            respuesta.estado  = false;
                            respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[2] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[2]) + "\n[Descripcion]: Se esperaba la palabra reservada Inicio";
                            return(respuesta);
                            //respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[2] + " Se esperaba la palabra reservada Inicio despues del nombre del Programa";
                            //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[2] + "\n" + "Error [Lexico]: Se esperaba la palabra reservada Inicio antes de Fin";
                            //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[2]);
                            //Console.Out.WriteLine("Error [Lexico]: Se esperaba la palabra reservada Inicio");
                        }
                    }
                    else
                    {
                        respuesta.estado  = false;
                        respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[1] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[1]) + "\n[Descripcion]: Hace falta un nombre valido despues de la palabra reservada Programa";
                        //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[1] + "\n" + "Error [Lexico]: Hace falta un nombre valido antes de la palabra reservada Fin";
                        return(respuesta);
                        //Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[1]);
                        //Console.Out.WriteLine("Error [Lexico]: Nombre no valido");
                    }
                }
                else
                {
                    respuesta.estado  = false;
                    respuesta.Mensaje = "[x][Estado : Error]\n" + "[Tipo : Sintactico] Error en: " + Analiza_Lexico.Lexema[0] + " Linea: " + numeroLinea(Codigo, Analiza_Lexico.Lexema[0]) + "\n[Descripcion]: Se esperaba la palabra reservada Programa";
                    //respuesta.Mensaje = "Error en: " + Analiza_Lexico.Lexema[0] + "\n" + "Error [Lexico]: Se esperaba la palabra reservada Programa";
                    return(respuesta);
                    // Console.Out.WriteLine("Error en: " + Analiza_Lexico.Lexema[0]);
                    // Console.Out.WriteLine("Error [Lexico]: Se esperaba la palabra reservada Programa");
                }
            }
            else
            {
                respuesta.estado  = false;
                respuesta.Mensaje = "[●][Estado: Exito] \nNo se han encontrado Errores";
                //respuesta.Mensaje = "[•][Estado : Exito]\n" + "[Tipo : nulo] "  + "\n[Descripcion]: No hay nada que analizar";
                //respuesta.Mensaje = "No hay nada que analizar";
                return(respuesta);
                //Console.Out.WriteLine("No hay nada que analizar");
            }
            respuesta.estado  = false;
            respuesta.Mensaje = "[●][Estado: Exito] \nNo se han encontrado Errores";
            //respuesta.Mensaje = "[•][Estado : Exito]\n" + "[Tipo : nulo] " + "\n[Descripcion]: No hay nada que analizar";
            //respuesta.Mensaje = "No hay nada que analizar";
            return(respuesta);
        }
コード例 #3
0
        private void botonEjecutar_Click(object sender, EventArgs e)
        {
            Respuesta respuesta = new Respuesta();

            if ((areaEditor.Text).Length == 0)
            {
                respuesta.estado  = false;
                respuesta.Mensaje = "[•][Estado : Exito]\n" + "[Tipo : nulo] " + "\n[Descripcion]: No hay nada que analizar";
                areaErrores.Text  = respuesta.Mensaje;
                textBox1.Text     = "hola";
            }
            else
            {
                respuesta        = sintaxis.analizarSintaxis(areaEditor.Text);
                areaErrores.Text = respuesta.Mensaje;
                int    contador = 0;
                string nombre   = "";
                for (int j = 0; j < respuesta.listacaras.Count; j++)
                {
                    contador = 0;
                    Carita c = respuesta.listacaras[j];
                    nombre = respuesta.listacaras[j].Nombre;
                    for (int n = 0; n < respuesta.listacaras.Count; n++)
                    {
                        if (nombre == respuesta.listacaras[n].Nombre)
                        {
                            contador++;
                        }
                    }
                    if (contador <= 1)
                    {
                        areaErrores.Text = respuesta.Mensaje;
                        Graphics g = panel1.CreateGraphics();
                        if (c.Modo == "feliz")
                        {
                            Pen        p = new Pen(Color.Black);
                            SolidBrush s = new SolidBrush(Color.Red);
                            g.DrawEllipse(p, c.X, c.Y, c.Radio, c.Radio);
                            g.FillEllipse(s, c.X, c.Y, c.Radio, c.Radio);
                        }
                        if (c.Modo == "triste")
                        {
                            Pen        p = new Pen(Color.Black);
                            SolidBrush s = new SolidBrush(Color.Blue);
                            g.DrawEllipse(p, c.X, c.Y, c.Radio, c.Radio);
                            g.FillEllipse(s, c.X, c.Y, c.Radio, c.Radio);
                        }
                        if (c.Modo == "enojada")
                        {
                            Pen        p = new Pen(Color.Black);
                            SolidBrush s = new SolidBrush(Color.Yellow);
                            g.DrawEllipse(p, c.X, c.Y, c.Radio, c.Radio);
                            g.FillEllipse(s, c.X, c.Y, c.Radio, c.Radio);
                        }
                    }
                    else
                    {
                        areaErrores.Text = "[x][Estado : Error]\n" + "[Tipo : Semántico] Ya existe una carita con el nombre " + nombre;
                    }
                }
            }
        }