我正在使用 ANTLRWorks 的调试模式来测试我的 c 语法。在 ANTLRWorks 中进行调试非常有助于更好地理解,但我在理解输出树的不同颜色时遇到了问题。我backtrack=true
在我的语法中使用。我认为红色意味着调试器走错了路,而绿色告诉我它走对了。但是深红色和深绿色呢?
我添加了一张“小树”的图片,它只匹配以下输入:
int test;
如果有必要回答这个问题,这里是使用的 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
;