Вопрос о Модификаторе в грамматике Java - PullRequest
3 голосов
/ 21 января 2011

Java грамматика определяет ModifiersOpt: { Modifier }. Modifier определяется как один из public, protected, private, static и т.д .... {x} обозначает ноль или более вхождений x.

Мы знаем, что public public не является допустимым идентификатором. Означает ли это, что любой элемент списка Modifier (например, public) появляется только один раз в {Modifier}? Есть ли «стандартный» парсер комбинатор для { Modifier }?

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Модификаторы могут появляться ноль или более раз. Как сказал aioobe , хотя синтаксически приемлемо, например, public private семантически недопустимо. Существует множество небольших ситуаций, которые подходят строго в соответствии с грамматикой, но не допускаются компилятором.

Грамматика ниже использует следующее Соглашения в стиле БНФ:

{x} обозначает ноль или более вхождений из х.

2 голосов
/ 21 января 2011

Не все ошибки в Java-программе являются синтаксическими ошибками.Ошибка типа public private, например, может (как вы обнаружили) рассматриваться как семантическая ошибка.

В качестве другого примера, я уверен, что грамматика также допускает, например,

int i = "type error";

Тем не менее, это не правильный фрагмент кода Java.

...