我有一個源代碼,我想添加行號。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