我正在研究编译理论以及如何使用 flex,但我遇到了几个问题。
我创建了一个包含以下数据的 lex 文件:
%%
"hello" printf("GOODBYE");
. ;
%%
这是我能想到的最简单的一种。如果我理解正确,它会在每次遇到 hello 标记时打印 GOODBYE,并忽略其他所有内容。
我在这个 lex 文件上使用了 flex 来生成一个 C 文件,我现在应该编译那个 C 代码以获得这个语法的词法分析器。
问题 是生成的 C 代码没有入口点。它不编译。我的 .lex 文件不正确吗?我是不是误会了什么?
最佳答案
您只需在该文件中声明自己的 main()
,在第二个 %%
之后或将此 .c 与其他 .c 文件链接,其中 main()
声明。
%%
"hello" printf("GOODBYE");
. ;
%%
int main()
{
yylex();
return 0;
}
关于c - flex - 没有入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43323827/