Java grammar定义ModifiersOpt: { Modifier }
。 Modifier
被定义为public, protected, private, static
之一.... {x}
表示x
出现零次或多次。
我们知道public public
不是有效的标识符。这是否意味着Modifier
列表中的任何元素(例如public
)在{Modifier}
中仅显示一次? { Modifier }
是否有任何“标准”解析器组合器?
答案 0 :(得分:2)
并非Java程序中的所有错误都是语法错误。例如public private
之类的错误可能(正如您所发现的那样)被视为语义错误。
作为另一个例子,我打赌语法也允许,例如
int i = "type error";
尽管如此,它还不是Java代码的有效片段。
答案 1 :(得分:2)
修饰符可以出现零次或多次。正如aioobe所述,虽然语法上可接受,但public private
在语义上是无效的。有许多小的情况严格按照语法很好,但编译器不允许。
下面的语法使用以下内容 BNF风格的约定:
{x}表示零次或多次出现 x。