本书主要介绍程序设计语言的编译程序的设计技术,主要由编译程序的基本结构、形式语言和自动机理论的基础知识、编译过程各阶段的工作原理和实现方法三部分构成。
编译原理是计算机专业开设的一门重要的专业课程,旨在介绍程序设计语言的编译程序的构造过程、原理和方法。从教学角度来说,编译原理与程序设计基础、离散数学和数据结构等课程联系紧密,它作为后几门课程的综合应用,能够对相关课程内容的深入理解和巩固发挥良好的作用。从技术角度来说,程序设计语言的编译过程涉及的理论与技术有利于更好地形成计算机软件到硬件乃至软硬件协同的概念,也适用于各种系统软件、应用软件的设计和实现。从思维角度来说,编译原理涉及的形式语言理论和自动机理论建立了一种对问题进行抽象、描述和识别,进而从本质上认识、分析和解决问题的思维方法,对工科学生和技术人员抽象思维能力的培养有积极的意义。本书适合作为高等院校计算机专业本科生教材,亦可供准备参加硕士研究生入学考试的考生及从事计算机应用和软件开发工作的工程技术人员参考。编译原理相关理论的专业性强,内容抽象、难理解,因此本书在编写过程中始终坚持以通俗易懂的语言表达实现对学生抽象思维能力的培养。本书在阐释编译各阶段涉及的原理、方法和技术的过程中,对算法的思想、设计过程和具体内容均给出了详细的说明,引导读者设身处地,一步一步地体会其分析和实现过程,整个过程强调问题的抽象描述和分析思路。在厘清、弄透算法知识的同时,提升读者分析问题、解决问题的能力。全书共10章。第1章简单介绍编译的基本概念、过程和编译程序的生成,并对形式语言和文法的相关知识进行说明。从第2章开始,按编译的过程逐一介绍编译各阶段的任务、原理和基本实现技术,包括词法分析、语法分析、语义分析、中间代码生成、运行时存储空间的组织、代码优化、目标代码生成等内容。为帮助读者巩固知识点,把握重点和难点,掌握解题方法,本书在每章最后都给出了精选的习题。书中的例题和习题均以C语言为背景,算法也以C语言的格式给出,从而做到了与程序设计基础、数据结构等先修课程的较好融合。后续将出版与本书配套的学习辅导和实验用书,为本书的每一章配套内容矩阵、例题分析和练习测试。实验包括独立的局部算法实验和综合实验。本书第1~5章由史涯晴独自编写,第6~10章由贺汛、史涯晴共同编写。由于编者水平有限,书中难免存在不当和疏漏之处,敬请广大读者批评指正。编 者2020年5月26日于南京