Древовидная грамматика АНТЛР в графическом виде AST

В настоящее время я собираю компилятор Javascript в ANTLR и JAVA. Я использую древовидную грамматику ANTLR для генерации AST. (Все еще сомневаюсь, что это умнее, чем гетерогенный подход с заданным вручную классом Abstract для генерации узлов, но это уже другая тема).

Моя проблема в том, что когда я проанализировал некоторые входные данные, скажем, var x = 5; это внутренне представлено как; VARDECL как корень и x как левый ребенок и 5 как правый ребенок. Теперь у меня есть возможность распечатать это дерево, используя команду toStringTree(), которая выводит (VARDECL x 5) - это представление становится довольно трудным для понимания в больших программах, поэтому мне было интересно, существует ли сторонний инструмент, который принимает это текстовое представление дерева в качестве входных данных и может ли вывести красивую графическую модель дерева? (Или я должен это реализовать)

С уважением, Сьюн.

1 ответ

Ознакомьтесь с предыдущими вопросами и ответами о том, как создать графическое дерево вашего AST, используя язык DOT Graphviz.

На всякий случай, если вы пишете свою собственную грамматику JavaScript, взгляните на список грамматик в вики ANTLR: есть много доступных грамматик ECMA/JS, которые вы можете использовать.

Наконец, вы можете захотеть взглянуть на эти предыдущие вопросы и ответы, где я опубликовал ответ, который показывает, как оценивать язык (в данном случае выражения) с помощью древовидной грамматики с использованием пользовательских узлов дерева. Конечно, у вас будет гораздо больше разных узлов, потому что язык более сложный (назначения, функции, области действия и т. Д.), Но вы можете начать с этого примера.

Другие вопросы по тегам