我有源代码,我想添加行号。
我做了什么:
%{
int lines=0;
%}
LINE \n
%%
{LINE} {ECHO;printf("%d", ++lines);}
然而,我不知道如何抓住第一线。 你能救我吗?
答案 0 :(得分:3)
添加以下行:
printf("%d", ++lines);
作为主要的第一件事。它是一个黑客,但一个有效的:)
编辑:结果应如下所示:
%{
int lines=0;
%}
LINE \n
%%
{LINE} {ECHO;printf("%d", ++lines);}
%%
main()
{
printf("%d", ++lines);
yylex();
}
免责声明:书中的语法,实际上并未编译。你可能需要按摩一下。
答案 1 :(得分:2)
试试这个:
%{
#include<stdio.h>
int lines=0;
%}
%%
.*\n {printf("%d %s",++lines,yytext);}
%%
int main()
{
yylex();
return 0;
}
答案 2 :(得分:1)
%{
int yylineno=0;
%}
%%
^(.*)\n {printf("%4d %s",++yylineno,yytext);
%%
int main(int argc, char **argv)
{
yyin=fopen(argv[1],"r");
yylex();
fclose(yyin);
}
答案 3 :(得分:0)
检查您的版本是否提供名为&#34; yylineno&#34;的变量,其中许多都是。
我知道flex 2.6.0可以。