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");}; //トークンにマッチしたとき実行する文