我绝对没有编译器的背景,并开始了“自学”之旅。我正在使用this教程学习lex,并在名为first.l
%%
/* match everything except newline */
. ECHO;
/* match newline */
\n ECHO;
%%
int yywrap(void) {
return 1;
}
int main(void) {
yylex();
return 0;
}
现在我明白lex应该生成一个tokenizer,它只会使用上面的first.l
文件回显它所获得的一切。我继续跑了
lex first.l
它创建了一个名为lex.yy.c
的文件。然后,本教程将提供更多示例并跳转到yacc
。有人能告诉我用lex生成的lex.yy.c
文件可以做些什么吗?我的想法是我现在有一个标记器,但是现在如何将这个文件编译成二进制文件呢?使用gcc?
答案 0 :(得分:4)
是的,使用GCC。你可能想做这样的事情:
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