1
私はANTLR文法に問題があり、今は1時間以上それを把握しようとしています。私はこの単純な文法までの私の問題を剥奪:ANTLR文法の問題
grammar TestGrammar;
options {
language = Java;
k=2;
}
compu_method : '/begin COMPU_METHOD' NAME NAME NAME NAME
(
(formula)
|('COEFFS' realnumber realnumber realnumber realnumber realnumber realnumber)
)*
'/end COMPU_METHOD';
formula : '/begin FORMULA' (.)* '/end FORMULA';
realnumber: (INT | FLOAT);
NAME : LETTER (LETTER|'0'..'9'|'['|']'|'.')* ;
fragment LETTER : 'A'..'Z' | 'a'..'z' | '_' ;
INT : MINUS? ('0' | '1'..'9' '0'..'9'*) ;
FLOAT : MINUS? ('0'..'9')+ '.' ('0'..'9')* Exponent? | MINUS? '.' ('0'..'9')+ Exponent? | MINUS? ('0'..'9')+ Exponent ;
MINUS : '-' ;
fragment Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
WS : ('\r\n'|'\n'|' '|'\r'|'\t'|'\u000C') { $channel=HIDDEN;};
そして、私は一致しようとしています入力は次のとおりです。
/begin COMPU_METHOD
foo
foo
foo
foo
COEFFS 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000
/end COMPU_METHOD
インタプリタはいつも私に「不一致入力 『COEFFS』期待して 『\ u0005』を与えます"
なぜですか?
私の文法で(式)と( 'COEFFS' ...)の順序を変更しても問題ないのですか?
インタープリタの代わりにデバッガを正確に使用するにはどうすればよいですか? – metacircle
ANTLRWorksを使用していると仮定して、 'CTRL + D'を押します。 Eclipse用のANTLRプラグインを使用している場合(ANTLRWorks、AFAIKのインタプリタとデバッガコンポーネントを使用):わかりません。 –