Skip to content

编程语言实现模式

thzt edited this page Jan 20, 2015 · 1 revision

Book Information

Review by [thzt]

  • Rank: ★★★★
  • Hard: ★★
  • Tag: 词法分析, 语法分析, 上下文相关分析, 解析器, 解释器, 编译器, ANTLR, Java.
  • Reviews:

如果你不想学形式语言和自动机理论,还想理解编程语言,这本书正适合你。

先学会怎样使用工具,再逐渐深入学习原理,也符合正常的思维习惯。

先看了这本书,并不代表着你以后不去深入学习编译原理了,这本书只不过会让你轻松起步。


我一直以为那些使用伪代码来讲授实现方法的作者,都没有自己真正实现过。

他们一定还说了,不使用特定编程语言来写,是为了避免将思想局限于那个语言之内。

这一点,我实在不敢苟同。


编程语言是计算过程的准确描述,比阅读伪代码清晰太多了。

一段能够运行的代码,会节省很多篇幅来介绍它的作用。

当然,有些读者将计算过程理解为只能是特定语言描述的那样。

那也就不能怪作者如此照顾你而不得不降低整本书的水平了。


这本书,就是从实现的角度来介绍编程语言的。

计算机怎样理解并运行代码,怎样解释它,怎样把它翻译成机器码。

你可以有一个直观的认识。


一个好的产品提供者,总是能站在用户角度看待问题的。

就像好的代码一开始就设计成要被别人使用一样。

本书的作者开发了ANTLR解析器生成器,并且已经25年了。

在大牛的世界里,解析代码文本如庖丁解牛。


作为一个生成器,ANTLR本身都是由自己生成的。

仅从这一灵活的设计理念上,就令人惊叹。

当然,这本书是介绍编程语言的,顺便提了一下ANTLR而已。


计算机是怎么理解代码的呢。

先把字符流分割成单词,然后把这些单词按层次关系构建成一棵语法分析树。

代码的解释执行过程,就是这棵树的遍历过程。


以上称为编译器的前端。

前端已经几乎完成形式化了,有很多现成的工具可用,ANTLR,Lex,Yacc等。

而对于编译器优化和目标代码生成,本书介绍的并不多,可以参考其他读物。

至于后端的形式化,还有待于形式语义学的研究发展。


以上愚见,只是个人的小小总结。

肯定有理解不到位的地方,请多多指正。

如果你看完了这本书,有什么好的见解,请不吝附言。