私はバイソンとフレックスを使用する新入生です。gnu bison 公式サイトから提供されているパッケージをダウンロードしました。C++ の電卓のソース コードを含むサンプル フォルダーがあります。ダウンロード リンクは次のとおりです: ftp://ftp.gnu.org/gnu/bison/
次のアクションを実行しました。
bison -d calc++-parser.yy => OK、calc++-parser.tab.hh と calc++-parser.tab.cc を作成します
flex calc++-scanner.ll => OK、lex.yy.c を生成
cc -o a.out lex.yy.c calc++-parser.tab.cc -lfl => 失敗しました
3 番目のステップで失敗した理由がわかりません。実際、自分のやり方が正しいかどうかはよくわかりません。
calc++-scanner.ll:2:20: エラー: cstdlib: そのようなファイルまたはディレクトリはありません
calc++-scanner.ll:5:19: エラー: 文字列: そのようなファイルまたはディレクトリはありません
calc++-scanner.ll:6 からインクルードされたファイル: ../../doc/bison.texinfo:8284:16: エラー: マップ: そのようなファイルまたはディレクトリはありません
../../doc/bison.texinfo:8285 からインクルードされたファイルでは、calc++-scanner.ll:6 から: ../../doc/bison.texinfo:8440: エラー: 期待される '=', ', '、';'、'asm' または 'attribute' が 'calcxx_driver' の前にある
(...そのようなエラーメッセージ)
コンパイラのバージョン: gcc 4.2.1
バイソン: 2.5.1
フレックス: 2.5.4
{cc} の代わりに {g++} を使用した後:
u97530048@csie0[9:45pm]~/Compiler/calc++>g++ -o a.out lex.yy.c calc++-parser.tab.cc -lfl
../../doc/bison.texinfo:8285 からインクルードされたファイルでは、../../doc/bison.texinfo:8504 から:
./calc++-parser.hh:126: エラー: 'class yy::calcxx_parser' の再定義 calc++-parser.tab.hh:96: エラー: 'class yy::calcxx_parser' の以前の定義