如何使用 Flex/Bison 创建真正的编译器?

How to create real compiler with Flex/Bison?

我现在正在学习Flex / Bison,以为我可以做一个编译器,但我越问越觉得它们只是语法分析器,并且不允许从我们的编程语言生成新的可执行文件 universal windows。我解释一下,Bison生成的文件在执行的时候,只是解释了我们C语言的代码。

是否可以创建一个编译器,从任何没有我的编译器的 windows 生成可执行文件?

是的,使用 flex+bison 编写编译器是可能的(而且非常普遍),但是这些工具只能帮助您进行词法和句法分析。您必须自己完成剩下的工作或使用 LLVM 等其他工具。

例如,要创建一个简单的单通道编译器,您只需将汇编指令写入 bison-actions 中的文件即可。然后你可以 运行 该文件最后通过汇编器和链接器得到一个可执行文件。

或者对于更复杂的编译器,您可以在 bison 操作中创建一个抽象语法树,然后在后续阶段遍历该树以对其执行转换和分析,直到最终生成程序集。

无论哪种方式 bison 仅帮助您进行解析,您都需要自己执行其他步骤。