Многие из этих инструментов делают работу непосредственно с абстрактным синтаксическим деревом (или , вернее, прямая визуализацией один-к-одному из него). Это включает в себя блок, которые вы уже видели, и другие блоки на основе языков и редактор , это нравится ( Царапины , карандаш код / Капелька , Snap! , GP , Плиточный Грейс , и так далее).
Эти системы не показывают традиционное представление графа вершин и ребер по причинам, объясненным в другом месте (пространство, а также сложность взаимодействия), но они непосредственно представляют дерево. Один узел или блок является дочерним по отношению к другому, если он находится непосредственно, физически внутри родительского элемента.
Я построил одну из этих систем ( Tiled Grace , бумага , бумага ). Уверяю вас, он очень тесно работает с AST напрямую: то, что вы видите на экране, является точным представлением синтаксического дерева в виде вложенных элементов DOM (а значит, дерева!).
Это AST некоторого кода. Корень - это узел вызова метода "for ... do". У этого узла есть несколько дочерних элементов, начиная с «_ .. _», который сам имеет двух дочерних элементов: узел «1» и узел «10». То, что появляется на экране, - это то, что серверная часть компилятора выкладывает в середине процесса - это принципиально, как работает система.
Если вам нравится, вы можете думать об этом как о стандартном макете дерева с ребрами, направленными наружу на экран (и перекрытыми блоком перед ними), но вложение является таким же правильным способом показать дерево как вершину. диаграмма.
Также будет выполнено «обратное путешествие от источника к графу узлов, а затем снова при необходимости к источнику». На самом деле, вы можете увидеть, что происходит, когда вы нажимаете «Вид кода» внизу. Если вы измените текст, он будет повторно проанализирован, и результирующее дерево будет отредактировано для вас, чтобы редактировать снова, и если вы измените блоки, то же самое произойдет и с источником.
Pencil Code делает то же самое с улучшенным интерфейсом . Блоки, которые он использует, представляют собой графическое представление CoffeeScript AST. То же самое можно сказать и о других системах на основе блоков или плиток, хотя в некоторых из них аспект визуализации не настолько ясен в визуальном представлении, а у многих за ними нет текстового языка, поэтому синтаксическое дерево "может быть немного призрачным, но принцип есть.
То , что вы не хватает, то, что эти системы действительно являются непосредственно работы с абстрактным синтаксическим деревом. То, что вы видите и манипулируете, - это рендеринг дерева с эффективным использованием пространства, во многих случаях буквально AST, создаваемый компилятором или парсером.