我正在做一个需要我解析 BNF 语法的学校项目。对于管道字符(|)(我认为它的意思是“或”)在规则中扮演的角色,我有点困惑。
例如,如果我有以下内容:
<a> ::= b c d | e f g
哪个终端是 | 应用于?使用括号进行分组,这将描述如何应用“或”?
(bcd) | (电子表格)
(bc) (d) | (e) (fg)
是| 应用于整组终端,或者只是 |? 旁边的两个终端。
如果我有这样的设置怎么办:
<a> ::= b | <c> <d>
<b> ::= e | f
<c> ::= g | h
如果<c>
并且<d>
提到非终端,它仍然是真的吗?到什么| 在这种情况下适用吗?