相关疑难解决方法(0)

Java7规范中的语法是否真的相同?

JLS v7 第18章中的语法似乎与文档中其他地方的结构不同,但对我来说似乎存在差异.特别是在第15章中,规则是:

RelationalExpression:
  ShiftExpression
  RelationalExpression < ShiftExpression
  RelationalExpression > ShiftExpression
  RelationalExpression <= ShiftExpression
  RelationalExpression >= ShiftExpression
  RelationalExpression instanceof ReferenceType
Run Code Online (Sandbox Code Playgroud)

这使得foo instanceof Bar一个RelationalExpression(因此也就是一个EqualityExpresson)可以在EqualityExpression规则中用作LHS,该规则产生foo instanceof Bar == false一个EqualityExpression.

但是在查看第18章中的语法时,他们对它进行了简化:

Expression2:
  Expression3 [Expression2Rest]

Expression2Rest:
  { InfixOp Expression3 }
  instanceof Type
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,这意味着我们可以将Expression3二进制运算符链接在一起,或者我们可以检查一个类型Expression3.具体现在foo instanceof Bar是一个Expression2,但我没有看到使用Expression2平等比较的LHS 是有效的.

我是否错过了第18章的语法中的某些内容foo instanceof Bar == false?请注意,根据第15章中的规则并根据我的编译器,它是一个有效的表达式.

java grammar language-lawyer java-7

13
推荐指数
1
解决办法
341
查看次数

标签 统计

grammar ×1

java ×1

java-7 ×1

language-lawyer ×1