假设我有:
void ProdRule() : {}
{
(NonTerminal() OtherNonTerminal())
}
括号里是什么:
(NonTerminal() OtherNonTerminal())
吝啬的?
就像在数学表达式或普通编程语言中一样,括号可用于将子表达式组合在一起,这与使用普通运算符优先级所得到的不同。
例如,如果你有这个:
A() B() | C()
这意味着“'A 后跟 B' 或 C”,而这个:
A() (B() | C())
而是意味着“A 后跟'B 或C'”。
括号也需要使用后缀运算符,例如*
,+
或?
并确定这些运算符适用于语法的哪些部分。例如:
A() (B())*
将意味着“一个 A,然后是零个或多个 B”,而这:
(A() B())*
将意味着“零次或多次出现 'A 后跟 B'”。
在您的示例中,括号根本不做任何事情,可以删除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句