私は BNF 文法を解析する必要がある学校のプロジェクトに取り組んでいます。パイプ文字 (|) (これは「または」を意味すると私は信じています) が規則の中でどのような役割を果たしているのか、少し混乱しています。
たとえば、次のものがあったとします。
<a> ::= b c d | e f g
| 端末はどれですか。に適用されます?グループ化に括弧を使用すると、「または」がどのように適用されるかを説明できますか?
(bcd) | (efg)
(bc) (d) | (e) (fg)
です | 端末のセット全体、または |? の隣の 2 つだけに適用されます。
そして、次のような設定があったとしたらどうでしょうか:
<a> ::= b | <c> <d>
<b> ::= e | f
<c> ::= g | h
<c>
非終端記号を参照している場合でも、それは真実でしょう<d>
か? 何に | この場合適用されますか?