2013-05-26 2 views
1

Я новичок в использовании бизонов и гибких. Я загрузил пакет, предоставленный официальным сайтом gnu bison. В папке примера содержатся исходные коды калькулятора в C++. Вот ссылка для скачивания: ftp://ftp.gnu.org/gnu/bison/Как использовать пример calC++, предоставленный зубром?

Я следующее действие:

bison -d calc++-parser.yy => OK, produce calc++-parser.tab.hh and calc++-parser.tab.cc

flex calc++-scanner.ll => OK, produce lex.yy.c

cc -o a.out lex.yy.c calc++-parser.tab.cc -lfl => failed

Я понятия не имею, почему я потерпел неудачу на третьем этапе, на самом деле, я не знаю, то ли я делаю правильно или не.

calc++-scanner.ll:2:20: error: cstdlib: No such file or directory

calc++-scanner.ll:5:19: error: string: No such file or directory

In file included from calc++-scanner.ll:6: ../../doc/bison.texinfo:8284:16: error: map: No such file or directory

In file included from ../../doc/bison.texinfo:8285, from calc++-scanner.ll:6: ../../doc/bison.texinfo:8440: error: expected '=', ',', ';', 'asm' or 'attribute' before 'calcxx_driver'

(... such error msg)

Компилятор Версия: GCC 4.2.1

Бизон: 2.5.1

Шлейф: 2.5.4

После того, как с помощью {г ++} вместо {} куб.см:

[email protected][9:45pm]~/Compiler/calc++>g++ -o a.out lex.yy.c calc++-parser.tab.cc -lfl

In file included from ../../doc/bison.texinfo:8285,from ../../doc/bison.texinfo:8504:

./calc++-parser.hh:126: error: redefinition of 'class yy::calcxx_parser' calc++-parser.tab.hh:96: error: previous definition of 'class yy::calcxx_parser'

ответ

0

Я не могу воспроизвести вашу проблему с Bison 2.7.2. Bison 2.5 является древним, вам следует обновить и сообщить о проблемах, с которыми вы можете столкнуться.

+0

Спасибо akim! Я обновил его. Наконец-то я нашел веб-сайт Makefile для этого примера. (Я ищу его так сильно, как только смогу). Я предоставлю Makefile, который решит мою проблему. –

2

all: 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

bison --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: clean

clean:

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

Смежные вопросы