2015-06-30 2 views
0

Antlrworks предоставляет визуализированное синтаксическое дерево для исходного файла исходного кода. Мне было интересно, есть ли какой-либо эквавалентный инструмент для javacc & jtb спасибоЕсть ли какой-либо инструмент для визуализации обработанного дерева для jtb и javacc как antlrworks

ответ

2

Прогулка по дереву. Выкопайте узлы и дуги в формате graphviz («точка»). Вызовите graphviz о результате.

Это не будет очень полезно для более чем сотни узлов, потому что это не очень плотно.

Примечательно, что более масштабируемый способ является печать вложенным S-expression, в следующем формате:

<depth_from_root*spaces> (<nodetype> <newline> 
     <childnode1_as_S-expression> 
     <childnode2_as_S-expression> 
     ... 
     <childnodeN_as_S-expression> 
       )<nodetype> 

Это фактически печатает дерево вбок, например, с корнем слева и детей к правильно. Вы можете распечатать очень большие деревья таким образом и все еще сможете их прочитать (если вы можете прокручивать вверх и вниз по тексту ).

В качестве примера: а * (B + C) -d:

(- 
     (* 
      (+ 
       (variable b) 
       (variable c) 
      )+ 
     )* 
     (constant 1) 
    )- 

Это также легко сделать с деревом прогулки. Вы можете легко сделать напечатанную версию более плотной или добавить дополнительную информацию.

См. Примеры обоих из них, here.

+0

Я думаю, что это своего рода ast, а не разобранное дерево. –

+0

Не имеет значения, является ли это AST или деревом разбора; эта техника работает просто отлично. –

+0

Да, согласен. Есть ли какой-либо инструмент/плагин для визуализации на основе JavaCC и JTB-грамматики? В случае разработки с нуля, Graphviz является хорошим вариантом. Большое вам спасибо за вашу рекомендацию –

 Смежные вопросы

  • Нет связанных вопросов^_^