yacc/lexについて
Posted: 2018年4月24日(火) 23:31
皆さんこんにちは。ユーマと申します。
長文失礼します。
いま、こちらのサイトを参考にして電卓をつくってみようかなと思い勉強していたところ、わからないことが出てきたので質問させてもらいました。
私はwindows10のコマンドプロンプトを用いて字句解析、構文解析、コンパイルをしようとしています。
なのでlexの代わりにflex,yaccの代わりにbisonを用いています。
またCコンパイラはMinGWを用いています。
flex,bisonはC:\Program Files (x86)\GnuWin32\にまとめておいてあり、MinGWはCドライブ直下に置いてあります。
環境変数にはC:\Program Files (x86)\GnuWin32\binとC:\MinGW\binを追加しました。
電卓のファイルを保存しているディレクトリに移動してから次のようにコマンドを入力しました。
1行目 : bison --yacc -dv mycalc.y
2行目 : flex mycalc.l
3行目 : gcc -o mycalc y.tab.c lex.yy.c
すると bison --yacc -dv mycalc.y では
m4: cannot open `Files': No such file or directory
m4: cannot open `(x86)\GnuWin32/share/bison': No such file or directory
m4: cannot open `C:\Program': No such file or directory
m4: cannot open `Files': No such file or directory
m4: cannot open `(x86)\GnuWin32/share/bison/m4sugar/m4sugar.m4': No such file or directory
m4_init()m
4m:4_de fine([b4_actions], c
(この下はおそらく自分が悩んでいる原因ではないと思いカットさせていただきました
もし必要であるならばまた貼らせていただきます。)
また二行目の flex mycalc.lでは
特に何も表示されなかったです。
最後に三行目の gcc -o mycalc y.tab.c lex.yy.c では
mycalc.l:3:19: fatal error: y.tab.h: No such file or directory
#include "y.tab.h"
^
compilation terminated.
と表示されました。
おそらくbisonの構文解析を行うところでおかしくなっていると思うのですが
これはどうしたら直るでしょうか?
また、コマンドラインへの入力一行目の出力のm4とは何なのでしょうか?
(しらべてもいまいちわかりませんでした)
分かりにくい文章ですみません。
何か必要な情報があれば追加させていただきます。
長文失礼します。
いま、こちらのサイトを参考にして電卓をつくってみようかなと思い勉強していたところ、わからないことが出てきたので質問させてもらいました。
私はwindows10のコマンドプロンプトを用いて字句解析、構文解析、コンパイルをしようとしています。
なのでlexの代わりにflex,yaccの代わりにbisonを用いています。
またCコンパイラはMinGWを用いています。
flex,bisonはC:\Program Files (x86)\GnuWin32\にまとめておいてあり、MinGWはCドライブ直下に置いてあります。
環境変数にはC:\Program Files (x86)\GnuWin32\binとC:\MinGW\binを追加しました。
電卓のファイルを保存しているディレクトリに移動してから次のようにコマンドを入力しました。
1行目 : bison --yacc -dv mycalc.y
2行目 : flex mycalc.l
3行目 : gcc -o mycalc y.tab.c lex.yy.c
すると bison --yacc -dv mycalc.y では
m4: cannot open `Files': No such file or directory
m4: cannot open `(x86)\GnuWin32/share/bison': No such file or directory
m4: cannot open `C:\Program': No such file or directory
m4: cannot open `Files': No such file or directory
m4: cannot open `(x86)\GnuWin32/share/bison/m4sugar/m4sugar.m4': No such file or directory
m4_init()m
4m:4_de fine([b4_actions], c
(この下はおそらく自分が悩んでいる原因ではないと思いカットさせていただきました
もし必要であるならばまた貼らせていただきます。)
また二行目の flex mycalc.lでは
特に何も表示されなかったです。
最後に三行目の gcc -o mycalc y.tab.c lex.yy.c では
mycalc.l:3:19: fatal error: y.tab.h: No such file or directory
#include "y.tab.h"
^
compilation terminated.
と表示されました。
おそらくbisonの構文解析を行うところでおかしくなっていると思うのですが
これはどうしたら直るでしょうか?
また、コマンドラインへの入力一行目の出力のm4とは何なのでしょうか?
(しらべてもいまいちわかりませんでした)
分かりにくい文章ですみません。
何か必要な情報があれば追加させていただきます。