私が理解していないかなり基本的な何かがあると思います。次の文法は非常に単純に思えます。ルール「解析」から始めて、あいまいになる可能性があるものはあまりないように思えます。しかし、以下にリストされているエラーが発生します。誰かが最初のエラーを解釈することさえできれば、それは役に立ちます。
その意図は、'Mr. ジョン・スミス三世とジェーン・スミス夫人」または「スミス、ジョン」。
parse
: name+ EOF
;
// match Mr. John or Smith,
name
: NAMESEP? SALUTATION* NAME (firstlast | lastcommafirst)
;
// match Smith III
firstlast
: INITIAL? NAME+ COMMA? title*
;
// match John
lastcommafirst
: COMMA SALUTATION* NAME+ COMMA? title*
;
// match III
title
: TITLE COMMA?
;
警告 (200): /NameParser.g:23:16: 決定は、複数の選択肢を使用して「NAME」などの入力と一致する可能性があります: 1、2
結果として、代替手段 2 はその入力警告 (200) に対して無効になりました: /NameParser.g:27:25: 決定は、「名前 COMMA SALUTATION NAME COMMA SALUTATION NAME {EOF, NAME, SALUTATION.. TITLE, NAMESEP}" 複数の選択肢を使用: 1、2
結果として、代替手段 2 はその入力警告 (200) に対して無効になりました: /NameParser.g:27:25: Decision can match input such as "NAME {EOF, NAME, SALUTATION..TITLE, NAMESEP}" using複数の選択肢: 1、2
結果として、代替手段 2 はその入力警告 (200) に対して無効になりました: /NameParser.g:27:25: Decision can match input such as "NAME COMMA SALUTATION NAME {NAME, INITIAL}" using multiple alternatives: 1 、 2