ANTLR解析器:原理、歧义处理与应用构建
1. 解析器的实现
ANTLR工具能根据语法规则生成递归下降解析器,比如根据 assign 规则生成相应的解析器。递归下降解析器本质上是一系列递归方法,每个规则对应一个方法。解析过程从解析树的根节点开始,逐步向叶子节点(标记)推进。最初调用的规则,即起始符号,会成为解析树的根节点。
1.1 递归下降解析器示例
以下是ANTLR为 assign 规则生成的方法:
// assign : ID '=' expr ';' ;
void assign() {
// method generated from rule assign
match(ID);
// compare ID to current input symbol then consume
match('=');
expr();
// match an expression by calling expr()
match(';');
}
递归下降解析器的调用图与解析树的内部节点相对应, match() 方法的调用对应解析树的叶子节点。若要手动构建解析树,可在每个规则方法开始处插入“添加新子树根节点”操作,并在 match() 方法中添加“添加新叶子节点”操作。
1.2 解析决策
stat 规则的解析类似于
超级会员免费看
订阅专栏 解锁全文
2517

被折叠的 条评论
为什么被折叠?



