关于Java 10语法规范的困惑(FieldAccess似乎是错误的)

时间:2018-07-13 06:54:55

标签: java grammar language-specifications

我正在研究一些语法树同步工具,并尝试为一小部分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 个答案:

没有答案