Posted on 2007-07-20 15:46
ZelluX 阅读(389)
评论(0) 编辑 收藏 所属分类:
Courses
书上的例子,计算行号的,但是书中对行的定义是
line *.\n
貌似不正确,flex无法解析,改成line (.)*\n就可以了。
书上的样例也没有yywrap,写了个空函数。
%{
/* a Lex program that adds line numbers
to lines of text, printing the new text
to the standard output
*/
#include <stdio.h>
int lineno = 1;
%}
line (.)*\n
%%
{line} { printf ("%5d %s", lineno++, yytext); }
%%
main()
{
yylex();
return 0;
}
int yywrap()
{
return 0;
}
生成flex程序:flex linecount.lex
编译:gcc lex.yy.c
利用管道输入刚才的程序:cat linecount.lex | ./a.out