月間29,000PV達成! 収益は毎日発生中! ギランバレー症候群に関する情報を集めています

bisonとflexで電卓を作成!地獄の電卓作成編完結!【6】

             
  • 2020.02.10
  • Zero
bisonとflexで電卓を作成!地獄の電卓作成編完結!【6】
Advertisement

 

さて、今回で電卓作成に関しては完結します

独自プログラミング言語作成っていうよりは、bison(yacc)とflex(lex)の使い方に終始してしまっているわけですが、基本を押さえないと訳分からんことになるので。。

ってことで、今回は電卓作成完結編です

※基本的にはおすすめ本で紹介している書籍を参考にさせて頂いています。

 

 

僕のプロフィールはこちら

 

 

今回使用するソースコード

■Git Hub

URL:「https://github.com/izumin0401/Zero/tree/master/tmp/calculator」

上記にすべて格納しています。

 

 

前提

・lexファイルは前々回の記事にて掲載したソースコードを使用します。

・yaccファイルは前回の記事にて掲載したソースコードを使用します。

どちらもGit Hub上にソースコードがあるのでご心配なく。

 

 

電卓を実行する準備

ってことで、まずは電卓を動かす準備をします。

 

bisonを実行

まずはbisonを実行します。

 

–yacc」オプションを付与することでyacc互換で実行されます。

-dv」オプションに関しては以下を参照してください。

URL:「http://guppy.eng.kagawa-u.ac.jp/~kagawa/2007/ProgLang/bison-1.2.8/bison-ja_12.html」

 

これにより、「y.yab.h」「y.tab.c」「y.output」の3ファイルが出力されます。

※ファイルが「y.output」しか出力されない場合は、おそらくエラーが出ています。
bisonのバージョンを「2.1」にして再度やってみてください。

また、「y.output」ファイルはコンフリクトやワーニングが発生した場合に出力されるファイルですが、今回はワーニングしか出なかったので先に進みます。

 

flexを実行

次にflexを実行します。

なんかイメージ的にはこっちの方が先な気がするんですけどね~。

 

 

これにより、「lex.yy.c」というファイルが出力されます。

 

ファイル構成

フォルダ構成

現段階で↑のようになります。

なっていない場合は、bison、もしくはflexが正しく動作していない可能性があります

 

gccを実行

gccを実行します。

 

 

これにより、「calculator.exe」というファイルが出力されます。

このファイルが電卓本体ということになります。

道のりが長いんじゃああああ。

 

 

電卓を実行、の前にファイル構成はこんな感じ

各種ファイルの構成はこんな感じになります。

ファイル構成

下記サイトから画像を頂きました。

URL:「http://kmaebashi.com/programmer/devlang/yacclex.html」

※「mycalc」が今回は「calculator」となっているので注意してください。

 

 

電卓を実行してみる

先ほど出力されたexeファイルを実行してみます。

 

電卓実行

どうだ!!

上記のように正しく計算されていることが分かります。

※出力内容がdouble型なのは、lex&yaccファイルでdoubleの定義をしたからですね。

 

 

Advertisement

 

コマンド打つの面倒よね?

コマンド打つの、面倒よね?

ってことで、先ほどのGit Hubにバッチファイル「make.bat」とシェルファイル「make.sh」があります。

 

 

今回の成果物

今回コマンドによって出力されたファイル群は以下に格納してあります。

URL:「https://github.com/izumin0401/Zero/tmp/calculator/output」

 

 

おすすめ本

これおすすめやで。

 

 

 

まとめ

これでとりあえず電卓はできました。

ってことで、基礎中の基礎はおわり。

今後も少し話を脱線しながら本格的に言語作成に入ります。

Travelerを知らないの?