有没有“有趣”的方法来学习语言,语法,解析和编译器?

时间:2011-04-21 03:21:47

标签: compiler-theory

我正准备参加有关语言,语法,解析和编译器的考试。这不是我的一杯茶和大多数资源,我发现使用数学语言来定义不同的交易条款,并解释我需要知道的不同概念,而不是坚持使用英语或法语,我更喜欢这些。因此,我在找到继续学习的动机和简单理解理论方面遇到了一些麻烦。 所以这是我的问题:你们中的任何人都知道在哪里可以找到一种“有趣”的方式来学习这一切吗?或者至少,也许是一种更“具体”,更少“数学”的方式来处理这个问题。

我需要涵盖以下内容,欢迎任何有关这些主题的内容!

  • 解析(LR,LL,...)
  • 语法(无语境,确定性,......)
  • 语法分析静态流分析
  • 有关软件维护和对用户界面的依赖性的影响分析
  • 动态分析

以下是一些资源,可以被视为“有趣”(强调引号)了解技术主题的方法,只是为了了解我正在寻找的东西。

2 个答案:

答案 0 :(得分:14)

如果你想在短时间内学到很多东西,那就去了解Val Schorre 1964年的元编译器(是的,你读得对) MetaII 关于如何构建自编译元编译器的论文。作为免费赠品,他们也可以编译传统的语言!这篇论文是10页,描述了元编译器(作为一个虚拟机是否相信),并包含两个完整的编译器。

当你了解编译器如何编译自己时,你最终会遇到令人兴奋的时刻......我在70年代早期就这样学习了编译器,这是我有过的最难忘的编译器课程。这是有趣

有一个online tutorial here which implements all the ideas in JavaScript.

本教程的作者是James Neighbors博士,他发明了“领域分析”一词。他将MetaII的想法用于一个名为Draco的特定领域的代码生成器。 Draco是过去30年来我一直在构建的类似编译器的工具的关键灵感。

答案 1 :(得分:0)

你需要多长时间准备?学习编译器的“最佳”方法是深入研究它们,最好的方法就是使用最好的编辑器书籍。The Dragon Book它虽然陈旧但很棒。它并不便宜,但它很可能是学习神奇编译器的最具体和最少数学方法。

它没有任何闪光灯,它不会像Ruby指南那样令人敬畏的字体,但它位于前10位Books Every Programmer Should Read