これらの指示に従って、現在の Flash Builder 4.5.1 プロジェクトで ANTLR で生成された *.as ファイルを使用しようとしています。
したがって、このANTLR の Actionscript ランタイムをプロジェクトに追加しましたが、問題はありませんでした。
ANTLRWorksを使用してレクサー/パーサーの仕様を問題なくコンパイルしました。
ソース *.g ファイルに言語オプションを追加して、ANTLR が Actionscript ソースを生成するようにしました。
options {
backtrack = true;
memoize = true;
k=2;
output = AST;
language=ActionScript; // Added this
ASTLabelType = CommonTree;
}
残念ながら、ANTLR/ANTLRworks が生成した Actionscript コードにはバグがあります。
catch ステートメントは のように読みますcatch (RecognitionException re)
が、次のように読む必要があります: catch ( re:RecognitionException )
。
さらに、Flash Builder はここで Array の使用について不平を言います:
public override function get tokenNames():Array { return PhpParser.tokenNames; }
誰かがこれらの問題を確認し、おそらくそれらを解決する方法のヒントを提供できますか?
更新-1
ANTLR v3.3 のソースをざっと見てみると、このテンプレート コード [142 行目 @ ActionScript.stg] が明らかになりました。
catch ( re:RecognitionException )
したがって、現在の 3.3 ブランチは正しい構文を認識しているようです。
残念ながら、3.3 ブランチを含む現在の ANTLRworks 1.4.2 は失敗します。