コンソールからテキストを読み取り、いくつかの操作を行い、文字列を返す小さな csharp コンソール アプリケーションを作成しています。このために、Antlr を使用しています。文法ファイルを以下に示します。
grammar test;
options {
language = CSharp2;
output = AST;
}
start returns [String res]: expression EOF
{
$res=$expression.res;
} ;
expression returns [String res]
: Identifier {$res=$Identifier.text}
|Num {$res=$num.text;
|function {$res=function.res}
;
function: 'left' '( Identifier ')'{some code here}
| 'right' '( Identifier ')'{some code here}
|..........
;
Num : (Minus)?('0'..'9')+ ;
Identifier : ('a'..'z'|'A'..'Z'|'\\'|'/'|'_'|':'|';'|'?'|'.'|'0'..'9')('a'..'z'|'A'..'Z'|'\\'|'/'|'_'|':'|';'|'.'|'?'|'0'..'9')*;
いくつかの文字列操作を行うそのような関数がいくつかあります。ここで、大文字と小文字に関係なく、これらの関数名を Antlr に識別させたいと思います。現在のところ、upper(asdf) のような関数名として小文字のみを受け入れます。識別子の大文字と小文字も変更されるため、アプリケーションですべてのトークンを小文字に変換することはできません。どうすればこれを達成できますか?