私はantlr3.4でEclipseにantlrIDEを使用しており、命題論理で使用する次の組み合わせ文法を作成しました
grammar Propositional;
options {
language = Java;
}
@header {
package antlr;
}
@lexer::header {
package antlr;
}
formula:expression;
term
: ATOM
| '(' expression ')'
;
negation
: ('~')* term
;
and
: negation (('^') negation)*
;
or
: and (('|') and)*
;
implies
: or (('>') or)*
;
expression
: implies (('#') implies)*
;
ATOM : 'a'..'z'+;
WS : (' ' | '\t')+ {$channel = HIDDEN;};
保存すると、ビルドが成功し、インタープリターは希望どおりに機能しますが、生成されるレクサーとパーサーには、throwステートメントの欠落やコンストラクターの誤りなどの多くの問題があります。
どんな助けでも大歓迎です、ありがとう!