Buah, ahora sí me dejo roto la clase xD Podría decirse que entendí en un 90% lo que estamos haciendo, es decir, de manera recursiva vamos poniendo las expresiones que están a la derecha de nuestra expresión general, por ejemplo:
5 + 5 + 5 + 5;
La vida del programa sería algo así:
1. 5 + obtenerDerecha
2. 5 + 5 + obtenerDerecha
3. 5 + 5 + 5 + obtenerDerecha
4. 5 + 5 + 5 + 5
Obviamente cada caracter sería un nodo del ATS que se está armando, y ese “obtenerDerecha” sería el equivalente a el self._parse_expresion()
que tenemos en el código, que justamente se encarga de ir obteniendo los demás tokens.
.
Sin embargo, las cosas que aún no me quedan clarar es, cómo influyen las precedencias en todo esto, es decir, imagino que la precedencia es el orden de importancia de la operación ¿no?, pues no se cómo es que el programa detecta ese orden jaja, y tampoco veo claro cuál sería la expresión general o el AST que esto estaría generando al final D:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?