第1个例子需要一点flex和bison的知识,可以参考书籍flex and bison by Jobn Levine,第1个例子大概的思路就是使用lexerwg命令将lexer.l文件编译成C语言文件,qd然后使用make来编译。
先介绍不用makefile运行此例子的步骤。
文件lexer.l的内容为:
int fee_count = 0; int fie_count = 0; int foe_count = 0; int fum_count = 0; %% fee fee_count++; fie fie_count++; foe foe_count++; fum fum_count++;
若不使用makefile,直接使用命令flex -t flexer.l > flexer.c可以生成flex.c文件。
使用命令gcc -c -o count_words.o count_words.c 编译count_words.c生成count_words.o文件。
使用命令gcc -c -o lexer.o lexer.c编译lexer.c生成lexer.o文件。
使用命令gcc count_words.o lexer.o -lfl -o count_words链接生成可执行文件count_words。
若使用makefile编译这些文件,makefile文件内容为:
count_words: count_words.o lexer.o -lfl gcc count_words.o lexer.o -lfl -ocount_words count_words.o: count_words.c gcc -c count_words.c lexer.o: lexer.c gcc -c lexer.c lexer.c: lexer.l flex -t lexer.l > lexer.c
直接使用make即可编译这些文件。