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

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

  • 2020年2月10日
  • 2021年3月29日
  • Zero
  • ,
  • 19view
地獄の電卓作成編!完結!

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

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

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

前回の記事はこちら!

なんか、すごい、色々書くのが面倒だったのでファイルの記載のみ。すみません。。 %{ #include <stdio.h> #include <stdlib.h> #define YYDEBUG 1 %} […]

yaccファイル!地獄の電卓作成編【5】

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

前提

  • lexファイルは前々回の記事にて掲載したソースコードを使用します。
  • yaccファイルは前回の記事にて掲載したソースコードを使用します。
どちらもGitHub上にソースコードがあるのでご心配なく。

電卓を実行する準備

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

bisonを実行

まずはbisonを実行します。

 

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

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

 

これにより、「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」というファイルが出力されます。このファイルが電卓本体ということになります。

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

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

ファイル構成

こちらのサイトから画像を頂きました。

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

電卓を実行してみる

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

 

電卓実行

どうだ!!正しく計算されていますね。

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

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

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

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

今回の成果物

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

おすすめ本

これおすすめやで。

まとめ

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

ということで、基礎中の基礎はおわり。

次回は本当の本当に言語作成だぜ!!
次回の記事はこちら!

新プログラミング言語『Zero』爆誕!! 泉 ということで、新プログラミング言語『Zero』を作りました。 きも男 アホの割にやるやん 泉 と言いたいところですが、ほぼ↓の書籍に記載の[…]

独自プログラミング言語「Zero」
bisonとflexで電卓を作成!地獄の電卓作成編完結!【6】
フォローしてもらえると泣いて喜びます