ANTLRWorks:
1.5rc1 (1.4.3からアップデート案内された)
http://www.antlr.org/download.html
Runtime:
Antlr3.Runtime.dll 3.4.1.9004
http://www.antlr.org/wiki/display/ANTLR3/Antlr3CSharpReleases
(以下3つはもしかするとAntlr3.Tuntime.dllに一本化されて不要かも)
antlr.runtime.dll 3.1.3
Antlr3.Utility.dll 3.1.3
StringTemplate.dll 3.1.3
http://www.antlr.org/download/CSharp2/
統合開発環境:
VisualStudio2012
ターゲット言語:
language=CSharp3;
書きだした***Lexer.csと***Parser.cs、ランタイムDLLをVisualStudioプロジェクトで読み込み、ビルドすると、
『名前 'HIDDEN' は現在のコンテキスト内に存在しません。』
とエラーが出ます。エラーが出ている部分は以下のようなコードで
_channel=HIDDEN;
これはANTLRWorksで{$channel=HIDDEN;}と書いていると書き出されるコードです。
デフォルトのWSルール中にありますね。
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
{$channel=HIDDEN;}と書くと、このレキサールールに当てはまったトークンは無視されるようになるそうです。
WhiteSpace? タブや改行やスペースなので、無視する設定になってるのは当然ですね。
しかしHIDDENだとエラーになってしまうし、HIDDENの定義はどこに行ってしまったんだと思ったら、Antlr3.Runtime.dll 3.4.1.9004では、名前が”Hidden”に変更されているようです。
public const int Hidden = 99;
エラー部分を以下にように書きなおしてあげればOKのようです。
_channel=Hidden;