13

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

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

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

这里有一些资源可以被认为是“有趣”(强调引号)的学习技术主题的方法,只是为了了解我在寻找什么。

4

2 回答 2

15

如果您想在短时间内学到很多东西,请从 Val Schorre 的 1964 年(是的,您没看错)关于如何构建自编译元编译器的MetaII论文中了解元编译器。作为免费赠品,他们也可以编译传统语言!这篇论文有 10 页,描述了元编译器(不管你信不信是虚拟机),并包含两个完整的编译器。

当您了解编译器如何自行编译时,您最终会遇到一个令人兴奋的时刻……我在 70 年代初就以这种方式学习了编译器,这是我上过的最难忘的编译器课程。这很有趣

这里有一个在线教程,它实现了 JavaScript 中的所有想法。.

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

于 2011-04-21T03:55:05.830 回答
0

你需要准备多久?学习编译器的“最佳”方法是深入研究它们,而最好的方法是使用有史以来最好的编译器书籍:The Dragon Book 它很旧,但很棒。它并不便宜,但它很可能是了解神奇编译器的最具体和最少数学的方法。

它没有任何闪烁的灯光,也不会像 Ruby 指南那样采用令人敬畏的字体,但它是每个程序员都应该阅读的前 10 本书

于 2011-04-21T03:37:43.883 回答