首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANTLRWorks调试--不同颜色的含义?

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

Stack Overflow用户
提问于 2012-12-27 23:40:34
回答 1查看 264关注 0票数 2

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

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

代码语言:javascript
复制
int test;

如果有必要回答这个问题,这里是使用的4个最重要的规则。

代码语言:javascript
复制
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
;
EN

回答 1

Stack Overflow用户

发布于 2013-04-20 11:01:08

与其说是“对”还是“错”,倒不如说是解析器试图找出哪个规则与输入匹配。当ANTLR必须回溯时,ANTLRWorks使用red表示它认为可能匹配的解析树的分支。绿色用于解析器实际探索的分支,黑色用于成功匹配输入的分支。较暗和较亮的颜色是ANTLRWorks,它为嵌套级别的回溯提供视觉反馈-级别越深,颜色越暗。

这个答案的主要来源是由Bovet (创建的ANTLRWorks)和Parr (创建的ANTLR)编写的ANTLRWorks: An ANTLR Grammar Development Environment Unpublished Draft

从第8页开始:

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

从第15页开始:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14057224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档