Banyak dari alat ini melakukan pekerjaan secara langsung dengan pohon abstrak sintaks (atau lebih tepatnya, satu-ke-satu visualisasi langsung dari itu). Itu termasuk Blockly, yang telah Anda lihat, dan bahasa berbasis blok lain dan editor seperti itu ( Scratch , Pencil Code / Droplet , Snap! , GP , Ubin Rahmat , dan sebagainya).
Sistem-sistem itu tidak menunjukkan representasi grafik vertex-and-edge tradisional, karena alasan yang dijelaskan di tempat lain (ruang, dan juga kesulitan interaksi), tetapi mereka secara langsung mewakili pohon. Satu simpul, atau blok, adalah anak dari yang lain jika langsung, secara fisik di dalam induk.
Saya membangun salah satu sistem ini ( Tiled Grace , kertas , kertas ). Saya dapat meyakinkan Anda, itu sangat banyak bekerja dengan AST secara langsung: apa yang Anda lihat di layar adalah representasi tepat dari pohon sintaks, sebagai elemen DOM bersarang (jadi, pohon!).
Ini adalah AST dari beberapa kode. Root adalah node metode panggilan "untuk ... lakukan". Simpul itu memiliki beberapa anak, dimulai dengan "_ .. _", yang dengan sendirinya memiliki dua anak, satu simpul "1" dan satu simpul "10". Apa yang muncul di layar adalah persis apa yang disediakan backend kompiler di tengah proses - itu pada dasarnya bagaimana sistem bekerja.
Jika Anda suka, Anda bisa menganggapnya sebagai tata letak pohon standar dengan ujung-ujungnya menunjuk keluar layar ke arah Anda (dan terhalang oleh blok di depannya), tetapi bersarang sama validnya dengan cara menunjukkan pohon sebagai simpul. diagram.
Ini juga akan "melakukan perjalanan pulang pergi dari sumber ke simpul-grafik dan kemudian kembali lagi ke sumber ketika dibutuhkan". Bahkan, Anda dapat melihat itu terjadi ketika Anda mengklik "Tampilan Kode" di bagian bawah. Jika Anda memodifikasi teks, itu akan diurai kembali dan pohon yang dihasilkan membuat Anda untuk mengedit lagi, dan jika Anda memodifikasi blok, hal yang sama terjadi pada sumbernya.
Pencil Code pada dasarnya melakukan hal yang sama dengan, pada titik ini, antarmuka yang lebih baik . Blok yang digunakannya adalah tampilan grafis dari CoffeeScript AST. Begitu juga sistem berbasis blok atau genteng lainnya, pada umumnya, meskipun beberapa dari mereka tidak membuat aspek bersarang cukup jelas dalam representasi visual, dan banyak yang tidak memiliki bahasa teks aktual di belakangnya sehingga " sintaksis pohon "bisa sedikit ilusif, tetapi prinsipnya ada di sana.
Jadi, apa yang Anda lewatkan adalah bahwa sistem ini benar - benar bekerja secara langsung dengan pohon sintaksis abstrak. Apa yang Anda lihat dan manipulasi adalah rendering pohon yang efisien-ruang, dalam banyak kasus secara harfiah AST yang dihasilkan oleh kompiler atau parser.