Hello Worldをこえて

プログラマとして生き残るための備忘録

電卓の作成 (その2)

 前回の電卓の作成では、「+」「ー」を処理する構文木を作成し、構文木から中間言語の出力、C言語の出力、インタプリタのように順次計算する処理を実装した。

 次に「 * 」「 / 」と括弧の優先度に対応した計算処理を実装した。
前回実装時に参考にしたサイトは理論は理解できるが、いきなりコードに落とし込むには少し分かりにくかった。そこで、下記サイトを参考に、まずは構文木を作成せずに順次計算する処理を実装した。

 

構文解析 Howto

構文解析 - アルゴリズム講習会

 

 それで作成したコードがこれ。

github.com

 

 作成中に気づいたが電卓の内部処理は「逆ポーランド記法」に変換される。そもそも、wiki に「プログラミング初心者の練習課題として、逆ポーランド記法の電卓を作ることがよく行われる。」と書かれていた。

 

 次は、今回作成した処理から、「 * 」「 / 」括弧の優先度に対応した、中間言語を作成する処理を実装する。