总算成功的运行了个词法解析程序

书上的例子,计算行号的,但是书中对行的定义是
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


你可能感兴趣的:(总算成功的运行了个词法解析程序)