理论教育 NeoPascal编译器设计之路:声明部分实现

NeoPascal编译器设计之路:声明部分实现

时间:2023-11-04 理论教育 版权反馈
【摘要】:从本章开始,读者将大量接触Neo Pascal的源代码。因此,笔者相信阅读与分析实际编译器的源代码可能是最佳的学习方法。Neo Pascal语义分析器是由100多个语义子程序构成,而语义子程序的调用完全由语法分析器驱动,即语法制导。本小节主要分析符号表管理部分的源代码,而IR生成部分析源代码将在第5、6章中详述。因此,笔者将语法结构(即文法)进行适当分类,然后,详细分析该结构相关的语义子程序。

NeoPascal编译器设计之路:声明部分实现

从本章开始,读者将大量接触Neo Pascal的源代码。在分析源代码之前,笔者想与读者分享一点个人体会。在阅读了一些编译器方面的书籍后,发现语义分析与中间代码生成一直不是国内编译原理教材的讨论重点,不少教材往往轻描淡写或是泛泛而谈,令初学者找不到头绪。当然,笔者不可否认一点,详细阐述语义分析与中间代码生成构造并不容易。它是由一组庞大且耦合的语义子程序构成的,给编写教材带来了困难。因此,笔者相信阅读与分析实际编译器的源代码可能是最佳的学习方法。当然,阅读源代码可能会比较痛苦,笔者对此也深有体会。不过,想深入学习系统软件(操作系统、编译器、网络协议等)的读者可能不得不在绝望中寻找希望。与其他教材上的伪代码片段相比较,本书的优势在于Neo Pascal是一个完整的可运行、调试的编译器。读者结合本书的分析阅读源代码一定能事半功倍。

Neo Pascal语义分析器是由100多个语义子程序构成,而语义子程序的调用完全由语法分析器驱动,即语法制导。根据完成的功能不同,语义子程序通常分为两个部分:符号表管理、IR生成。其中,IR生成又可以细化为语句生成和表达式生成。本小节主要分析符号表管理部分的源代码,而IR生成部分析源代码将在第5、6章中详述。整个语义分析器的源代码规模在3000行左右,对于不少读者而言,直接给出完整的源代码及注释可能意义并不大,相信能一气呵成读完3000行枯燥代码的读者不会太多。因此,笔者将语法结构(即文法)进行适当分类,然后,详细分析该结构相关的语义子程序。不过,这是一项艰难的工作,因为语法结构并不存在明显的界线,可能有时并不是特别精确,请读者谅解。(www.daowen.com)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈