22、ANTLR解析器规则与属性的深入解析

ANTLR解析器规则与属性的深入解析

1. 解析器规则基础

解析器由一组解析器规则构成,这些规则可以存在于解析器语法或组合语法中。在Java应用里,通过调用ANTLR生成的与所需起始规则相关的规则函数来启动解析器。

最基本的规则是规则名后接单个以分号结尾的可选分支。示例如下:

/** Javadoc comment can precede rule */
retstat : 'return' expr ';' ;

规则也可以有多个由 | 运算符分隔的可选分支。例如:

stat:
retstat
|
'break' ';'
|
'continue' ';'
;

可选分支可以是规则元素列表,也可以为空。下面是一个包含空可选分支的规则,使整个规则变为可选:

superClass
:
'extends' ID
|
// empty means other alternative(s) are optional
;
2. 可选分支标签

使用 # 运算符为规则的最外层可选分支添加标签,能获得更精确的解析树监听器事件。规则内的所有可选分支要么都添加标签,要么都不添加。示例如下:

grammar AltLa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值