No tengo claro la estructura de los árboles sintácticos abstractos. Para ir "hacia abajo (hacia adelante)" en la fuente del programa que representa el AST, ¿va directamente al nodo superior o baja? Por ejemplo, ¿el programa de ejemploConstrucción y recorrido del árbol de sintaxis abstracta
a = 1
b = 2
c = 3
d = 4
e = 5
resultado en un AST que tiene este aspecto:
o esto:
Cuando en la primera, va "derecho" en el main node
lo guiará a través del programa, pero en el segundo, simplemente siguiendo el puntero next
en cada nodo hará lo mismo.
Parece que el segundo sería más correcto ya que no necesita algo así como un tipo de nodo especial con una matriz potencialmente extremadamente larga de punteros para el primer nodo. Aunque, puedo ver que el segundo se vuelve más complicado que el primero cuando te metes en los bucles for
y las ramas if
y cosas más complicadas.
Lo sentimos, no entiendo "nodo principal binario", y realmente no puedo entenderlo desde tu ejemplo de Lisp (probablemente porque nunca he usado Lisp). ¿Podrías elaborar un poco más? –
@Seth: entonces no importa el ejemplo de Lisp. He publicado un ejemplo tipo C de por qué necesitarías el primer formulario. –
por lo que tendría que usar un nodo con _n_ nodos secundarios para el nodo raíz (para mantener el programa principal y cosas así) y también para qué? No sabía que los AST se usaban para mostrar el alcance del bloque o lo que fuera. –