我想爲我的語言添加關鍵字。Antlr中是否有一種機制允許詞法分析器僅在特定規則期間匹配令牌?
這個關鍵字只需要在一個特定的語法分析器語法規則中匹配。
由於向後兼容,我希望允許此關鍵字繼續作爲變量名稱使用,即它可以通過詞法分析器規則進行匹配,該規則確定令牌是否適合變量名稱。
只要在文件中找到,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;
;
適合我。 – chollida 2009-10-25 05:41:34