3

Java文法は を定義しますModifiersOpt: { Modifier }Modifierpublic, protected, private, staticetc の 1 つとして定義されます ....の{x}0 回以上の出現を示しますx

public public有効な識別子ではないことがわかっています。Modifierリストの任意の要素(例: public) が に1 回しか表示されないということ{Modifier}ですか? の「標準」パーサーコンビネーターはあり{ Modifier }ますか?

4

2 に答える 2

2

Java プログラムのすべてのエラーが構文エラーであるとは限りません。public privateたとえば、(あなたが発見したように)のようなエラーは、意味論的エラーと見なされる場合があります。

別の例として、たとえば、文法も許可されているに違いない

int i = "type error";

それでも、これは Java コードの有効なスニペットではありません。

于 2011-01-21T14:04:32.260 に答える
2

修飾子は 0 回以上表示できます。aioobeが言ったようにpublic private、たとえば、構文的には受け入れられますが、意味的には無効です。文法上は厳密に問題なくても、コンパイラによって許可されていない小さな状況がたくさんあります。

以下の文法では、次の BNF スタイルの規則を使用しています。

{x} は、x が 0 回以上出現することを示します。

于 2011-01-21T14:07:31.260 に答える