【问题标题】:Building a compiler steps [closed]构建编译器步骤[关闭]
【发布时间】:2014-01-06 19:31:57
【问题描述】:

我一直在考虑构建自己的编译器,几天前我终于开始着手了。我的编译器是这样工作的:

  • 从我自己的文件中解析代码。 (使用 c++ 制作的 .exe 文件)
  • 创建汇编代码
  • 创建一个包含这些汇编代码的文件
  • 编译该程序集文件(如果已生成)(使用 vbs 脚本完成)
  • 链接 .obj 文件
  • 我们有我们的 .exe 文件

现在我很难找到解析代码的最佳方法。我还没有真正做到这一点,但我会把我的想法放在这里。

  • 找到所有变量并声明它们。变量前面会加上一个 'var'(现在)。未初始化的变量将被放入.data?部分和 .data 部分中的初始化部分。
  • 找到主程序并开始执行函数和操作。

现在我只是想知道是否有人可以改进我的想法。或者如果有人有更好的想法来制作某种编译器和你自己的编程语言。

【问题讨论】:

  • 这对于 Stack Overflow 来说是一个过于宽泛的问题。找一本关于编译器构造的好书——有好几本。
  • 这个问题对于一个 SO 问题来说太大了。要正确回答您的问题,需要一本好书和/或一学期的课程。我参加了这个在线课程,并认为它非常棒:coursera.org/course/compilers(是的,您在该课程中构建了一个编译器,面向对象的语言也不少。我的功能 100%,甚至还有一些不错的优化。)跨度>
  • StackOverflow 不是一个共鸣板。编译器是广泛而复杂的主题,当您有具体问题时,请回来提问。
  • 我不知道它是否仍然相关但搜索“编译器 - 原理、技术和工具”也称为“龙书”

标签: c++ assembly compiler-construction


【解决方案1】:

给自己弄一份A. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman: Compilers: Principles, Techniques, and Tools 并开始学习

本书涵盖了必要的理论背景,尤其是:

  • 上下文无关语法
  • 递归下降、LL、LR 解析
  • 符号处理
  • 中间表示

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2011-10-28
    • 2017-12-30
    相关资源
    最近更新 更多