命題論理のために Antlr で BNF Grammar を作成しようとしていますが、エラーが発生し続けます:
java.lang.NoSuchFieldError: offendingToken
行番号が表示されていないので、どこにエラーがあるのかわかりません。ビルドは成功しましたが、入力例を入力すると、ツリーは文で停止します。これは、BNF で定義された最初の項目です。
ここに私のBNFがあります:
grammar Grammar;
options {
language = Java;
output = AST;
ASTLabelType=CommonTree;
}
@header {
package antlr;
}
@members {
}
@lexer::header { //lexer
package antlr;
}
@lexer::members {
}
sentence: atomicsentence | complexsentence;
atomicsentence: 'T' | 'F' | symbol;
complexsentence: unop sentence | sentence binop sentence | (sentence);
unop: 'NOT';
binop: 'AND' | 'OR' | 'IMPLIES' | 'EQUIVALENT';
symbol: (LEXRULE)+;
LEXRULE: ('a'..'z')|('A'..'Z');
文中の complexsentence をコメントアウトすると、atomicsentence 部分は EOF がないため終了するまで機能します。文に追加してもうまくいかないので、どこに行けばいいのかわかりません。