著作権についてお問い合わせbisonとflexで電卓を作成!地獄の電卓作成編完結!【6】2020.02.10ZEROHOMEITZERObisonとflexで電卓を作成!地獄の電卓作成編完結!【6】Advertisementさて、今回で電卓作成に関しては完結します。独自プログラミング言語作成っていうよりは、bison(yacc)とflex(lex)の使い方に終始してしまっているわけですが、基本を押さえないと訳分からんことになるので。ことで、今回は電卓作成完結編です。※基本的にはおすすめ本で紹介している書籍を参考にさせて頂いています。■前回の記事はこちらTravelerlexファイルの文法の読み方を解説!地獄の電卓作成編【4】https://traveler0401.com/zero-4/さーーーて、前回は「yacc」と「lex」について見ていきましたが、実践しないと訳分からんので実際に手を動かしていきます。独自プログラミング言語を作るにあたり、まずは電卓を作ってみて、その後本格的に言語作成に入ります。頭がいいわけでもないので着実に...Traveleryaccファイル!地獄の電卓作成編【5】https://traveler0401.com/zero-5/なんか、すごい、色々書くのが面倒だったのでファイルの記載のみ。上記にすべて格納しています。・lexファイルは前々回の記事にて掲載したソースコードを使用します。・yaccファイルは前回の記事にて掲載したソースコードを使用します。Hub上にソースコードがあるのでご心配なく。電卓を実行する準備ってことで、まずは電卓を動かす準備をします。bisonを実行まずはbisonを実行します。calculator.y「–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を実行します。なんかイメージ的にはこっちの方が先な気がするんですけどね~。calculator.lこれにより、「lex.yy.c」というファイルが出力されます。現段階で↑のようになります。なっていない場合は、bison、もしくはflexが正しく動作していない可能性があります。gccを実行gccを実行します。lex.yy.cこれにより、「calculator.exe」というファイルが出力されます。このファイルが電卓本体ということになります。道のりが長いんじゃああああ。電卓を実行、の前にファイル構成はこんな感じ各種ファイルの構成はこんな感じになります。下記サイトから画像を頂きました。※「mycalc」が今回は「calculator」となっているので注意してください。電卓を実行してみる先ほど出力されたexeファイルを実行してみます。!!上記のように正しく計算されていることが分かります。※出力内容がdouble型なのは、lex&yaccファイルでdoubleの定義をしたからですね。Hubにバッチファイル「make.bat」とシェルファイル「make.sh」があります。今回コマンドによって出力されたファイル群は以下に格納してあります。URL:「https://github.com/izumin0401/ZERO/tree/master/1.calculator/output」おすすめ本これおすすめやで。カエレバ楽天市場Amazonまとめこれでとりあえず電卓はできました。ことで、基礎中の基礎はおわり。今後も少し話を脱線しながら本格的に言語作成に入ります。