Muchas de estas herramientas hacen el trabajo directamente con el árbol de sintaxis abstracta (o más bien, una visualización directa de uno a uno de la misma). Eso incluye Blockly, lo que has visto, y las otras lenguas y editores basados en bloques como él ( arañazos , lápiz Código / la gotita , Snap! , GP , baldosa Gracia , y así sucesivamente).
Esos sistemas no muestran una representación gráfica tradicional de vértices y bordes, por razones explicadas en otra parte (espacio, y también dificultad de interacción), pero están representando directamente un árbol. Un nodo o bloque es hijo de otro si está directamente, físicamente dentro del padre.
Construí uno de estos sistemas ( Tiled Grace , papel , papel ). Les puedo asegurar que está trabajando directamente con el AST: lo que ven en la pantalla es una representación exacta del árbol de sintaxis, como elementos DOM anidados (¡un árbol!).
Este es el AST de algún código. La raíz es un método llamado nodo "for ... do". Ese nodo tiene algunos hijos, comenzando con "_ .. _", que tiene dos hijos, un nodo "1" y un nodo "10". Lo que aparece en la pantalla es exactamente lo que el backend del compilador escupe en el medio del proceso: así es fundamentalmente cómo funciona el sistema.
Si lo desea, puede considerarlo como un diseño de árbol estándar con los bordes apuntando fuera de la pantalla hacia usted (y ocluido por el bloque frente a ellos), pero anidar es una forma tan válida de mostrar un árbol como un vértice diagrama.
También "realizará el viaje de ida y vuelta desde la fuente al gráfico de nodos y luego volverá a la fuente cuando sea necesario". De hecho, puede ver que eso sucede cuando hace clic en "Vista de código" en la parte inferior. Si modifica el texto, se volverá a analizar y se generará el árbol resultante para que pueda volver a editar, y si modifica los bloques, sucede lo mismo con la fuente.
Pencil Code hace esencialmente lo mismo con, en este punto, una mejor interfaz . Los bloques que utiliza son una vista gráfica de CoffeeScript AST. También lo hacen los otros sistemas basados en bloques o mosaicos, en general, aunque algunos de ellos no hacen que el aspecto de anidación sea tan claro en la representación visual, y muchos no tienen un lenguaje textual real detrás de ellos, por lo que el " árbol de sintaxis "puede ser un poco ilusorio, pero el principio está ahí.
Lo que te falta, entonces, es que estos sistemas realmente están trabajando directamente con el árbol de sintaxis abstracta. Lo que ves y manipulas es una representación de un árbol que ahorra espacio, en muchos casos literalmente el AST que produce un compilador o analizador.