如何处理lex的输出?

时间:2011-01-21 03:02:41

标签: c compiler-construction compilation lex

我绝对没有编译器的背景,并开始了“自学”之旅。我正在使用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?

1 个答案:

答案 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