【发布时间】:2015-03-16 17:08:11
【问题描述】:
假设我在 ANTLR 4 中定义了一个非常简单的语法:
input : String Separator String ;
String : 'a'..'z' ;
Separator : ',' ;
对于这个语法,分隔符是固定的;它永远是一个逗号。有没有办法使分隔符变量?也就是说,我想使用输入参数定义分隔符,该参数由调用词法分析器的代码设置。我可以像这样定义一个 getter 和 setter:
@lexer::members
{
String sep = ",";
public void setSep(String sep)
{
this.sep = sep;
}
private String getSep()
{
return sep;
}
}
但是如何更改词法分析器规则中分隔符的值?这很接近,但错误:
Separator : ',' { setText(getSep()); } ;
【问题讨论】: