编译原理讲义 西北工业大学 计算机学院 康慕宁
编译原理讲义 西北工业大学 计算机学院 康慕宁
第一章 绪论 程序设计语言分低级语言和高级语言两类 低级语言:机器语言、汇编语言及其它面向机器的程序设计语言;其特点对计算机 的依赖性强、直观性差、编写程序的工作量大,对程序设计人员要求较高。 高级语言:有几百种之多,常用的有BASIC、FORTRAN、PASCAL、C、JAVA等, 高级语言在算法描述能力、编写和调试效率上均比低级语言优越。 但高级语言与机器之间有一“鸿沟”:机器不能理解高级语言! 因此,要在计算机上实现高级语言,需使该语言能让计算机所理解。 方法:对程序进行翻译或进行解释。 翻译:在计算机中放置一能由计算机直接执行的翻译程序,它将某程序设计语言 (源语言)所编写的程序(源程序)作为加工对象,将其翻译成为与之等价的另 一种语言(目标语言)的程序(目标程序)。这样的程序被称为编译程序。 可见,计算机执行某高级语言程序,需经两个阶段,即编译阶段和运行阶段。 在执行时,一般应有一些辅助子程序配合。如:数据格式转换子程序、标准函数、 动态存储分配子程序等等,由它们构成的子程序库称为运行系统。 编译系统一编译程序+运行系统
第一章 绪论 程序设计语言分低级语言和高级语言两类 低级语言:机器语言、汇编语言及其它面向机器的程序设计语言;其特点对计算机 的依赖性强、直观性差、编写程序的工作量大,对程序设计人员要求较高。 高级语言:有几百种之多,常用的有BASIC、FORTRAN、PASCAL、C、JAVA等, 高级语言在算法描述能力、编写和调试效率上均比低级语言优越。 但高级语言与机器之间有一“鸿沟”:机器不能理解高级语言! 因此,要在计算机上实现高级语言,需使该语言能让计算机所理解。 方法:对程序进行翻译或进行解释。 翻译:在计算机中放置一能由计算机直接执行的翻译程序,它将某程序设计语言 (源语言)所编写的程序(源程序)作为加工对象,将其翻译成为与之等价的另 一种语言(目标语言)的程序(目标程序)。这样的程序被称为编译程序。 可见,计算机执行某高级语言程序,需经两个阶段,即编译阶段和运行阶段。 在执行时,一般应有一些辅助子程序配合。如:数据格式转换子程序、标准函数、 动态存储分配子程序等等,由它们构成的子程序库称为运行系统。 编译系统=编译程序+运行系统
计算机执行高级语言程序的步豫 源程序P 编译阶段 计算机A 编译程序 目标程序P 运行阶段 数据 计算机B 运行程序 运行结果S
计算机执行高级语言程序的步骤 源程序P 目标程序P’ 运行结果S 编译程序 数据 运行程序 计算机A 计算机B 编 译 阶 段 运 行 阶 段
编译程序与解释程序 口高级语言程序也可通过解释程序来执行 口解释程序:以源程序为输入,在执行过程中不再产生 目标程序,而是边解释边执行。 0 解释程序运行效率不高,但结构简单,适用于小型语 言。目前,纯粹的解释程序已不多见,通常是将编译 和解释作某种程度的结合。 偏禄程摩是现今任何计算机系统的最重要的系统程序 之一。 本课程的目的,在于向大家介绍设计和构造编译程序 的基本原理和基本方法,其中许多方法也适用于构造 解释程序或汇编程序
编译程序与解释程序 高级语言程序也可通过解释程序来执行 解释程序:以源程序为输入,在执行过程中不再产生 目标程序,而是边解释边执行。 解释程序运行效率不高,但结构简单,适用于小型语 言。目前,纯粹的解释程序已不多见,通常是将编译 和解释作某种程度的结合。 编译程序是现今任何计算机系统的最重要的系统程序 之一。 本课程的目的,在于向大家介绍设计和构造编译程序 的基本原理和基本方法,其中许多方法也适用于构造 解释程序或汇编程序
1.1编译过程概述 翻译外文书刊与编译工作比较 翻译外文书刊 编译源程序 阅读原文 输入并扫描源程序 分析 识别单词 词法分析 分析句子 语法分析 修辞加工 代码优化 综合 写出译文 目标代码生成
1.1编译过程概述 翻译外文书刊与编译工作比较 翻译外文书刊 编译源程序 分析 阅读原文 识别单词 分析句子 输入并扫描源程序 词法分析 语法分析 综合 修辞加工 写出译文 代码优化 目标代码生成