我正在研究一些语法树同步工具,并尝试为一小部分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平台的实现中,我只能找到报告错误的地方,而在语言规范中却找不到报告错误的地方。