我想在我的语言中添加一个关键字。
这个关键字只需要在一个特定的解析器语法规则中匹配。
由于向后兼容性,我希望允许此关键字继续用作变量名,即它可以由确定标记是否适合变量名的词法分析器规则匹配。
只要在文件中找到新规则,Lexer 就会匹配它。
解决此问题的适当方法是否可以修改 var_declaration 规则,使其匹配 IDENT 或新的 KEYWORD 令牌?
protected
modified_var_declaration:
VAR (IDENT|KEYWORD);
;
相关规则如下:
IDENT // matches variable names
options { testLiterals=true; }
: ( '_' | 'a'..'z' | 'A'..'Z' ) ( '_' | 'a'..'z' | 'A'..'Z' | DIGIT )*
;
KEYWORD: // my new keyword
"key"
;
创建变量的解析器规则是:
protected
var_declaration:
VAR IDENT;
;