- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:BNF記法について)
BNF記法とは?式の解釈方法について
このQ&Aのポイント
- BNF記法について質問があります。アルゴリズムの問題集で、BNF記法に従った式を解析して計算する方法を学んでいます。
- BNF記法の定義には、式、項、因子、加法演算子、乗法演算子があります。式は項または式と加法演算子と項で構成されます。項は因子または項と乗法演算子と因子で構成されます。
- 項=3*4/5については理解できましたが、式=1+2+3*4/5-6については理解できません。再帰的に式と項を当てはめることで式を解釈する方法を教えてください。
- みんなの回答 (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+3(式) +(加法演算子) 3*4/5(項) たぶんこの部分はタイプミスで、 式=1+2(式)+(加法演算子)3*4/5(項) ということですよね? とてもよく分かりました。どうもありがとうござい ました。(タイプミスだと先ほど気づくべきでした。)
補足
すばやいご解答ありがとうございます。 式=1(式=項=因子=数) +(加法演算子) 2(項=因子=数) 式=1+2(式) +(加法演算子) 3(項=因子=数) ここまでは分かるのですが、 式=1+2+3(式) +(加法演算子) 3*4/5(項) がわかりません。式の3と項の3がダブっており、 1+2+3+3*4/5-6となってしまうように思うのですが。 1+2+3 と *4以降をつなげるための定義が不足している と思うのですがどうでしょうか。