可能重复:
学习编写编译器
嗨,Stack Overflow,别误会,我不打算为C++(虽然我打算用C++)或Java或其他一些高级复杂的编程语言编写编译器。 我只想学习将基本指令集转换为Windows可执行文件的基础知识(例如,只是一个具有5-6个函数的简单语言,完全自定义)。 另外,我不想下载任何库或头文件。 如果您可以链接到任何非常基本的示例源或教程,那将不胜感激!
可能重复:
学习编写编译器
嗨,Stack Overflow,别误会,我不打算为C++(虽然我打算用C++)或Java或其他一些高级复杂的编程语言编写编译器。 我只想学习将基本指令集转换为Windows可执行文件的基础知识(例如,只是一个具有5-6个函数的简单语言,完全自定义)。 另外,我不想下载任何库或头文件。 如果您可以链接到任何非常基本的示例源或教程,那将不胜感激!
1. 解析器。您需要解析您的语言并创建一个抽象语法树。您可能需要学习如何编写解析器。您可以手动编写解析器,也可以使用解析器生成器,例如lex/yacc。
2. 汇编语言。您需要从语法树中生成汇编指令。
3. 指令集。您需要将汇编翻译成机器码,使用某个特定的指令集(典型的Intel和AMD CPU使用x86指令集;或者,您可以针对Java虚拟机的指令集或.NET的IL)。
lex
或flex
更容易。如果想了解如何在C++中构建编译器与C或Pascal有何不同,可以尝试使用Boost Spirit解析器框架。
这需要对C++有一定的了解。
如果想学习如何创建编译器,我建议先使用比C++更简单的语言,然后再逐步转向C++。
祝好运!