@@ -27,33 +27,37 @@ public static double eval(String expresion) {
2727 }
2828
2929 if (Character .isDigit (c ) || c == '.' ) {
30- // Leer el número completo (incluyendo decimales)
30+ // Leer el número
3131 StringBuilder numero = new StringBuilder ();
3232 while (i < expresion .length () &&
3333 (Character .isDigit (expresion .charAt (i )) || expresion .charAt (i ) == '.' )) {
3434 numero .append (expresion .charAt (i ));
3535 i ++;
3636 }
37- operandos .push (Double .parseDouble (numero .toString ())); // Empujar el número completo
37+ // Agregar el número
38+ operandos .push (Double .parseDouble (numero .toString ()));
3839 continue ; // Saltar al siguiente carácter
3940 }
4041
4142 if (c == '(' ) {
42- operadores .push (c ); // Empujar paréntesis de apertura
43+ // Agregar paréntesis de apertura
44+ operadores .push (c );
4345 } else if (c == ')' ) {
4446 // Evaluar todo hasta encontrar el paréntesis de apertura
4547 while (operadores .peek () != '(' ) {
4648 aplicarOperacion (operandos , operadores .pop ());
4749 }
48- operadores .pop (); // Eliminar '('
50+ // Eliminar '('
51+ operadores .pop ();
4952 } else if (esOperador (c )) {
5053 // Procesar operadores con mayor o igual precedencia
5154 while (!operadores .isEmpty () &&
5255 operadores .peek () != '(' &&
5356 precedencia (operadores .peek ()) >= precedencia (c )) {
5457 aplicarOperacion (operandos , operadores .pop ());
5558 }
56- operadores .push (c ); // Empujar el operador actual
59+ // Agregar el operador actual
60+ operadores .push (c );
5761 }
5862 i ++;
5963 }
@@ -63,7 +67,8 @@ public static double eval(String expresion) {
6367 aplicarOperacion (operandos , operadores .pop ());
6468 }
6569
66- return operandos .pop (); // El resultado final
70+ // El resultado final
71+ return operandos .pop ();
6772 }
6873
6974 // Aplica una operación usando los operandos de la pila
@@ -76,15 +81,15 @@ private static void aplicarOperacion(Stack<Double> operandos, char operador) {
7681 case '*' -> operandos .push (a * b );
7782 case '/' -> {
7883 if (b == 0 ) {
79- showError ("División por cero" ); // Muestra el error
80- throw new IllegalArgumentException ("División por cero" ); // Lanza la excepción
84+ showError ("[SEMANTICO] División por cero" );
85+ throw new IllegalArgumentException ("División por cero" );
8186 }
8287 operandos .push (a / b ); // Solo se ejecuta si b no es 0
8388
8489 }
8590 default -> {
86- showError ("Operador no soportado: " + operador ); // Muestra el mensaje de error
87- throw new IllegalArgumentException ("Operador no soportado: " + operador ); // Lanza la excepción
91+ showError ("[SEMANTICO] Operador no soportado: " + operador );
92+ throw new IllegalArgumentException ("Operador no soportado: " + operador );
8893 }
8994
9095 }
0 commit comments