public Linea ReducirTokens(Linea linea) { return(generalFacade.ReducirTokens(linea)); }
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); }