ANTLR 语法开发与应用指南
1. 解析过程中的操作
在解析过程中,监听器和访问器机制能很好地将特定于应用程序的代码与语法分离,使语法更易读。但有时我们需要更多的控制和灵活性,这时可以直接在语法中嵌入代码片段(动作)。
1.1 在语法中嵌入任意动作
如果不想构建解析树的开销,可以在解析过程中即时计算值或输出内容。但这意味着要在表达式语法中嵌入任意代码,需要理解这些动作对解析器的影响以及放置位置。
为了演示语法中嵌入动作的用法,我们构建一个程序,用于从数据行中打印特定列的值。示例数据如下:
parrt
Terence Parr
101
tombu
Tom Burns
020
bke
Kevin Edgar
008
这些列由制表符分隔,每行以换行符结尾。对应的语法文件 Rows.g4 如下:
grammar Rows;
@parser::members {
int col;
public RowsParser(TokenStream input, int col) {
this(input);
this.col = col;
}
}
file: (row NL)+ ;
row
locals [int i=0]
: (
STUFF
{
$i++;
if ( $i == col
超级会员免费看
订阅专栏 解锁全文
941

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



