【发布时间】:2017-10-08 12:51:42
【问题描述】:
我现在正在学习Flex/Bison,以为自己可以做一个编译器,但越问越觉得他们只是句法分析器,不允许从我们的编程语言生成新文件可执行通用窗口。我解释一下,当执行 Bison 生成的文件时,它只是用 C 解释我们的代码语言。
是否可以创建一个编译器,从没有我的编译器的任何窗口生成可执行文件?
【问题讨论】:
标签: c compiler-construction bison flex-lexer
我现在正在学习Flex/Bison,以为自己可以做一个编译器,但越问越觉得他们只是句法分析器,不允许从我们的编程语言生成新文件可执行通用窗口。我解释一下,当执行 Bison 生成的文件时,它只是用 C 解释我们的代码语言。
是否可以创建一个编译器,从没有我的编译器的任何窗口生成可执行文件?
【问题讨论】:
标签: c compiler-construction bison flex-lexer
是的,使用 flex+bison 编写编译器是可能的(并且非常普遍),但这些工具只能帮助您进行词法和句法分析。您必须自己完成其余的工作或使用 LLVM 等其他工具。
例如,要创建一个简单的单遍编译器,您可以简单地将汇编指令从您的 bison-actions 中写入文件。然后,您可以在最后通过汇编器和链接器运行该文件并获得可执行文件。
或者对于更复杂的编译器,您可以在野牛操作中创建一个抽象语法树,然后在以后的阶段中遍历该树以对其执行转换和分析,直到最终生成程序集。
无论哪种方式,bison 都只能帮助您进行解析,您需要自己执行其他步骤。
【讨论】: