2012-12-27 4 views
2

Я использую режим отладки ANTLRWorks для проверки моей c-грамматики. Отладка в ANTLRWorks действительно отличная для лучшего понимания, но у меня есть проблема в понимании разных цветов выходного дерева. Я использую backtrack=true в своей грамматике. Я думал, что красный цвет означает, что отладчик идет не так, пока зеленый цвет говорит мне, что он прошел правильно. Но как насчет темно-красного и темно-зеленого?ANTLRWorks отладка - смысл разных цветов?

я добавил картину «маленькое дерево», которое соответствует только на следующий входной:

int test; 

enter image description here

Если это необходимо, чтобы ответить на этот вопрос, вот 4 наиболее важные правила, которые используемый.

start 
: declaration* 
; 

declaration 
: functionDefinition 
| dataDeclaration //also used for Function Declaration 
| assemblerDefinition 
; 


functionDefinition 
: declarationSpecifier* declarator Equals Default Semi 
| declarationSpecifier* declarator Equals Delete Semi 
| declarationSpecifier* declarator functionBody 
; 

dataDeclaration 
:declarationSpecifier* declarator initializer? (Comma declarator initializer?)* Semi 
; 
+0

Я знаю, что вопрос был немного старым, но я был бы признателен за принятие, поскольку я ответил на вопрос или комментарий, если вы считаете, что это неверно. Благодаря! – cb4

ответ

1

Это не так много о «правых» и «неправильно», как это как о парсер пытается выяснить, какие правила будут соответствовать вход. Когда ANTLR должен вернуться, ANTLRWorks использует красный цвет для ветвей дерева разбора, который считается возможным совпадений. Зеленый используется для ветвей, которые фактически проанализировал анализатор, и черный для ветви, который успешно соответствовал входу. Более темные и светлые цвета - это ANTLRWorks, обеспечивающий визуальную обратную связь для вложенных уровней обратного отсчета - чем глубже уровень, тем темнее цвет.

Основной источник этого ответа - ANTLRWorks: An ANTLR Grammar Development Environment Unpublished Draft, написанный Bovet (созданный ANTLRWorks) и Parr (созданный ANTLR).

со страницы 8:

пути, по синтаксическому анализатору показан в зеленом

От страницы 15:

Когда ANTLR должна возвращаться назад, чтобы различать альтернативные производства, обычно сложно отладить парсер, потому что разработчики должны отслеживать, когда парсер спекулирует, а когда он нет. ANTLRWorks четко различает два режима, показывая все спекулятивные ветви синтаксического анализа в дереве разбора в красном. ... Второе поддерево [показано черным] - это дерево синтаксического анализа для второго варианта в правиле s, которое соответствует успешно. В ситуациях, когда ANTLR должен вставлять backtrack, ANTLRWorks меняет цвет с помощью серии градаций, по одному для каждого уровня отложенного отскока.

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

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