3

私は 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>か? 何に | この場合適用されますか?

4

2 に答える 2

4

一般に、

rule := a b c | d e f

としてグループ化されます

rule := (a b c) | (d e f)

これは、端末または非端末に適用するかどうかは変わりません。

于 2012-07-20T04:42:56.597 に答える
0

http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Formを参照

| 表示できます。最も優先度の低い演算子として。

于 2012-07-20T04:47:01.573 に答える