flexとbisonで電卓を作るのメモ

「自力で字句解析や構文解析作るよりも、flexとbison使ったほうが保守性が高くなるよ」
というアドバイスを受けて、ためしに使ってみました。

.lファイルと.yファイルを作る

ここのmycalc.lとmycalc.yファイルをコピペする(´∀`;
http://kmaebashi.com/programmer/devlang/yacclex.html
 
ただ、bisonだと、出力ヘッダファイル名が、mycalc.tab.hになるので、
mycalc.lの3行目、

003:  #include "y.tab.h"

003:  #include "mycalc.tab.h"

にしないとコンパイルが通りませぬ。
 

ビルド

例えばこんなバッチファイルを作って、ビルドします。
(※パスはデフォルトインストールの場合)

set path=C:\MinGW\bin;
set path=%path%;C:\Program Files\GnuWin32\bin;

bison -dv mycalc.y
flex mycalc.l

gcc -o mycalc mycalc.tab.c lex.yy.c

 
実行すると、なんとmycalc.exeという電卓が!
(…kenmoは1行もソースコード書いてないんですけどね…(´∀`;