« ソース変更終了 | Main | Xtreme Processor セミナ »

2004.04.23

JavaCC 電卓プログラム

とりあえず、動きを把握するために関数の入出力でメッセージを出してみる。

in CalcUnit()
3 + 5
in AddExpr()
in MuxExpr()
in PrmExpr()
return3 from PrmExpr()
return 3 from MulExpr()
in MuxExpr()
in PrmExpr()
return5 from PrmExpr()
return 5 from MulExpr()
return8 from AddExpr()

result= 8.
in CalcUnit()

javacc3add5.jpg

図で書くとこんな感じ。って一度Cで同じアルゴリズム書いたことあるな。この本で確認すると、再帰的下向き構文解析(recursive-descent parsing)ですね。

もうちょっと複雑にしてみよう。足し算かけ算混合の、()有り、足し算も3つ並べてみた。
3 * 2 + 2 * (3 - 1) + 2
in AddExpr()
in MuxExpr()
in PrmExpr()
return3 from PrmExpr()
in PrmExpr()
return2 from PrmExpr()
return 6 from MulExpr()
in MuxExpr()
in PrmExpr()
return2 from PrmExpr()
in PrmExpr()
in AddExpr()
in MuxExpr()
in PrmExpr()
return3 from PrmExpr()
return 3 from MulExpr()
in MuxExpr()
in PrmExpr()
return1 from PrmExpr()
return 1 from MulExpr()
return2 from AddExpr()
return2 from PrmExpr()
return 4 from MulExpr()
in MuxExpr()
in PrmExpr()
return2 from PrmExpr()
return 2 from MulExpr()
return12 from AddExpr()

result= 12.
in CalcUnit()

javacc3m2p2p.jpg


図で書くとこんな感じ。
とりあえず、四則演算はマスター。

上で紹介した、言語による最新アルゴリズム事典は良い本なので、全てのプログラマにお勧め。greedyとかN queen等のアルゴリズムの名前から、実際のアルゴリズムを調べるのには、この本がベスト。


今日のメモ
こういうのって、楽しそう。飲み屋のプログラマー談義みたいだ。
http://pc3.2ch.net/test/read.cgi/prog/1082154544/

|

« ソース変更終了 | Main | Xtreme Processor セミナ »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/18154/481155

Listed below are links to weblogs that reference JavaCC 電卓プログラム:

« ソース変更終了 | Main | Xtreme Processor セミナ »