3、ANTLR解析器:原理、歧义处理与应用构建

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 规则的解析类似于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值