Molti di questi strumenti fanno lavorare direttamente con l'albero di sintassi astratta (o meglio, una diretta visualizzazione uno-a-uno di esso). Che include Blockley, che hai visto, e le altre lingue e redattori basati su blocchi di simile ( Scratch , matita Codice / Droplet , Snap! , GP , piastrella Grazia , e così via).
Questi sistemi non mostrano una tradizionale rappresentazione grafica dei vertici e dei bordi, per ragioni spiegate altrove (spazio e anche difficoltà di interazione), ma rappresentano direttamente un albero. Un nodo o blocco è figlio di un altro se è direttamente, fisicamente all'interno del genitore.
Ho costruito uno di questi sistemi ( Tiled Grace , carta , carta ). Posso assicurarti che sta lavorando molto direttamente con l'AST: quello che vedi sullo schermo è una rappresentazione esatta dell'albero di sintassi, come elementi DOM nidificati (quindi, un albero!).
Questo è l'AST di alcuni codici. Il root è un nodo di chiamata del metodo "for ... do". Quel nodo ha alcuni figli, che iniziano con "_ .. _", che a sua volta ha due figli, un nodo "1" e un nodo "10". Ciò che appare sullo schermo è esattamente ciò che il backend del compilatore sputa nel mezzo del processo - è fondamentalmente come funziona il sistema.
Se vuoi, puoi pensarlo come un layout ad albero standard con i bordi che puntano fuori dallo schermo verso di te (e occluso dal blocco di fronte a loro), ma l'annidamento è un modo valido per mostrare un albero come un vertice diagramma.
Farà anche "il round trip dall'origine al nodo-grafico e poi di nuovo all'origine quando necessario". In effetti, puoi vedere che succede quando fai clic su "Vista Codice" in basso. Se modifichi il testo, verrà nuovamente analizzato e l'albero risultante verrà reso nuovamente modificabile, e se modifichi i blocchi, la stessa cosa accade con l'origine.
Pencil Code fa essenzialmente la stessa cosa con, a questo punto, un'interfaccia migliore . I blocchi che utilizza sono una vista grafica di AST CoffeeScript. Così fanno gli altri sistemi basati su blocchi o su piastrelle, in generale, sebbene alcuni di essi non rendano l'aspetto di nidificazione altrettanto chiaro nella rappresentazione visiva, e molti non hanno un vero linguaggio testuale dietro di loro, quindi il " albero di sintassi "può essere un po 'illusorio, ma il principio è lì.
Cosa ti manca, poi, è che questi sistemi in realtà stanno lavorando direttamente con l'albero di sintassi astratta. Quello che vedi e manipoli è un rendering efficiente in termini di spazio di un albero, in molti casi letteralmente l'AST produce un compilatore o un parser.