我碰到了这个:Writing a compiler using Turbo Pascal

我很好奇是否有任何教程或引用资料说明如何创建简单的C编译器。我的意思是,这足以使我了解算术运算。阅读Ken Thompson的这篇文章后,我变得非常好奇。写一些能理解自己的东西的想法似乎很令人兴奋。

为什么我提出这个问题而不是问Google?我尝试了Google,而Pascal是第一个链接。其余的似乎无关紧要,并补充了……我不是CS专业(所以我仍然需要学习yacc等所有工具的功能),我想通过实践来学习这一点,并希望有更多经验的人能够在这些方面总是比Google更好。我想阅读一些与以上列出的内容相同的文章,但至少强调了构建简单C编译器的引导阶段。

另外,我也不知道最好的学习方法。我要开始用C或其他语言构建C编译器吗?是否编写C编译器或其他某种语言?一旦我有探索的方向,我觉得这样的问题会得到更好的回答。有什么建议?

有什么建议?

最佳答案

编译器包括三部分:

  • 解析器
  • 抽象语法树(AST)
  • 代码生成器

  • 有很多不错的解析器生成器,它们以语言语法开头。也许ANTLR是您入门的好地方。如果要坚持使用C根,请尝试lex / yacc或bison。

    C有语法,但是我认为C整体很复杂。您最好从语言的一部分开始,逐步提高自己的水平。

    拥有AST之后,就可以使用它来生成将要运行的机器代码。

    这是可行的,但并非无关紧要。

    我还将向Amazon查看有关编写编译器的书籍。 《龙书》是经典著作,但有更多现代书籍可用。

    更新:关于堆栈溢出也有类似的问题,例如this one。还要检查这些资源。

    关于c - 开始一个简单的(也许是最简单的)C编译器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2349468/

    10-11 22:40
    查看更多