代码之家  ›  专栏  ›  技术社区  ›  ubiquibacon

编译器设计和构造类[关闭]

  •  6
  • ubiquibacon  · 技术社区  · 15 年前

    今年秋天,我将为我的大师们上几门课,其中一门是编译器设计和构造。我对大多数与计算机技术相关的东西都很精通,但我对编译器如何处理脏的东西没有太多经验,我只是在需要的时候使用它们。我通常对上课并不紧张,但我有点像是赤身裸体地走进这个教室。如果有人能推荐一些好的读物或提供一个简短的基本原则清单,我可以研究这些基本原则来提高我的阅读速度。 迅速地 我将非常感激。

    更新:

    我在班上表现很好,而且 the text book we used 其实很好。 This site 还帮助我可视化和测试正则表达式(我现在认为学习编译器时最好掌握这一点)。我很快学会了雷克斯的基础知识,但雅克(出于某种原因)对我来说有点困难。简单地在网上查找例子对这两种方法都有帮助。

    4 回复  |  直到 13 年前
        1
  •  3
  •   stacker    15 年前
        2
  •  5
  •   Community Mohan Dere    9 年前

    编译程序是一个有点头晕目眩的练习。但是,如果您对数据结构、算法和汇编代码有了扎实的了解,并且喜欢仔细考虑细节,您可能会发现 这门课很吸引人,因为它 所以 不同于大多数传统的业务数据处理和/或嵌入式计算。

    我会确保你已经很好地了解了汇编代码的背景。大多数程序编码器不用于机器指令、寄存器、地址模式和指针。如果你得到这些,教练很可能会很好地解释剩下的。

    如果你不习惯指点,那么 运行 不要走到离你最近的C编译器那里,写一些使用它们的程序。

    有关编译器不是什么的一些背景,请参见 Writing compilers ... what's right and what's wrong?

    如果你想要一个真正有趣的练习,你可以学习关于metaii的知识,这就是 构建一个编译程序,它用非常小的工作量构建一个编译程序。有一篇10页的关于如何做的论文 在这中间有一个激动人心的时刻,你突然看到 编译器可以编译自己。有一个metaii教程(与论文)在:

    http://www.bayfronttechnologies.com/mc_tutorial.html

        3
  •  2
  •   jer    15 年前

    这个 dragon book 通常是强烈推荐的。

        4
  •  0
  •   Pascal Cuoq    15 年前

    第一次有人向我解释编译时,我惊讶于它是如何根植于约定之中的。在编译过程中总是有相同的高级阶段,在子任务中有相同的划分。

    回首往事,其中一些 有点武断。编写一个编译器是很困难的,并且重新应用在过去为无数其他人工作过的技术确实是一个好主意。但根据你的背景,你可能一开始会感到惊讶的是,所有的东西都不像在计算机科学的其他领域那样自然地从基本原理出发。