关于Java语法中的修饰符的问题

时间:2011-01-21 13:59:58

标签: java parsing grammar parser-combinators

Java grammar定义ModifiersOpt: { Modifier }Modifier被定义为public, protected, private, static之一.... {x}表示x出现零次或多次。

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

2 个答案:

答案 0 :(得分:2)

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

作为另一个例子,我打赌语法也允许,例如

int i = "type error";

尽管如此,它还不是Java代码的有效片段。

答案 1 :(得分:2)

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

  

下面的语法使用以下内容   BNF风格的约定:

     

{x}表示零次或多次出现   x。