私の言語にキーワードを追加したいと思います。
このキーワードは、1 つの特定のパーサー文法規則でのみ一致する必要があります。
下位互換性のため、このキーワードを引き続き変数名として使用できるようにしたいと思います。つまり、トークンが変数名に適しているかどうかを判断するレクサー規則に一致させることができます。
レクサーは、新しいルールがファイル内で見つかるたびに一致させます。
IDENT または新しい KEYWORD トークンのいずれかに一致するように var_declaration ルールを変更するために、これを回避する適切な方法はありますか?
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;
;