Lex:打印行号

发布于 2024-09-24 02:08:51 字数 166 浏览 7 评论 0原文

我有源代码,我想添加行号。

我所做的:

%{
    int lines=0;
%}

LINE \n

%%
{LINE} {ECHO;printf("%d", ++lines);}

但是,我不知道如何抓住第一行。 你能帮助我吗 ?

I have a source code and I would like to add line numbers.

What I've done :

%{
    int lines=0;
%}

LINE \n

%%
{LINE} {ECHO;printf("%d", ++lines);}

However, I don't know how to catch the first line.
Can you help me ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

找回味觉 2024-10-01 02:08:51

添加行:

printf("%d", ++lines);

作为 main 中的第一件事。这是一种黑客,但很有效:)

编辑:结果应该如下所示:

%{
    int lines=0;
%}

LINE \n

%%
{LINE} {ECHO;printf("%d", ++lines);}
%%

main()
{
    printf("%d", ++lines);
    yylex();
}

免责声明:语法来自书本,未实际编译。你可能需要稍微按摩一下。

Add the line:

printf("%d", ++lines);

as the first thing in main. Its a hack, but an effective one :)

Edit: The result should look something like this:

%{
    int lines=0;
%}

LINE \n

%%
{LINE} {ECHO;printf("%d", ++lines);}
%%

main()
{
    printf("%d", ++lines);
    yylex();
}

Disclaimer: syntax from a book, not actually compiled. You might have to massage it a little bit.

夜光 2024-10-01 02:08:51

试试这个:

%{
#include<stdio.h>    
int lines=0;
%}


%%
.*\n {printf("%d %s",++lines,yytext);}
%%

int main()
{

yylex();
return 0;
}

Try this:

%{
#include<stdio.h>    
int lines=0;
%}


%%
.*\n {printf("%d %s",++lines,yytext);}
%%

int main()
{

yylex();
return 0;
}
木落 2024-10-01 02:08:51
%{
int yylineno=0;
%}


%%
^(.*)\n {printf("%4d %s",++yylineno,yytext);
%%

int main(int argc, char **argv)
{
yyin=fopen(argv[1],"r");
yylex();
fclose(yyin);
}
%{
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 可以。

Check to see if your version provides a variable named "yylineno", many of them do.

I know flex 2.6.0 does.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文