private Resultado EP(Resultado operando1) { if (TokenActual.ObtenerTipoToken() == Token.Tipo.OPERADOR_SUMA) { // EP -> + T EP //ExpresionAritmetica += TokenActual.ObtenerValor(); Parea(Token.Tipo.OPERADOR_SUMA); Resultado operando2 = T(); Resultado resultado = new Resultado("Error", "-"); //T(); //EP(); switch (operando1.GetTipo()) { case "var": switch (operando2.GetTipo()) { case "var": int valor1 = int.Parse(operando1.GetVal()); int valor2 = int.Parse(operando2.GetVal()); resultado = new Resultado("var", Convert.ToString(valor1 + valor2)); break; } break; } return(EP(resultado)); } else if (TokenActual.ObtenerTipoToken() == Token.Tipo.OPERADOR_RESTA) { // EP -> - T EP //ExpresionAritmetica += TokenActual.ObtenerValor(); Parea(Token.Tipo.OPERADOR_RESTA); //T(); //EP(); Resultado operando2 = T(); Resultado resultado = new Resultado("Error", "-"); switch (operando1.GetTipo()) { case "var": switch (operando2.GetTipo()) { case "var": int valor1 = int.Parse(operando1.GetVal()); int valor2 = int.Parse(operando2.GetVal()); resultado = new Resultado("var", Convert.ToString(valor1 - valor2)); break; } break; } return(EP(resultado)); } else { return(operando1); //EPSILON //NO HACEMOS NADA } }
private Resultado TP(Resultado operando1) { if (TokenActual.ObtenerTipoToken() == Token.Tipo.OPERADOR_MULTIPLICACION) { // TP -> * F TP //ExpresionAritmetica += TokenActual.ObtenerValor(); Parea(Token.Tipo.OPERADOR_MULTIPLICACION); Resultado operando2 = F(); Resultado resultado = new Resultado("Error", "-"); //F(); //TP(); switch (operando1.GetTipo()) { case "var": switch (operando2.GetTipo()) { case "var": int valor1 = int.Parse(operando1.GetVal()); int valor2 = int.Parse(operando2.GetVal()); resultado = new Resultado("var", Convert.ToString(valor1 * valor2)); break; } break; } return(EP(resultado)); } else if (TokenActual.ObtenerTipoToken() == Token.Tipo.OPERADOR_DIVISION) { // TP -> / F TP //ExpresionAritmetica += TokenActual.ObtenerValor(); Parea(Token.Tipo.OPERADOR_DIVISION); Resultado operando2 = F(); Resultado resultado = new Resultado("Error", "-"); //F(); //TP(); switch (operando1.GetTipo()) { case "var": switch (operando2.GetTipo()) { case "var": int valor1 = int.Parse(operando1.GetVal()); int valor2 = int.Parse(operando2.GetVal()); resultado = new Resultado("var", Convert.ToString(valor1 / valor2)); break; } break; } return(EP(resultado)); } else { return(operando1); //TP -> EPSILON //NO HACEMOS NADA } }
private Resultado E() { //E -> T EP Resultado operando1 = T(); Resultado resultado = EP(operando1); //Console.WriteLine("El valor operado es: " + resultado.GetVal()); ObtenerValorSimbolo(resultado.GetVal()); return(resultado); }
public String GetValorString() { return(Valor.GetVal()); }