2011-01-21 55 views
3

Java grammar定义了ModifiersOpt: { Modifier }Modifier定义为public, protected, private, static等之一...... {x}表示零次或多次出现x关于Java语法中修饰符的问题

我们知道public public不是一个有效的标识符。这是否意味着Modifier列表中的任何元素(例如public)仅出现一次{Modifier}?是否有用于{ Modifier }的任何“标准”解析器组合器?

回答

2

并非Java程序中的所有错误都是语法错误。例如public private等错误可能(如您所发现的)被视为语义错误。

再举一个例子,我敢打赌,语法也允许,例如

int i = "type error"; 

不过,虽然,它不是Java代码的有效片段。

+0

这实际上是有效的Java。 (首先`i`是一个字段。) – 2011-01-21 15:59:30

2

修饰符可以出现零次或多次。正如aioobe所说,虽然语法上可以接受,但例如public private在语义上是无效的。有许多小的情况严格按照语法进行,但编译器不允许。

下面的语法使用以下 BNF式约定:

{X}表示零个或多个 x的。