【编译原理】编译原理概述——基本知识要点汇总

2 篇文章 8 订阅
订阅专栏

halo~我是bay_Tong桐小白
本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点

【更新日志】

最近更新:

  • 更新内容——课程研究内容先导(2021.6.14)
  • 持续更新中……
结构导图

在这里插入图片描述

课程研究内容先导

在这里插入图片描述
在这里插入图片描述
显然这个故事很悲伤……
在这里插入图片描述
在这里插入图片描述
因此,人们需要想办法解决类似这样的问题
在这里插入图片描述
其中的相互转换就是编译原理乃至所有语言处理程序所需要研究的内容
在这里插入图片描述
【更多相关易混概念区分详细见 专业基础专栏 文章 《计算机语言处理相关知识要点区分汇总》】

翻译程序、编译程序、解释程序、汇编程序

翻译程序: 将一种计算机编程语言所编写的程序(源程序)翻译成与之等价的另外一种计算机语言的程序(目标程序),完成这个翻译工作的程序称为翻译程序。编译程序、解释程序、汇编程序均被认为是翻译程序

在这里插入图片描述
编译程序: 源程序语言是高级语言,目标程序语言是汇编语言或机器语言之类的低级语言,这样的翻译程序称为编译程序
在这里插入图片描述
解释程序: 在词法、语法、语义分析方面与编译程序的工作原理基本相同,但在执行过程中不产生目标程序,而是直接解释执行源程序或源程序的内部形式(中间代码),即边解释边执行
在这里插入图片描述

汇编程序: 源程序语言是汇编语言,输出目标程序语言是机器语言,这样的翻译程序称为汇编程序
在这里插入图片描述
通常目标程序文件仍不能被CPU直接执行,需要通过链接程序进行连接后才可生成可执行程序.EXE。现代编译器通常包含以下的主要工作流程:
在这里插入图片描述


在这里插入图片描述
编译原理学科主要研究的即是编译程序的相关知识内容

汇编更多基础概念及相关知识内容详细见 《微机原理与接口技术》 专栏

编译过程及编译程序的基本结构

编译过程主要分为五个阶段(词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码生成),五个阶段的任务分别由五个程序完成

词法分析概述

该阶段任务是对构成源程序的字符串从左到右进行扫描和分解,根据语言的词法规则识别出一个个具有独立意义的单词,确定单词的类型,将识别出的单词转换成统一的机内表示——词法单元(token)形式。完成该任务的程序为词法分析程序

【简单说,即进行词法分类】以两行C语言代码为例
在这里插入图片描述
token:< 种别码,属性值 >
在这里插入图片描述
举一个例子:
在这里插入图片描述

语法分析概述

该阶段任务是在词法分析的基础上,根据语言的语法规则从词法分析器输出的token序列中识别出各类短语,并构造语法分析树。完成该任务的程序为语法分析程序

【简单说,即进行语法结构的分析构造。如 变量 = 表达式 构成一个赋值语句】
在这里插入图片描述

语义分析及中间代码生成概述

首先对每种语法单位进行静态的语义审查,然后分析其含义,并用另一种语言形式(比源语言更接近于目标语言的一种中间代码或直接用目标语言)来描述这种语义。完成该任务的程序为语义分析及中间代码生成程序

【简单说,即进行语义审查、生成中间代码】

语义分析的主要任务:

1)收集标识符的属性信息

  • 种属:简单变量、复合变量(数组……)、过程……
  • 类型:整型、实型、字符型、布尔型、指针型……
  • 存储位置、长度
  • 作用域
  • 参数和返回值信息:参数个数、参数类型、参数传递方式、返回值类型……

2)语义检查

在这里插入图片描述
常用的中间表示形式:三地址码(由类似于汇编语言的指令序列组成,可表示成四元式、三元式、间接三元式)、语法结构树(简称语法树)【PS:语法结构树不同于语法分析树】

代码优化概述

对前阶段产生的中间代码进行等价变换或改造,以期获得更为高效(省时间省空间)的目标代码。完成该任务的程序为代码优化程序

优化主要包括局部优化和循环优化,使其运行得更快一些,或占用空间更少一些,或二者兼顾

目标代码生成概述

将中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。目标代码生成的一个重要任务是为程序中使用的变量合理分配寄存器

【简单说,即由优化的中间代码转换生成目标代码】

表格管理和错误处理

在编译程序的各个阶段中,都涉及表格管理【记录源程序所使用的变量名、属性等各种相关信息】和错误处理【差错并准确报告错误的种类及出错位置】,分别由表格管理程序和错误处理程序完成

以上为一个典型的编译程序的主要组成部分,结构框图如下:
在这里插入图片描述
编译前端与编译后端:
在这里插入图片描述
优点:程序逻辑结构清晰;优化更充分

PS:编译过程中几个相邻,有联系的阶段的工作可以一起进行,如语法分析进行句子结构分析的同时结合语义规则直接进行语义分析,这一技术称为语法制导翻译

编译程序的生成方法

生成一个编译程序一般要考虑以下几个方面:

  • 对源语言和目标语言认真分析
  • 设计编译算法
  • 选择语言编制程序
  • 调试编译程序
  • 提交相关文档资料

持续更新中……
我是桐小白,一个摸爬滚打的计算机小白

东北大学2022年编译原理实验课——词法分析——简单扫描器设计(C++实现)此版本为免文件版本
05-05
东北大学2022年编译原理实验课——词法分析——简单扫描器设计: 【问题描述】 熟悉并实现一个简单的扫描器,设计扫描器的自动机;设计翻译、生成Token的算法;编写代码并上机调试运行通过。 要求扫描器可识别的单词...
编译原理》——期末复习.docx
06-10
《编译》——复习资料,可适用于课程学习资料、期末复习资料、自主学习资料等等,复习资料共218页,内容丰富,干货十足! 主要内容包括: 一、概述 1 1.1 课程介绍 1 1.2 编译过程 3 1.3 高级语言程序简介 11 二、程序语言概论 14 2.1 程序语言的定义 14 2.2 文法的形式化定义和分类 18 2.3 文法和语言 22 2.4 语法分析树 29 三、词法分析_1 33 3.1 词法分析概述 33 3.2 词法分析程序的设计 38 3.3 正规式与自动机 41 3.3.1 正规式与正规集 41 3.3.2 确定有限自动机(DFA) 44 3.3.3 非确定有限自动机(NFA) 49 3.4 单元测试 51 四、词汇分析_2 52 4.1正则式和有限自动机的等价 52 五、词法分析_3 59 5.1 DFA的化简 59 六、词法分析_4 62 6.1 词法分析器的自动生成 62 6.2 词法分析程序实现实例 64 七、语法分析—自上而下分析_1 71 7.1 词法分析简介 71 7.2 自顶向下分析简介 73 7.3 消除左递归和回溯 76 八、语法分析—自上而下分析_2 80 8.1 LL(1)分析法 80 8.2 FIRST集和FOLLOW集的构造 82 8.3 单元测试 85 九、语法分析—自上而下分析_3 86 9.1 LL(1)分析表的构造 86 9.2 递归子程序的原理 89 9.3 单元测试 95 十、语法分析—自下而上分析_1 96 10.1 自下而上分析方法的基本思想 96 10.2 分析树与规范规约 99 10.3 符号栈的使用 103 10.4 单元测试 105 十一、语法分析—自下而上分析_2 106 11.1 算符优先文法 106 11.2 优先表构造 109 11.3 算符优先分析算法 112 10.4 单元测试 115 十二、语法分析—自下而上分析_3 116 12.1 LR分析器 116 12.2 LR分析过程 119 12.3 单元测试 132 十三、语法分析—自下而上分析_4 133 13.1 构造识别前缀的DFA 133 13.2 LR(0)项目集规范族构造 140 13.3 由DFA构造LR(0)分析表 146 13.4 单元测试 150 十六、属性文法和语法翻译制导 151 16.1 L-属性文法和自顶向下翻译 151 16.2 自下而上计算继承属性 159 十七、语义分析和中间代码产生_1 166 17.1 语义分析的任务 166 17.2 中间代码的生成 168 17.3 算术表达式和赋值语句 175 17.4 单元测试 178 十八、语义分析和中间代码产生_2 179 18.1 布尔表达式的作用和文法描述 179 18.2 做控制用布尔表达式的翻译(回填) 181 18.3 控制流语句的翻译 186 18.4 控制流语句的翻译(回填) 189 十九、代码优化_1 194 19.1 什么是代码优化 194 19.2 基本块及流图 199 19.3 单元测试 202 二十、代码优化_2 203 20.1 基本块的DAG表示及其作用 203 二十一、重要知识点 213 1. 考试内容及分数分布 213 2. 名词解释 214 3. 简答题 215 4. 结语 216
编译原理总结,看这一篇就够了!
LeeDuoZuiShuai的博客
03-15 10万+
编译原理总结第一章 编译概述一.翻译程序的三种方式二.编译程序的五个阶段第二章 文法与语言2.1 符号串和语言2.1.1 字母表2.1.2 符号串2.1.3 语言2.2 文法和语言的形式化定义2.2.1 文法的形式化定义2.2.2 语言的形式化定义2.2.3 短语、直接短语、句柄2.2.4 规范推导和规范归约2.3 语法分析树与文法的二义性2.3.1 语法分析树2.3.2 文法的二义性2.3.4 ...
编译原理知识点整理
最新发布
道可道非常道
03-29 831
编译的本质是翻译(将源语言翻译成目标语言)将汇编语言翻译成机器语言的过程称为汇编将高级语言翻译成汇编语言或者机器语言的过程称为编译编译器直接将源程序翻译成目标程序进行执行解释器直接读取源程序逐行执行词法分析(lexical analysis/scanning)从左到右逐行扫描源程序的字符,识别出各个词素(lexeme)序列(即单词),确定单词的类型,将识别出的单词转化为机内表示形式-词法单元(token)的形式token的组成结构:token<种别码,属性值>单词类型种别种别码关键词。
编译原理——常见名词解释.docx
06-10
编译原理——常见名词解释,包括编译原理课程每一章节重要名词和常见名词的介绍和解释。 例如:编译程序是一种程序,它把高级语言编写的源程序翻译成与之在逻辑上等价的机器语言或汇编语言的目标程序。 一个高级语言程序的执行通常分为两个阶段,即编译阶段和运行阶段。如果编译生成的目标程序是汇编语言形式,那么在编译与运行阶段之间还要添加一个汇编阶段。
编译原理】期末复习(引论、词法分析、语法分析、语法制导翻译、中间代码生成、代码生成)
m0_52733659的博客
06-29 1954
文章目录参考资料前言大纲1. 引论编译的各个阶段编译器和解释器的区别2. 词法分析概念正规式定义示例正规定义FANFADFANFA 与 DFA 的对比NFA 转 DFAepsilon-closuremove子集构造法算法示例DFA 的化简思想算法示例正规式构造 NFA规则示例3. 语法分析概念推导概念分析树最左推导与最右推导二义性消除左递归左递归消除直接左递归消除间接左递归First 与 Follow 集合First介绍算法示例Follow介绍为什么要有 Follow 集合算法示例自上而下分析LL(1)文法
编译原理编译原理简明教程知识点梳理(应对考试版)
weixin_53472920的博客
09-09 2008
翻译程序:把某种程序设计语言(源语言)编写的程序(源程序)翻译成与之等价的另一种语言(目标语言)的程序(目标程序)。编译程序:编译程序是一种翻译程序,将高级语言编写的源程序翻译成等价的机器语言或汇编语言的目标程序。解释程序:翻译一句执行一句,不生成目标文件,直接执行源代码文件。
编译原理概述
woyaottk的博客
03-23 3579
概述 编译本质上就是吧源代码翻译成目标代码的过程 编译分为6个阶段 词法分析 语法分析 语义分析 生成中间代码 优化 生成目标代码 词法分析(Lexical Analysis) 词法分析就是把字符串转化为Token的一个过程 Token:就是单词的意思,程序里面的单词叫Token,它可以分成关键字、标识符、字面量、操作符号等多个种类。 字符串:程序本质上就一个字符串 语法分析(Syntactic Analysis) 目的是让编译器对这对Token进行语法分析,检查是否有语法错
编译原理
热门推荐
sundingh的博客
12-04 11万+
http://blog.csdn.net/shawjan/article/details/44652807 一、 编译程序 1、 编译器是一种翻译程序,它用于将源语言(即用某种程序设计语言写成的)程序翻译为目标语言(即用二进制数表示的伪机器代码写成的)程序。后者在windows操作系统平台下,其文件的扩展名通常为.obj。该文件通常还要经过进一步的连接,生成可执行文件(机器代码写成
编译原理(核心速成)
Edward2022的博客
03-21 5868
编译原理(混子速成): 1.DFA、NFA 2.LL文法、LR文法:FIRST、FOLLOW
一文快速了解编译原理编译原理基本概念】
Suprit's blog
03-27 1521
一文带你快速了解编译原理 一个写的很不错的编译原理系列博客 编译原理概述 编译器与解释器 编译器将程序员编写的源文件编译称可执行的目标程序(如.exe, .class)。像C++、Java这种高级语言(又称编译型语言)都有自己的编译器。 除了编译器之外还有一种叫做解释器,对应的就是解释性语言,最著名的例如Python,JavaScript。 各自特点 编译器:工作效率高,时间快、空间省;交互性与动态性差,可移植性差。 解释器:工作效率低,时间慢、空间费;交互性与动态性好,可移植性好。 几种程序的区.
编译原理实验1——词法分析器设计
07-08
编译原理实验1——词法分析器设计(java) 利用Java实现基本初等函数词法分析器设计
编译原理要点概述
02-25
通过学习本文档,可以对编译原理基本知识有较好的了解。
2020最新南开大学编译原理期末复习知识点总结
06-08
吐血整理,老师上课的全部知识,34页全部罗列:程序设计语言,状态图,有限状态机,词法分析,正则表达式,Thompson构造法,上下文无关文法预测分析表,FIRST集:所有产生式右边的第一个终结符 FOLLOW集。。。若文法...
【复试】编译原理知识点总结
可乐大牛的博客
04-03 4846
文章目录绪论编译基础知识 绪论 编译的流程:词法分析,语法分析,语义分析和中间代码生成,优化,目标代码生成 词法分析任务:按照词法规则,对构成源程序的字符串进行扫描和分解,识别出一个个的单词,单词包括基本字、运算符、界限符、标识符、常数,将其添加到符号表,并转换成统一规格输出,格式为(类号,内码)/(单词种类符号,单词自身值); 词法分析核心是扫描器,描述词法规则的有效工具是正规式(正规文法/3型文法)和有限状态自动机。 基本字、运算符、界限符、标识符是一个符号一个种类,值就是按机器字节划分的内码 常数一个
编译原理详细总结
weixin_44478207的博客
09-08 5886
编译原理 编译概述   把高级程序语言翻译成汇编语言或机器语言的工作称为编译,完成这项翻译工作的软件系统称为编译程序或编译器。下图展示高级语言从编译到执行的大致过程(本文中图片来源均为张莉等编著的《编译技术》)。   对于纯编译型语言(如c),程序在执行之前必须要有编译过程。对于解释型的语言,可以对源代码或中间代码按行解释执行。 文法和语言的概念和表示 词法分析 语法分析 符号表管理 运行时的存储组织及管理 源程序的中间形式 语义分析和代码生成 ...
编译原理----概述
Chas的博客
12-07 515
编译原理 资源整理一
编译原理————词法分析器
11-26
编译原理是计算机科学中的一个重要分支,它研究如何将高级语言编写的程序转换成计算机能够执行的机器语言程序。其中,词法分析器是编译器中的一个重要组成部分,它负责将源代码中的字符序列转换成有意义的单词序列,也就是词法单元。 词法分析器通常采用有限状态自动机(Finite State Automaton,FSA)来实现。它将源代码作为输入,逐个字符地读入并进行状态转移,直到识别出一个完整的词法单元。在这个过程中,词法分析器会忽略空格、注释等无关字符,并将识别出的词法单元传递给语法分析器进行下一步处理。 词法分析器的主要任务包括:定义词法单元的类型和模式、实现有限状态自动机、处理错误和异常情况等。在实际编译器中,词法分析器通常由生成器自动生成,开发者只需要定义好词法单元的类型和模式即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【编译原理】编译原理概述——基本知识要点汇总 14148
  • 【软件工程】软件工程系统开发——系统设计概述 13374
  • 【计算机组成原理】存储器层次结构总结——基本知识要点汇总 11360
  • 【软件工程】软件工程系统设计——详细设计(过程设计) 10260
  • 【软件工程】软件工程需求分析——结构化分析 9509

分类专栏

  • 专业基础 8篇
  • 数据结构(初稿) 8篇
  • 计算机组成原理 7篇
  • 微机原理与接口技术 2篇
  • 编译原理 2篇
  • 计算机体系结构 1篇
  • 操作系统 3篇
  • 计算机网络 2篇
  • 网络安全 7篇
  • 软件工程 9篇
  • C++ 1篇
  • Unreal Engine 3篇
  • 电子综合实践 5篇
  • 平面设计 1篇
  • 随笔 1篇

最新评论

  • 【编译原理】编译原理概述——基本知识要点汇总

    吴益丰: 总结的太好了,6翻了

  • 【电子综合实践与创新】助听器的综合实现(二)——用 Altium Designer 进行电路设计

    2301_78196628: 这个BA1和P1的封装在哪里找呢

  • 【数据结构(初稿)】树和二叉树总结——基本知识要点汇总

    blue of xizang: 二叉树的性质4那里推导不对吧

  • 【电子综合实践与创新】助听器的综合实现(四)——元器件焊接和电路调试与维修

    你头发长了呀: 你好 有源文件吗

  • 【数据结构(初稿)】树和二叉树总结——基本知识要点汇总

    Lsc_one_thousand: 由两种遍历序列确定二叉树的部分: 先后序遍历的例子(图)中: 先序遍历:AB 后序遍历:AB 这地方与先序遍历和后序遍历规则有冲突。

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 【随笔】在CSDN的第一年,你好,桐小白~ —— 在CSDN的一岁生日
  • 【操作系统学习实践】从零开始制作,开发操作系统(一)—— 汇编语言的编写以及映像文件的制作
  • 【操作系统学习实践】从零开始制作,开发操作系统(零)—— 着手开发之前,整体初步了解与计算机启动过程简述
2021年19篇
2020年41篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司鹤壁网站排名优化哪家好宿州模板推广报价临汾网站设计报价忻州网站优化软件价格庆阳关键词按天计费公司苏州网络推广公司黄南企业网站制作价格东营网站优化推荐宁波优化报价兴安盟优化哪家好泸州关键词排名包年推广报价泸州网站设计模板推荐惠州网站推广系统哪家好宁波网站定制多少钱滨州网站推广哪家好防城港模板网站建设价格忻州网站推广方案推荐漳州SEO按天收费哪家好深圳网站设计模板报价广安建网站哪家好呼和浩特企业网站建设价格娄底网站开发报价舟山百度seo报价丹竹头SEO按天扣费报价宜春百姓网标王推广酒泉SEO按天扣费价格昆明关键词排名报价重庆网站搜索优化报价南山优化盘锦优秀网站设计公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化