1

私はバイソンとフレックスを使用する新入生です。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' の以前の定義

4

2 に答える 2

1

すべて: calc++.out

calc++.out: calc++-driver.o calc++-parser.o calc++-scanner.o calc++.o

g++ -o calc++.out calc++-driver.o calc++-parser.o calc++-scanner.o calc++.o

calc++-driver.o: calc++-driver.cc calc++-driver.hh calc++-parser.hh

g++ -c calc++-driver.cc

calc++-parser.o: calc++-parser.cc calc++-parser.hh calc++-driver.hh

g++ -c calc++-parser.cc

calc++-parser.cc calc++-parser.hh: calc++-parser.yy

バイソン --defines=calc++-parser.hh -ocalc++-parser.cc calc++-parser.yy

calc++-scanner.o: calc++-scanner.cc calc++-parser.hh calc++-driver.hh

g++ -c calc++-scanner.cc

calc++-scanner.cc: calc++-scanner.ll

flex -ocalc++-scanner.cc calc++-scanner.ll

calc++.o: calc++.cc

g++ -c calc++.cc

.PHONY: クリーン

掃除:

-rm *.o calc++-parser.hh calc++-parser.cc calc++-scanner.cc location.hh position.hh stack.hh calc++.out

于 2013-05-27T15:41:03.390 に答える
0

Bison 2.7.2 では問題を再現できません。Bison 2.5 は古くからあるため、アップグレードして、発生する可能性のある問題を報告する必要があります。

于 2013-05-27T12:11:28.627 に答える