dポイントプレゼントキャンペーン実施中!

ふと思ったのですが、2重以上の()を許可しない四則演算をBNF記法で記述できるでしょうか?
たとえば、((a+b))は×です。

A 回答 (2件)

直感的には, 「かっこがついた部分式に対応する非終端記号」と「かっこを持たない部分式に対応する非終端記号」を作ればいいと思います.


規則がやたらと増加するので書く気にはなれないんですが.
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほど、やってみます。

お礼日時:2007/06/14 18:12

単に、式全体に()を付けた場合を別の状態に飛ばして、



<PExp> ::= ( <Exp> )
<Exp> ::= <Num> | <Exp> + <Exp> | <Exp> + <PExp> | <PExp> + <Exp> | <PExp> + <PExp>

としては駄目でしょうか?

この場合、式全体に無用な()が付いた
『(a + b)』などは式Expではなくなります。

が、もう1段設けて、上のPExpかExpが式である、
とすれば『(a + b)』を式とする定義も書けますし。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
この方法で出来そうですね。
ただ、#1の方がおっしゃるとおり規則がかなり増えてしまうのが悩みの種です。

お礼日時:2007/06/14 18:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!