我有一个源代码,我想添加行号。Lex:打印行号
我所做的:
%{
int lines=0;
%}
LINE \n
%%
{LINE} {ECHO;printf("%d", ++lines);}
不过,我不知道如何捕捉到第一线。 你能帮我吗?
我有一个源代码,我想添加行号。Lex:打印行号
我所做的:
%{
int lines=0;
%}
LINE \n
%%
{LINE} {ECHO;printf("%d", ++lines);}
不过,我不知道如何捕捉到第一线。 你能帮我吗?
添加一行:
printf("%d", ++lines);
在主要的第一件事。它是一个黑客,而是一个有效的:)
编辑:结果应该是这个样子:
%{
int lines=0;
%}
LINE \n
%%
{LINE} {ECHO;printf("%d", ++lines);}
%%
main()
{
printf("%d", ++lines);
yylex();
}
免责声明:从一本书的语法,而不是实际编译。你可能需要稍微按摩一下。
试试这个:看
%{
#include<stdio.h>
int lines=0;
%}
%%
.*\n {printf("%d %s",++lines,yytext);}
%%
int main()
{
yylex();
return 0;
}
%{
int yylineno=0;
%}
%%
^(.*)\n {printf("%4d %s",++yylineno,yytext);
%%
int main(int argc, char **argv)
{
yyin=fopen(argv[1],"r");
yylex();
fclose(yyin);
}
检查您的版本提供了一个名为 “yylineno” 变量,其中许多人做的。
我知道flex 2.6.0的确如此。
感谢您的提示 – g123k 2010-09-20 17:52:20