ANTLRメモ
options { language="CSharp"; //出力言語の種類を指定。 namespace="Parser"; //生成されたクラス群が属するnamespaceを指定。 } class ExprParser extends Parser; //パーサ定義の開始 options { //オプション定義。http://www.antlr.org/doc/options.html参照 } expr //rule name returns [int result=0] //ルールがかえす値 {int x;} //初期化時に実行される文 : result=mexpr //マッチしたルールの値を変数に代入する (PLUS x=mexpr {result += x;} //ルールにマッチするたびに実行される文 |MINUS x=mexpr {result -= x;} ) *; //ルールの記法についてはhttp://www.antlr.org/doc/metalang.html#_bb2参照 class ExprLexer extends Lexer; //レキサ定義の開始 options { charVocabulary='\u0000'..'\u007F'; //レキサが受理する文字集合を指定できる //... } LPAREN: '('; //トークン定義 RPAREN: ')' {Console.WriteLine("rparen");}; //トークンにマッチしたとき実行する文