我正在开发一些语法树同步工具,并尝试为一小部分 Java 编写解析器;我对 Java 10 语法规范感到困惑,并认为 的定义FieldAccess是错误的。
在我看来, of 的语法FieldAccess类似于obj.x,其中obj是一个标识符(或类似的东西)。
但似乎 for 的语法FieldAccess不能产生obj.x
FieldAccess:
Primary . Identifier
super . Identifier
TypeName . super . Identifier
因为的定义Primary是
Primary:
PrimaryNoNewArray
ArrayCreationExpression
其中两个非终结符都不能是Identifier。
FieldAccess我相信应该的语法是
PostfixExpression . Identifier,非终结符'比'高一层'
在哪里:PostfixExpressionPrimary
PostfixExpression:
Primary
ExpressionName
PostIncrementExpression
PostDecrementExpression
这样ExpressionName最终可以根据需要生成标识符
ExpressionName:
Identifier
AmbiguousName . Identifier
谁能给我一些意见,或者告诉我一个合适的地方来报告这个问题?
我只能在 Java 平台的实现中找到报告错误的地方,而在语言规范中几乎找不到报告错误的地方。