- ベストアンサー
BNF記法 2重カッコを許可しない四則演算
ふと思ったのですが、2重以上の()を許可しない四則演算をBNF記法で記述できるでしょうか? たとえば、((a+b))は×です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
直感的には, 「かっこがついた部分式に対応する非終端記号」と「かっこを持たない部分式に対応する非終端記号」を作ればいいと思います. 規則がやたらと増加するので書く気にはなれないんですが.
その他の回答 (1)
- gyokuto_tk
- ベストアンサー率66% (8/12)
回答No.2
単に、式全体に()を付けた場合を別の状態に飛ばして、 <PExp> ::= ( <Exp> ) <Exp> ::= <Num> | <Exp> + <Exp> | <Exp> + <PExp> | <PExp> + <Exp> | <PExp> + <PExp> としては駄目でしょうか? この場合、式全体に無用な()が付いた 『(a + b)』などは式Expではなくなります。 が、もう1段設けて、上のPExpかExpが式である、 とすれば『(a + b)』を式とする定義も書けますし。
質問者
お礼
ご回答ありがとうございます。 この方法で出来そうですね。 ただ、#1の方がおっしゃるとおり規則がかなり増えてしまうのが悩みの種です。
お礼
ご回答ありがとうございます。 なるほど、やってみます。