3

私はパーサーなどから始めたばかりで、いじっていたゲーム用に独自の小さな論理言語を構築しようとしています。私はマシンに ANTLR4 をセットアップし、テスト コードを問題なく実行しました。

grun Hello r -gui

適切な出力を得ることができました。

ただし、次の文法をコンパイルして実行しようとすると

grun garden expr -gui

私は得る

NoClassDefFoundError: gardenLexer (間違った名前: parser/gardenLexer)

フォルダ内に gardenLexer.class が存在するのですが、なぜかANTLRから見えないようです。

grammar garden;

@header
{
package parser;
}

expr
      : '(' expr ')'
      | 'not' expr
      | expr 'and' expr
      | expr 'xor' expr
      | expr 'or' expr
      | 'exactly' INT property
      | 'atleast' INT property
      | 'atmost' INT property
      | 'exists' INT property
      | property 'adjacent' property
      | property 'leftof' property
      | property 'rightof' property
      | property 'above' property
      | property 'below' property
      ;

property
      : SIZE
      | COLOR
      | TYPE
      | SIZE COLOR
      | SIZE TYPE
      | COLOR TYPE
      | SIZE COLOR TYPE
      | 'water'
      | 'any'
      ;

WS
      : [ \t\n\r]+ -> skip;
INT
      : '0'..'9'+;
TYPE
      : 'stone'
      | 'statue'
      | 'plant'
      ;

COLOR
      : 'black'
      | 'white'
      | 'gray'
      ;

SIZE
      : 'small'
      | 'large'
      ;
4

1 に答える 1

4

Antlr で生成されたクラスがパッケージに属している場合は、grun を次のように呼び出す必要があります。

grun *packageName*.garden expr -gui

「クラス」フォルダから(ソースではありません)

于 2015-01-19T21:15:15.637 に答える