電卓作成ちうのつづき...
逆ポーランド電卓は実装簡単だけどいかんせん馴染みが薄いので
フツーの数式を解釈して計算する電卓をおまけにこしらえてます。
# ぶっちゃけ尺余り対策ですなwww
(1+2)*(3+4) なんてー数式の解釈(構文解析)にはパーサを使うわけですが、
手書きすんのもかったるい。なので パーサ・ジェネレータ を探してました。
Visual Studio 2008 SDK には C#版 yacc/lex である GPPG,GPLEX が同梱
されてんだけども、こいつらマニュアルぺらぺらのロクでもない代物。
ってわけで、オーストラリア クイーンズランド工科大の
オリジナルな GPPG,GPLEX を見つけてきたですよ。
今回はパーサだけでいい(レキサはテケトー)から GPPG1.3.5 を試運転。
gppg Calc.y > Calc.cs
csc /r:QUT.ShiftReduceParser.dll Calc.cs
# QUT.ShiftReduceParser.dll は gppg.exe と同じディレクトリ: binaries にある。
# 上の Calc.y は testfiles にあったもの。
# ちなみに RealCalc.y には些細なバグをふたつ見つけた。
# ↑PLAS-projectに報告済
...おー、動く動く♪
よーしパパ電卓作っちゃうぞー、とか言ってるの。もう見てらんない。
![](http://episteme.wankuma.com/image/chaahan.gif)
チャーハンじゃないってヴぁ...