うまくいけば、これがこの問題を解決するのに役立つ適切な量の情報です。
次のANTLR3構文が与えられた場合
grammar mygrammar;
program : statement* | function*;
function : ID '(' args ')' '->' statement+ (','statement+) '.' ;
args : arg (',' arg)*;
arg : ID ('->' expression)?;
statement : assignment
| number
| string
;
assignment : ID '->' expression;
string : UNICODE_STRING;
number : HEX_NUMBER | INTEGER ( '.' INTEGER )?;
// ================================================================
HEX_NUMBER : '0x' HEX_DIGIT+;
INTEGER : DIGIT+;
fragment
DIGIT : ('0'..'9');
パーサーで問題を引き起こしている行は次のとおりです。
my_function(x, y, z -> 42) -> 10001.
ANTLRWorks は、10001 の後の最後のエラーを次のエラーの問題として赤で強調表示します。 .
これを投げないようにするにはどうすればよいorg.antlr.runtime.EarlyExitException
ですか?
これは、パーサー ルールと をEOL 区切り文字としてnumber
使用しようとするあいまいさが原因であると確信しています。.