Debugging ANTLRWorks调试-不同颜色的含义?

Debugging ANTLRWorks调试-不同颜色的含义?,debugging,antlr,grammar,antlrworks,ebnf,Debugging,Antlr,Grammar,Antlrworks,Ebnf,我正在使用ANTLRWorks的调试模式来测试我的c-语法。在ANTLRWorks中调试对于更好地理解非常有用,但是我在理解输出树的不同颜色时遇到了一个问题。我在语法中使用了backtrack=true。我认为红色表示调试器走错了方向,而绿色表示调试器走对了方向。但是深红色和深绿色呢 我添加了一个“小树”的图片,它只匹配以下输入: int test; 如果有必要回答这个问题,这里有四条最重要的规则 start : declaration* ; declaration : functionD

我正在使用ANTLRWorks的调试模式来测试我的c-语法。在ANTLRWorks中调试对于更好地理解非常有用,但是我在理解输出树的不同颜色时遇到了一个问题。我在语法中使用了
backtrack=true
。我认为红色表示调试器走错了方向,而绿色表示调试器走对了方向。但是深红色和深绿色呢

我添加了一个“小树”的图片,它只匹配以下输入:

int test;

如果有必要回答这个问题,这里有四条最重要的规则

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
;
与其说是关于“对”和“错”,不如说是关于解析器试图找出哪个规则将匹配输入。当ANTLR必须回溯时,ANTLRWorks将红色用于它认为可能匹配的解析树的分支。绿色用于解析器实际探索的分支,黑色用于成功匹配输入的分支。较深和较浅的颜色是ANTLRWorks,为嵌套的回溯级别提供视觉反馈-级别越深,颜色越深

这个答案的主要来源是Bovet(创建的AntlWorks)和Parr(创建的ANTLR)的著作

第8页:

解析器采用的路径显示为绿色

第15页:

当ANTLR必须回溯以区分替代产品时,通常是很困难的 调试解析器,因为开发人员必须跟踪解析器何时进行推测以及何时进行推测 不ANTLRWorks以红色显示解析树中的所有推测解析分支,从而清楚地区分了这两种模式。。。第二个子树[以黑色显示]是规则s中第二个备选方案的解析树,它成功匹配。在ANTLR必须嵌套回溯的情况下,ANTLRWorks通过一系列渐变来更改颜色,每个回溯嵌套级别一个渐变


我知道这个问题有点老了,但如果你认为我回答的问题不对,请接受我的回答或发表评论,我将不胜感激。谢谢