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

问题描述:

我正在学习Flex/Bison现在,我想我可以做一个编译器,但是我查询得越多,我就越觉得它们只是Syntactic Analyzers,并且不允许生成可执行文件的新文件。来自我们的编程语言。我解释,当执行Bison生成的文件时,它只能解释我们在C语言中的代码语言。如何用Flex/Bison创建真正的编译器?

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

是的,使用flex + bison编写编译器是可能的(也是完全常见的),但这些工具只能帮助您进行词法和语法分析。您必须自己完成剩下的工作或使用其他工具,如LLVM。

例如,要创建一个简单的单通编译器,您可以简单地在您的野牛行为中将汇编指令写入文件。然后你可以在最后通过汇编程序和链接器运行该文件并获取可执行文件。

或者对于更复杂的编译器,您可能会在您的bison动作中创建一个抽象语法树,然后在后面的阶段对该树执行转换和分析,直到最终生成汇编。

无论哪种方式野牛只能帮助你解析,你需要自己执行其他步骤。

+0

编写一个编译器确实是一个非常复杂的任务,我会研究这个主题并做出更适合我的项目的选择。非常感谢你 – Chr