Un grand nombre de ces outils font travailler directement avec l'arbre de syntaxe abstraite (ou plutôt, une visualisation unique à une directe de celui - ci). Cela inclut Blockley, que vous avez vu, et les autres langues basées sur des blocs et des éditeurs comme il ( Scratch , Crayon code / Droplet , Snap! , GP , sol carrelé grâce , etc.).
Ces systèmes ne présentent pas de représentation traditionnelle des graphes des sommets et des arêtes, pour des raisons expliquées ailleurs (espace et difficulté d'interaction), mais ils représentent directement un arbre. Un nœud, ou bloc, est l'enfant d'un autre s'il se trouve directement, physiquement à l'intérieur du parent.
J'ai construit l'un de ces systèmes ( Tiled Grace , papier , papier ). Je peux vous assurer que cela fonctionne directement avec l'AST: ce que vous voyez à l'écran est une représentation exacte de l'arbre de syntaxe, sous forme d'éléments DOM imbriqués (donc, un arbre!).
Il s'agit de l'AST d'un code. La racine est un nœud d'appel de méthode "for ... do". Ce nœud a des enfants, en commençant par "_ .. _", qui a lui-même deux enfants, un nœud "1" et un nœud "10". Ce qui apparaît à l'écran est exactement ce que le backend du compilateur recrache au milieu du processus - c'est fondamentalement comment le système fonctionne.
Si vous le souhaitez, vous pouvez le considérer comme une disposition d'arbre standard avec les bords pointant vers l'écran vers vous (et occlus par le bloc en face d'eux), mais l'imbrication est une manière aussi valide de montrer un arbre comme un sommet diagramme.
Il "effectuera également l'aller-retour de la source au nœud-graphique, puis reviendra à la source si nécessaire". En fait, vous pouvez voir cela se produire lorsque vous cliquez sur "Affichage du code" en bas. Si vous modifiez le texte, il sera ré-analysé et l'arbre résultant sera rendu pour que vous puissiez le modifier à nouveau, et si vous modifiez les blocs, la même chose se produit avec la source.
Pencil Code fait essentiellement la même chose avec, à ce stade, une meilleure interface . Les blocs qu'il utilise sont une vue graphique du CoffeeScript AST. Il en va de même pour les autres systèmes basés sur des blocs ou des tuiles, bien que certains d'entre eux ne rendent pas l'aspect d'imbrication aussi clair dans la représentation visuelle, et beaucoup n'ont pas de véritable langage textuel derrière eux, donc le " arbre de syntaxe "peut être un peu illusoire, mais le principe est là.
Qu'est - ce que vous manque, alors, est que ces systèmes vraiment sont travaillent directement avec l'arbre de syntaxe abstraite. Ce que vous voyez et manipulez est un rendu économe en espace d'un arbre, dans de nombreux cas littéralement l'AST produit par un compilateur ou un analyseur.