如何处理 lex 的输出?
我完全没有编译器背景,并开始了“自学”之旅。我正在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,使用海湾合作委员会。您可能想做这样的事情:
GCC 的
-c
标志告诉它不要链接,而是在生成目标文件后停止。编译完所有文件后,您可以将它们全部传递给gcc
将其链接在一起。因此,在您的情况下,您只需继续编译 lex 生成的输出文件即可获取二进制文件:
Yes, using GCC. You probably want to do something like this:
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 togcc
.So in your case, you would just go ahead and compile the output file generated by
lex
to get the binary: