電子書籍の厳選無料作品が豊富!

最近質問させていただいたものですが、また分からな
いことがあり、質問させてください。
ある、アルゴリズムの問題集をやっていて、BNF記法に
従った数式を解析して計算するというものでした。

BNFの定義として、

式=項 | 式 加法演算子 項

項=因子| 項 乗法演算子 因子

因子=数

加法演算子='+'|'-'

乗法演算子='*'|'/'

となっています。

そのテキストで、例として、
項=3*4/5 というのがありました。これは理解できました。しかし、
式=1+2+3*4/5-6 というのが理解できません。

式=式 加法演算子 項 と、項=項 乗法演算子
 因子
というのを再帰的に当てはめていくのだと思うのです
が、式として成立させるのは定義からして無理だと
思うのですが。1+2+3*4/5-6を式として解釈するには
どのようにしたらよいかお教えください。よろしく
お願いいたします。

ちなみに、1+2+3*4/5-6は、問題集に載っているアルゴリズムで問題なく解けました。


 

A 回答 (1件)

式は「項」または「式 加法演算子 項」


項は「因子」または「項 乗法演算子 因子」

という定義ですから、
項は 因子(=数) になります。
式は 項 にもなります。
ですから、「式」は「項」も「因子」も含みます。

ですから、式=1+2+3*4/5-6は、

式=1(式=項=因子=数) +(加法演算子) 2(項=因子=数)
式=1+2(式) +(加法演算子) 3(項=因子=数)
式=1+2+3(式) +(加法演算子) 3*4/5(項)
式=1+2+3*4/5(式) -(加法演算子) 6(項=因子=数)

で、式=1+2+3*4/5-6 が定義どおりにならないでしょうか。
(項=3*4/5 はOKとのことですので省いてあります)

この回答への補足

すばやいご解答ありがとうございます。

式=1(式=項=因子=数) +(加法演算子) 2(項=因子=数)
式=1+2(式) +(加法演算子) 3(項=因子=数)

ここまでは分かるのですが、

式=1+2+3(式) +(加法演算子) 3*4/5(項)
がわかりません。式の3と項の3がダブっており、
1+2+3+3*4/5-6となってしまうように思うのですが。
1+2+3 と *4以降をつなげるための定義が不足している
と思うのですがどうでしょうか。

補足日時:2005/09/15 03:01
    • good
    • 0
この回答へのお礼

 >式=1+2+3(式) +(加法演算子) 3*4/5(項)

 たぶんこの部分はタイプミスで、

  式=1+2(式)+(加法演算子)3*4/5(項)

 ということですよね?

 とてもよく分かりました。どうもありがとうござい
ました。(タイプミスだと先ほど気づくべきでした。)

お礼日時:2005/09/15 03:43

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