BNF括号和管道

时间:2016-10-20 22:08:20

标签: yacc

在Backus-Naur表格中:

print_stmt : "print" (string | expr)+

匹配:

print string

print expr

print (string)

print (expr)

我不确定括号是否必须在那里。

1 个答案:

答案 0 :(得分:0)

它将匹配前两个选项中的任何一个,以及许多其他可能性。

在这种BNF方言中,括号似乎是元字符。 +可能意味着先前单位中的“一个或多个”,但如果)重复一次或多次,那么这将是一种非常不寻常的语言。如果没有+,那么任何一种解释都是合理的,我无法给出自信的答案;你必须回去找到你正在解释的BNF方言的规范。

由于+,这也应该有效:

print string string expr string