括号在JavaCC中是什么意思?

括号在JavaCC中是什么意思?,java,recursion,compiler-construction,javacc,Java,Recursion,Compiler Construction,Javacc,假设我有: void ProdRule() : {} { (NonTerminal() OtherNonTerminal()) } 括号里有什么意思: (NonTerminal() OtherNonTerminal()) 意思?就像在数学表达式或普通编程语言中一样,可以使用括号将子表达式分组在一起,这与使用普通运算符优先级时得到的结果不同 例如,如果您有: A() B() | C() 这意味着“A后面跟着B”或C”,而: A() (B() | C()) (A() B())* 而

假设我有:

void ProdRule() : {}
{
    (NonTerminal() OtherNonTerminal())
}
括号里有什么意思:

(NonTerminal() OtherNonTerminal())

意思?

就像在数学表达式或普通编程语言中一样,可以使用括号将子表达式分组在一起,这与使用普通运算符优先级时得到的结果不同

例如,如果您有:

A() B() | C()
这意味着“A后面跟着B”或C”,而:

A() (B() | C())
(A() B())*
而是指“A后跟‘B或C’”

使用后缀运算符(如
*
+
)时,还需要使用括号,并确定这些运算符应用于语法的哪些部分。例如:

A() (B())*
表示“一个A,后面跟着零个或多个B”,而:

A() (B() | C())
(A() B())*
这意味着“零次或多次出现‘A后跟B’”


在您的示例中,括号根本不起任何作用,可以删除。

文档中没有详细说明这一点吗?您不认为此处有指向文档的链接吗?文档位于此处。如果括号后面没有
+
*
,则没有具体说明括号的含义(或者说缺少含义)。