所以我必须创建一个生成下面描述的应用程序的生成文件,并确保每个生成的文件都有自己的规则。
对于 makefile:第一个工具是 flex,它接受一个名为的文件spec.l
并生成一个名为lex.yy.c
. 另一个名为 bison 的工具需要一个文件calledspec.y
并将生成该文件spec.tab.c
。如果使用指令调用 bison -vd
,它还将生成一个名为的文件spec.tab.h
(编译 lex.yy.c 时需要该文件)。这两个 C 文件可以编译成目标文件,然后与 yacc (-ly) 和 lex (-ll) 库链接在一起以生成编译器 ( a.out
。如果您只是从 spec 开始,您描述的 makefile 必须生成以下命令.l 和 spec.y:
flex spec.l
bison -vd spec.y
gcc -c lex.yy.c
gcc -c spec.tab.c
gcc spec.tab.o lex.yy.o -ly -ll
我不知道从哪里开始解决这个问题
编辑:到目前为止我所拥有的
compiler: spec.tab.o lex.yy.o
gcc spec.tab.o lex.yy.o -ly –ll
lex.yy.c: spec.l
flex spec.l
spec.tab.c: spec.y
bison -vd spec.y
spec.tab.o: spec.tab.c
gcc -c spec.tab.c
lex.yy.o: lex.yy.c spec.tab.h
gcc –c lex.yy.c
clean:
rm –f *.c *.o a.out