C 如何处理lex的输出?

C 如何处理lex的输出?,c,compiler-construction,compilation,lex,C,Compiler Construction,Compilation,Lex,我完全没有编译器方面的背景,开始了一段“自学”的旅程。我正在使用教程学习lex,并在名为first.l的文件中键入类似的内容 %% /* match everything except newline */ . ECHO; /* match newline */ \n ECHO; %% int yywrap(void) { return 1; } int main(void) { yylex(); return 0; } 现在我明白了lex应该

我完全没有编译器方面的背景,开始了一段“自学”的旅程。我正在使用教程学习lex,并在名为
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

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

%%

int yywrap(void) {
    return 1;
}

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

它创建了一个名为
lex.yy.c
的文件。然后,本教程将给出更多示例,并跳到
yacc
。有人能告诉我如何处理lex生成的
lex.yy.c
文件吗?我的想法是我现在有了一个标记器,但是我现在如何将这个文件编译成二进制文件呢?使用gcc?

是的,使用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

谢谢我知道如何使用gcc进行编译,但想知道如何处理lex生成的文件。事实证明,我只需要用gcc编译它,它就可以正常工作了。谢谢你抽出时间。我已编辑了您的答案以添加最后一步。希望你不介意。