2

これらの指示に従って、現在の 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 は失敗します。

4

1 に答える 1

1

ANTLR のプロジェクト リーダーである Terence Parr は、ANTLRworks には新しいコンパイルが必要であることを確認しました。素晴らしいサポートをありがとう!

于 2011-06-22T23:37:15.290 に答える