0

私が理解していないかなり基本的な何かがあると思います。次の文法は非常に単純に思えます。ルール「解析」から始めて、あいまいになる可能性があるものはあまりないように思えます。しかし、以下にリストされているエラーが発生します。誰かが最初のエラーを解釈することさえできれば、それは役に立ちます。

その意図は、'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

4

1 に答える 1

1

firstlast は NAME だけに一致するか、NAME NAME に一致する可能性がありますが、name に一致し、name が firstlast と name の後に一致しない場合は、パースで一致する可能性があります。それはあなたが始めるためのヒントです:)

于 2012-12-18T16:27:59.017 に答える