括号在JavaCC中是什么意思?

时间:2018-10-28 17:36:28

标签: java recursion compiler-construction javacc

让我说:

void ProdRule() : {}
{
    (NonTerminal() OtherNonTerminal())
}

括号内的内容是什么

(NonTerminal() OtherNonTerminal())

是平均值?

1 个答案:

答案 0 :(得分:2)

与数学表达式或常规编程语言一样,括号可用于将子表达式分组在一起,而不是使用常规运算符优先级将子表达式分组。

例如,如果您有以下内容:

A() B() | C()

这意味着“ A后面跟B或C”,而这是

A() (B() | C())

相反,它的意思是“ A后跟'B或C'”。

还要求括号使用后缀运算符,例如*+?,并确定这些运算符适用于语法的哪些部分。例如:

A() (B())*

表示“一个A,后跟零个或多个Bs”,而这表示:

(A() B())*

表示“零个或多个'A后跟B'”。

在您的示例中,括号根本不做任何事情,可以删除。