示例#1
0
 public Linea ReducirTokens(Linea linea)
 {
     return(generalFacade.ReducirTokens(linea));
 }
示例#2
0
        public string TransformarPostfijo(Linea linea)
        {
            Stack <string> Operadores      = new Stack <string>();
            string         postfijo        = "";
            Linea          parametro       = new Linea();
            bool           parametroActivo = false;

            for (int x = 0; x < linea.instrucciones.Count; x++)
            {
                if (parametroActivo)
                {
                    if (AnalizarCaracter(linea.instrucciones[x].tokenIncrementable) == 4 && (DetectarPosicionUltimaParentesis(linea) == x))
                    {
                        postfijo       += TransformarPostfijo(parametro);
                        parametroActivo = false;
                        parametro.instrucciones.Clear();
                        while (Operadores.Count > 0)
                        {
                            postfijo += Operadores.Pop();
                            postfijo += " ";
                        }
                    }
                    else
                    {
                        parametro.instrucciones.Add(linea.instrucciones[x]);
                    }
                }
                else
                {
                    if (AnalizarCaracter(linea.instrucciones[x].tokenIncrementable) > 0)
                    {
                        if (AnalizarCaracter(linea.instrucciones[x].tokenIncrementable) == 5)
                        {
                            parametroActivo = true;
                        }
                        else
                        {
                            postfijo += " ";
                            if (Operadores.Count == 0)
                            {
                                Operadores.Push(linea.instrucciones[x].tokenIncrementable);
                            }
                            else
                            {
                                if (AnalizarCaracter(linea.instrucciones[x].tokenIncrementable) > AnalizarCaracter(Operadores.Peek()))
                                {
                                    Operadores.Push(linea.instrucciones[x].tokenIncrementable);
                                }
                                else if (AnalizarCaracter(linea.instrucciones[x].tokenIncrementable) < AnalizarCaracter(Operadores.Peek()))
                                {
                                    while (Operadores.Count > 0)
                                    {
                                        postfijo += Operadores.Pop();
                                        postfijo += " ";
                                    }
                                    Operadores.Push(linea.instrucciones[x].tokenIncrementable);
                                }
                                else if (AnalizarCaracter(linea.instrucciones[x].tokenIncrementable) == AnalizarCaracter(Operadores.Peek()))
                                {
                                    postfijo += Operadores.Pop();
                                    postfijo += " ";
                                    Operadores.Push(linea.instrucciones[x].tokenIncrementable);
                                }
                                else
                                {
                                }
                            }
                        }
                    }
                    else
                    {
                        postfijo += $"{linea.instrucciones[x].tokenIncrementable} ";
                    }
                    if (x == linea.instrucciones.Count - 1)
                    {
                        while (Operadores.Count > 0)
                        {
                            postfijo += Operadores.Pop();
                            postfijo += " ";
                        }
                    }
                }
            }
            return(postfijo);
        }