Древовидная грамматика АНТЛР в графическом виде AST - PullRequest
0 голосов
/ 01 июня 2011

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

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

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

1 Ответ

0 голосов
/ 01 июня 2011

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

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

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

...