第一章 引论(1)

1.1 什么叫编译程序

编译程序:是指这样的程序,它能够把某种

语言的程序转换成另一种语言的程序,

而后者与前者在逻辑上是等价的。如果

源语言是诸如FORTRAN、Pascal、C、Ada、

Smalltalk或Java这样的 “高级语言”,

而目标语言如汇编语言之类的 “低级语

言”这样的翻译程序则称之为编译程序。

第一章引 论

注意编译程序与解释程序的区别,一个

语言的解释程序是着样的程序:它以该语

言写的源程序作为输入,但不产生目标程

序,而是边解释边执行源程序本身。

术语 “编译”的内涵是实现从源语言表示

的算法向目标语言表示的算法的等价变换。

第一章引 论

1.2 编译过程概述

掌握编译过程的五个基本阶段,

是我们学习编译原理课程的基本内

容,把编译的五个基本阶段与英译

中的五个步骤相比较,有利于对编

译过程的理解:

第一章引 论

英译与编译的比较

1。识别出句子中的一个个 1。词法分析

单字 2。语法分析

2。分析句子的语法结构 3。语义分析中间代

3。初步翻译句子的含意 码生成

4。译文修饰 4。优化

5。写出最后译文 5。目标代码生成

第一章引 论

1。2 。1词法分析

输入源程序,对构成源程序的字符串进行

扫描和分解,识别出一个个单词(也称

单词符号,或简称符号)

在词法分析阶段工作所依循的是语言的词

法规则。描述词法规则的有效工具是正

规式和有限自动机。

第一章引 论

1。2 。2语法分析

语法分析的任务:在词法分析的基础

上,根据语言的语法规则,把单词符号

分解成各类语法单位(语法范畴),如

“短语”、“句子”、“子句”、“程

序段”等。

语法规则通常用上下文无关文法描述。

第一章引 论

1。2 。3语义分析与中间代码的产生

这一阶段通常包括两方面的工作首先

对各种语法范畴进行静态语义检查,如

果正确则进行另一方面的工作,即进行

中间代码的翻译。

通常使用属性文法描述语义规则

所谓“中间代码”是一种含义明确,

便于处理的记号系统。

中间代码除四元式外,还有三元式、

间接三元式、逆波兰记号、树形表示等。

第一章引 论

1。2 。4 优化

优化的任务在于对前段产生的中间代码

进行加工,以期在最后阶段产生更为高

效(省时间和空间)的代码

优化所依循的原则是程序的等价变换

规则

其方法有:公共子表达式的提取、循

环优化、删除无用代码等。

第一章引 论

1。2 。5 目标代码生成

这一阶段的任务:把中间代码(或经优

化处理后)变换成特定机器上的低级语言代

码。它有赖于硬件系统结构和机器指令含义。

第一章引 论

1。3 编译程序的结构

源程序

词法分析器

计算机的编译原理pdf,计算机编程基础--编译原理.pdf相关推荐

  1. 51单片机c语言程序控制,51单片机C语言编程基础及实例.pdf

    基础知识: 51 单片机编程基础 第一节:单数码管按键显示 第二节:双数码管可调秒表 第三节:十字路口交通灯 第四节:数码管驱动 第五节:键盘驱动 第六节:低频频率计 第七节:电子表 第八节:串行口应 ...

  2. 自学python入门-自学Python编程基础学习笔记 PDF 完整超清版

    一. Why. 为什么学习Python.Python这门语言​用处比较广泛: 1.写测试脚本,因为PY是解释性语言,天生就有作为测试脚本语言的优势,语法简单,通俗易懂,可移植性好(底层使用C语言来编写 ...

  3. java 编程 pdf linux_Linux编程技术详解.pdf

    Linux编程技术详解全面介绍了linux编程相关的知识,内容涵盖linux基本知识.如何建立linux开发环境.linux开发工具.linux文件系统.文件i/o操作.设备文件.进程与进程环境.守护 ...

  4. java原理教程,java基础之运行原理(一),java基础运行原理

    java基础之运行原理(一),java基础运行原理 java的核心配置:JDK JDK主要包括三个部分 1.Jre:java的运行环境 2.Java的工具:java的编译器(java.c.exe). ...

  5. 计算机原理基础知识pdf,计算机原理第一章.pdf

    计算机组成原理 讲授:李凌燕 学时:48 本课程考查目标  本课程对计算机专业来说是非常重要的专业基础 课. 理解单处理器计算机系统中各部件的内部工作原理.组 成结构以及相互连接方式,具有完整的计 ...

  6. 计算机编程基础学习笔记之-1.计算机组成原理

    文章目录 思维导图 1.计算机组成原理 总览 1.计算机体系与结构 1.1 冯诺依曼体系 1.2 冯诺依曼瓶颈 1.3 现代计算机结构体系 2.计算机的层次与编程语言 2.1 程序翻译VS解释 程序翻 ...

  7. 【编程基础】如何自学计算机/编程 | 从零开始的代码之路

    愚者困惑   智者提问 一.编程语言 二.编程技术体系 2.1 编程基础 2.1.1 操作系统 2.1.2 数据结构 2.1.3 编译原理 2.1.4 计算机组成原理 2.1.5 算法 2.2 编程语 ...

  8. 一个计算机专业学生几年的编程经验汇总 (该系列一共 11 篇,看完之后,java 基础绝对有不小的提升!)

    Java 杂谈(一) 想来学习 Java 也有两个年头了,永远不敢说多么精通,但也想谈谈自己的感受,写给 软件学院的同仁们,帮助大家在技术的道路上少一点弯路.说得伟大一点是希望大家为软件 学院争气,其 ...

  9. 微机原理和计算机组成原理一样吗_「连载」信息技术基础题型归纳之计算机组成原理3...

    大学计算机信息技术基础教程题型归纳 计算机组成原理 (题型9-12 共12题型) 题型九:I/O总线与I/O接口 ★ ◆◆理论:I/O总线:I/O总线用来连接作为计算机各子系统的插件板,是各类I/O设 ...

最新文章

  1. 实用python技巧
  2. 老李谈JVM内存模型
  3. 四则运算2+psp0
  4. MATLAB飞机大战第二版,windows程序设计——飞机大战札记(单文档文件登陆界面)...
  5. 「浏览器插件」非常好用的JSON-View
  6. Seq(HDU-6672)
  7. 【note】Swift初见笔记
  8. C语言从入门到精通所需的7本书
  9. Java打印条码,使用热敏条码打印机
  10. coreldraw x4如何出血_CorelDRAW软件出血位详解
  11. 重磅!中国三大数学奖全揭榜,8位数学大神获奖
  12. c语言——求逆矩阵,伴随矩阵,行列式
  13. python输出数字三角形_python 数字三角形
  14. oracle 12c新特性 FETCH FIRST、WITH TIES 关键字详解
  15. 如何解决苹果电脑键盘失灵的问题
  16. bandwagonhost.com (***)机房网速比较
  17. 《C++最佳实践》翻译与阅读笔记
  18. apr 移植android平台,omap3530移植android4.0
  19. 嵌入式之linux用户空间与内核空间,进程上下文与中断上下文
  20. 第八章 USB 设备驱动移植

热门文章

  1. ajax php加载列表实例,jQuery+PHP+ajax实现加载更多内容列表
  2. java double 位运算_JAVA位运算等运算符总结
  3. CSS 定位 (Positioning)
  4. 64位浮点数_浮点数运算的机器误差分析
  5. celeron处理器_显卡和处理器哪个更重要?
  6. ubuntu 更新mysql后无法登陆_更新ubuntu之后无法登陆mysql
  7. JAVA开发出现的BUG集_Java项目开发中一些BUG的总结
  8. python 二项分布_Python绘制的二项分布概率图示例
  9. 南京工业大学python考试题库_程序设计语言(Python程序设计)答案
  10. 安装了email模块还是报错_Git windows安装及使用教程