总结: 本书指导读者用C语言从零开始制作 Crowbar 和 Diksam 两种编程语言,涵盖词法分析、语法分析、代码生成等核心概念,最终实现面向对象和异常处理等高级机制。
你能获得:
yacc
和lex
等工具可以简化语法处理器的开发,解决词法分析和语法分析等问题。global
语句声明函数中引用的全局变量。setjmp()
和 longjmp()
实现异常处理。DBG_NO_DEBUG
宏,可以完全删除执行文件中的调试部分。setlocale()
函数设置区域,以便支持中文编码。A: 静态类型语言在编译时需要声明变量类型,编译阶段会进行类型检查,有助于及早发现类型错误,运行时效率通常更高。动态类型语言则无需声明变量类型,类型检查在运行时进行,代码编写更灵活。
A: 编译型语言将源代码一次性编译成机器码,运行速度快,但移植性较差。解释型语言逐行解释执行源代码,移植性好,但运行速度相对较慢。
A: mark-sweep 垃圾回收机制分为两个阶段:mark 阶段从根对象出发,标记所有可达对象;sweep 阶段清除所有未被标记的对象。可以解决循环引用的问题,但可能产生内存碎片。
本书适合对编程语言内部运行机制感兴趣,并希望通过实践来加深理解的程序员。读者需要具备一定的C语言基础,并能够阅读较长代码。此外,对于想要制作领域专用语言(DSL)或扩展应用程序的开发者,本书也具有一定的参考价值。
在FORTRAN诞生后,编程语言的语法处理器经过了多年的研究,许多难点都已经可以从前人那里找到解决方法。yacc 和 lex 等工具应运而生,简化了词法分析和语法分析的流程。同时,随着硬件的不断发展,人们对于编程语言的性能和功能也有了更高的要求,例如多线程、垃圾回收等。