Wiele z tych narzędzi wykonać pracę bezpośrednio z drzewo składniowe (czy raczej bezpośredniej wizualizacji jeden-do-jednego z nich). Że zawiera Blockly, które widziałem, a inne języki i redaktorów blokowe oparte jak to ( Scratch , ołówek Kod / Kropelka , Snap! , GP , marmurowa Grace , i tak dalej).
Systemy te nie pokazują tradycyjnej reprezentacji wykresów wierzchołków i krawędzi, z powodów wyjaśnionych gdzie indziej (przestrzeń, a także trudność interakcji), ale bezpośrednio reprezentują drzewo. Jeden węzeł lub blok jest dzieckiem innego, jeśli jest bezpośrednio, fizycznie wewnątrz elementu nadrzędnego.
Zbudowałem jeden z tych systemów ( Tiled Grace , papier , papier ). Zapewniam cię, że bardzo bezpośrednio współpracuje z AST: to, co widzisz na ekranie, to dokładna reprezentacja drzewa składni jako zagnieżdżonych elementów DOM (a więc drzewa!).
To jest AST jakiegoś kodu. Root jest węzłem wywołania metody „for… do”. Ten węzeł ma kilka elementów potomnych, zaczynając od „_ .. _”, który sam ma dwa elementy potomne, węzeł „1” i węzeł „10”. To, co pojawia się na ekranie, jest dokładnie tym, co wyrzuca kompilator kompilatora w środku procesu - tak zasadniczo działa system.
Jeśli chcesz, możesz pomyśleć o tym jako o standardowym układzie drzewa z krawędziami skierowanymi w stronę ekranu (i zasłoniętymi blokiem przed nimi), ale zagnieżdżanie jest równie ważnym sposobem pokazania drzewa jak wierzchołka diagram.
Będzie również „wykonywać podróż w obie strony od źródła do wykresu węzła, a następnie w razie potrzeby ponownie do źródła”. W rzeczywistości możesz to zobaczyć, klikając „Widok kodu” na dole. Jeśli zmodyfikujesz tekst, zostanie on ponownie przeanalizowany, a powstałe drzewo będzie renderowane w celu ponownej edycji, a jeśli zmodyfikujesz bloki, to samo dzieje się ze źródłem.
Pencil Code robi w zasadzie to samo z lepszym interfejsem . Bloki, których używa, to graficzny widok CoffeeScript AST. Podobnie jak inne systemy oparte na blokach lub kafelkach, chociaż niektóre z nich nie sprawiają, że aspekt zagnieżdżania jest tak wyraźny w reprezentacji wizualnej, a wielu nie ma za sobą rzeczywistego języka tekstowego, więc „ „drzewo składniowe” może być nieco iluzoryczne, ale zasada istnieje.
Czego brakuje, to to, że systemy te naprawdę są bezpośrednią współpracę z drzewo składniowe. To, co widzisz i którym manipulujesz, to wydajne przestrzennie renderowanie drzewa, w wielu przypadkach dosłownie AST generowany przez kompilator lub parser.