如何处理 lex 的输出?

发布于 2024-10-13 00:18:18 字数 633 浏览 2 评论 0原文

我完全没有编译器背景,并开始了“自学”之旅。我正在使用 this 教程学习 lex,并在名为 < 的文件中输入类似的内容code>first.l

%%
    /* match everything except newline */
.   ECHO;
    /* match newline */
\n ECHO;

%%

int yywrap(void) {
    return 1;
}

int main(void) {
    yylex();
    return 0;
}

现在我明白 lex 应该生成一个标记生成器,它只会回显使用上面的 first.l 文件获得的所有内容。我继续运行

lex first.l

它创建了一个名为 lex.yy.c 的文件。然后本教程给出了更多示例并跳转到 yacc。有人能告诉我可以用 lex 生成的 lex.yy.c 文件做什么吗?我的想法是,我现在有了一个分词器,但现在如何将此文件编译为二进制文件?使用海湾合作委员会?

I have absolutely no background in compilers and started off on a "teach myself" journey. I am learning about lex using this tutorial and typed something like this into a file called first.l

%%
    /* match everything except newline */
.   ECHO;
    /* match newline */
\n ECHO;

%%

int yywrap(void) {
    return 1;
}

int main(void) {
    yylex();
    return 0;
}

Now I understand that lex is supposed to generate a tokenizer that will just echo everything it gets using the above first.l file. I went ahead and ran

lex first.l

It created a file called lex.yy.c. The tutorial then gives a few more examples and jumps to yacc. Can someone tell me what can be done with lex.yy.c file that is generated by lex? My thought was that I now have a tokenizer but how do I compile this file to a binary now? Using gcc?

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

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

发布评论

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

评论(1

娇柔作态 2024-10-20 00:18:18

是的,使用海湾合作委员会。您可能想做这样的事情:

gcc -c file1.c
gcc -c file2.c
gcc -o result file1.o file2.o

GCC 的 -c 标志告诉它不要链接,而是在生成目标文件后停止。编译完所有文件后,您可以将它们全部传递给 gcc 将其链接在一起。

因此,在您的情况下,您只需继续编译 lex 生成的输出文件即可获取二进制文件:

gcc -o output lex.yy.c

Yes, using GCC. You probably want to do something like this:

gcc -c file1.c
gcc -c file2.c
gcc -o result file1.o file2.o

The -c flag to GCC tells it not to link, but stop after generating an object file. Once you've compiled all the files, you can link it together by passing them all to gcc.

So in your case, you would just go ahead and compile the output file generated by lex to get the binary:

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