- 论坛徽章:
- 0
|
这是在一本书上看到的
word_counts.c
#include <stdio.h>
extern int fee_count,file_count,foe_count,fum_count;
extern int yylex(void);
int main(int argc, char *argv[])
{
yylex();
printf ("%d %d %d %d\n",fee_count,file_count,foe_count,fum_count);
exit(0);
}
lexer.l
int fee_count=0;
int fie_count=0;
int foe_count=0;
int fun_count=0;
%%
fee fee_count++;
fie fie_count++;
foe foe_count++;
fun fun_count++;
makefile
count_words:count_words.o lexer.o -lfl
gcc count_words.o lexer.o -lfl -o count_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
运行结果如下:
c$ make
flex -t lexer.l > lexer.c
lexer.l:9: premature EOF
make: *** [lexer.c] Error 1
请问
flex作用是什么,可以把lexer.l一个没有语法规则的文件变成在一个c文件?
运行结果为什么会出错,是哪时出了问题?
yylex()是什么函数,在lexer.c里面没有这个函数,man也没有这个函数? |
|