Путаница в спецификации грамматики Java 10 (FieldAccess кажется неправильным)

Я работаю над некоторыми инструментами синхронизации синтаксического дерева и пытаюсь написать синтаксический анализатор для небольшого подмножества Java; Я запутался в спецификации грамматики Java 10 и считаю, что определение FieldAccess неправильно.

На мой взгляд, грамматика FieldAccess это что-то вроде obj.x, в котором obj это идентификатор (или что-то похожее).

Но похоже, что грамматика для FieldAccess не может производить obj.x

FieldAccess:
Primary . Identifier 
super . Identifier 
TypeName . super . Identifier

потому что определение Primary является

Primary:
PrimaryNoNewArray 
ArrayCreationExpression

в котором ни один из нетерминалов не может быть Identifier,

Я верю грамматике для FieldAccess должно быть
PostfixExpression . Identifier,
где PostfixExpression нетерминальный "один слой выше, чем Primary":

PostfixExpression:
Primary 
ExpressionName 
PostIncrementExpression 
PostDecrementExpression

Чтобы ExpressionName может в конечном итоге произвести идентификатор по желанию

ExpressionName:
Identifier
AmbiguousName . Identifier

Может ли кто-нибудь дать мне несколько комментариев, или любезно сказать мне подходящее место, чтобы сообщить об этой проблеме?
Я могу только найти место для сообщения об ошибках в реализациях платформы Java, но вряд ли место для сообщения об ошибках в спецификации языка.

0 ответов

Другие вопросы по тегам