可能重复: 学习编写编译器
嗨,Stack溢出,现在不要误解我的意思,我不打算为C++编写编译器(虽然我打算用C++编写)或其他高级复杂编程语言。我只想学习将基本指令集转换为Windows的基本知识(例如,一种简单的语言,具有5-6功能,完全自定义)。另外,我不想下载任何库或头文件。如果您可以链接到任何一个非常基本的例子源代码或教程,这将是非常感谢!
发布于 2010-10-15 23:49:01
下面是编写基本编译器所需的内容:
发布于 2010-10-15 23:49:22
要解析输入,您应该阅读递归下降分析 (这些解析器可能是手动实现的最简单的解析器),尽管您还需要某种类型的lexer来为解析器生成令牌。它们可以手工编码(我已经做过了),尽管使用像lex
或flex
这样的词汇生成器更容易。
一旦分析了输入,就需要将其转换为适当的输出。我在那里帮不了多少忙,因为我对Windows工具链不太了解。“容易”的方法是生成程序集,并通过NASM、MASM或编译器环境中的任何汇编程序来运行它。如果您的语言足够简单,则可以在解析器代码中生成程序集。
发布于 2010-10-16 00:13:33
实际上,最重要的是要找出.exe文件的二进制格式(除非您计划使用现有的链接器,此时我认为您需要输出同样具有二进制格式的obj文件)。
您还需要处理大量的程序集,除非您已经非常熟悉x86指令集,否则我会尝试其他方法。
以下是一些可能性:
在此之后,创建语言就可以通过这里给出的很多步骤来完成--但是如果您只想看看它是如何工作的,我肯定会先做一些小的迭代,在遇到它之前,不要担心会遇到什么。
https://stackoverflow.com/questions/3946911
复制相似问题