2010-12-03 4 views
1

ゲームプロジェクトでは、直接実行できる仮想マシンコードに変換するスクリプト言語が含まれています。私は以下の文法を含んでいます。すべてのレクサールールが構文図で正しく表示されていますが、パーサールールのボディをクリックすると、特定のパーサールールXに対して「ルールを表示できません」X「開始ステータスが見つからないため」が表示されます。AntlrWorksと言語文法のエラー

なぜ私はANTLRが開始状態を持たないと不平を言っているのか本当に分かりません。文法は他のパーサー規則では参照されないコードラインから明白に開始する必要があります。また、右上のボックスは緑色で、構文エラーがないことを示しています。

私は、ANTLRv3サンプル文法のダウンロードで提供されている他の掲示板のポストや文法の多くをコーディングしましたが、ANTLRにパーサールールのどれかを示す特別なコードはありません開始状態。私は単純なものが壊れているように感じますが、私はまさにそれが何であるかについての難局です。

何かアドバイスや援助をいただければ幸いです。たとえそれが「これを読んでください」という行に沿っているだけであっても。

+0

助けてください。私はまだそれを理解することはできません。 –

答えて

2

ANTLR 3.xを使用していると仮定します。

すべてのこと:

options { 
    paraphrase = ...; 
} 

ものがある(私の知る限り)古いANTLR 2構文は - それを削除してみてください。あなたのcommentルールでも

、その !

comment 
    : !(DIGIT | LETTER | SPACE)* 
    ; 

ツリー書き換えオペレータsee the cheat sheet)です。しかし、それはあなたが持っているときにのみ働きます:

options { 
    output=AST; 
} 

あなたの文法で(あなたはしません)。したがって、あなたのcommentルールからその!も削除してください。リテラル!と一致させたい場合を除き、その場合は一重引用符で囲む必要があります。

comment 
    : '!' (DIGIT | LETTER | SPACE)* 
    ; 
関連する問題