编译原理截图

1
1.2编译器相关程序
解释程序:与编译器不同,是立即执行源程序,而不是翻译完成之后才执行目标代码。
根据所使用的语言情况决定解释程序还是编译器。(Basic通常使用解释)

汇编程序:特定计算机上的汇编语言的翻译程序。
汇编语言是计算机的机器语言的符号形式,它极易翻译。

连接程序
编译器和汇编程序都依赖于连接程序。
将不同目标文件中编译或汇编的代码收集到一个可执行的文件中。

装入程序:
处理所有的与指定的基地址或起始地址有关的可重定位的地址。
使可执行代码更灵活,通常是在后台,极少是独立实际程序。

预处理器:
翻译前编译器调用的独立程序。可以删除注释。。。

编辑器
接收由任何生成标准文件的编辑器编写的源程序

调试程序
在被编译的程序中判定执行错误的程序。
与直接执行不同,保存着大多数源代码信息,在预先指定的位置暂停执行

描述器
在执行中搜集目标程序行为统计的程序

项目管理程序
由不同的程序员制作的文件的各个版本整理在一起,保存为一组文件的更改历史,维持正在开发程序的连贯版本
在这里插入图片描述
扫描程序:执行词法分析,字符序列收集到记号的单元中
在这里插入图片描述
语法分析程序:从扫描程序中获取记号的源代码,定义程序结构的语法分析。
在这里插入图片描述
语义分析程序:将所有子表达式类型来标注语法树,检查复制是否使这些类型有意义。
在这里插入图片描述
源代码优化程序
在这里插入图片描述
在这里插入图片描述
代码生成器:得到中间代码,生成目标机器代码。
目标代码优化程序

1.4编译器中的主要数据结构
(1) 记号(t o k e n)将字符收集到一个记号中时,它通常是以符号表示这个记号
(2) 语法树(syntax tre e)
(3) 符号表(symbol table)与标识符有关:函数、变量、常量以及数据类型
(4) 常数表(literal table)存放在程序中用到的常量和字符串
(5) 中间代码(intermediate code)码可以是文本串的数组、临时文本文件或是结构的连接列表。
(6) 临时文件(t e m p o r a ry file)
在这里插入图片描述
1.5 编译器结构中的其他问题
(1) 分析和综合
分析:将分析源程序以计算其特性的编译器操作
综合:将生成翻译代码时所涉及到的操作
(2) 前端和后端
只依赖于源语言(前端( front end))的操作和只依赖于目标语言(后端(back end))的操作两部分
扫描程序、分析程序和语义分析程序是前端
代码生成器是后端
一些优化分析可以依赖于目标语言,这样就是属于后端了,
然而中间代码的综合却经常与目标语言无关,因此也就属于前
端了。
(3) 遍:在生成代码之前多次处理整个源程序
根据语言的不同,编译器可以是一遍( one pass)——所有的阶段由一遍完成,其结果是编译得很好,但(通常)代码却不太有效。 P a s c a l语言和 C语言均允许单遍编译。
(4) 语言定义和编译器
(5) 编译器的选项和界面
(6) 出错处理
在这里插入图片描述
在这里插入图片描述
第2章 词 法 分 析
正则表达式(regular expression)和有穷自动机(finite automata)。
2.1 扫描处理
记号通常定义为枚举类型的逻辑项。
2.2 正则表达式

  1. 基本正则表达式 它们是字母表中的单个字符且自身匹配。
    { }集不包括任何串,而{ }则包含一个没有任何字符的串。
  2. 正则表达式运算
    选择:用元字符|(竖线)表示。
    ②连结,由并置表示(不用元字符)。
    ③重复或“闭包” :由元字符*表示。
  3. 从各选择对象中选择
  4. 连结L
    L (r s) = L ® L (s), (( a | b ) c) = L ( a | b ) L © = {a, b} {c} = {ac, bc}。
  5. 重复
    例如a *匹配串 、a、a a、a aa . .
  6. 运算的优先和括号的使用
  7. 正则表达式的名字

的标准正则表达式的一些扩展情况
(1) 一个或多个重复并写作 r *。
(2) 任意字符
句号“ .”表示任意字符匹配的典型元字符
(3) 字符范围
(4) 不在给定集合中的任意字符
非a 字符的正则表达式就是~ a。
中使用插入符“^”和上面所提的字符类来表示互补。任何非a 的字符可写作[ ^ a
(5) 可选的子表达式
natural = [0-9]+

2.3 有穷自动机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
请注意这个D FA是如何修改前例中的D FA,它将初始状态变成另一个的接受状态。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新的有穷自动机称作非确定性有穷自动机( nondeterministic finite automaton)或简称为
N FA。在对它下定义之前,还需要为在扫描程序中应用有穷自动机再给出一个概括的讲法: -
转换的概念。
-转换( - t r a n s i t i o n)是无需考虑输入串(且无需消耗任何字符)就有可能发生的转换。
它可看作是一个空串的“匹配”,空串在前面已讲过是写作 的。 -转换在图中的表示就好像
是一个真正的字符:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.4 从正则表达式到D FA
在这里插入图片描述

  1. 基本正则表达式 基本正则表达式格式a、 或 ,其中a表示字母表中单个字符的匹配,
    表示空串的匹配,而 则表示根本不是串的匹配。与正则表达式a等同的N FA(即在其语言中
    准确接受)的是:
    在这里插入图片描述
  2. 并置 我们希望构造一个与正则表达式r s等同的N FA,其中r 和s 都是正则表达式。假设
    已构造好了与r 和s 等同的N FA,并用N FA对应r 且与s 类似来写出它:
    在这里插入图片描述
  3. 在各选项中选择 我们希望在与前面相同的假设下构造一个与 r | s 相对应的N FA。如下
    进行:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2.4.2 从N FA到D FA
    2.6 利用L e x自动生成扫描程序
    2.6.1 正则表达式的L e x约定
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    第3章 上下文无关文法及分析
    3.1 分析过程
    分析程序的任务是从由扫描程序产生的记号中确定程序的语法结构,以及或隐式或显式地
    构造出表示该结构的分析树或语法树。因此,可将分析程序看作一个函数,该函数把由扫描程
    序生成的记号序列作为输入,并生成语法树作为它的输出:
    在这里插入图片描述
    3.2 上下文无关文法
    上下文无关文法说明程序设计语言的语法结构。
    3.2.1 与正则表达式比较
    在这里插入图片描述
    3.2.2 上下文无关文法规则的说明
    文法规则是定义在一个字母表或符号集之上。
    符号通常是表示字符串的记号。
    在这里插入图片描述
    3.3 分析树与抽象语法树
    3.3.1 分析树
    在这里插入图片描述
    在这里插入图片描述
    3.3.2 抽象语法树
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述3.4.1 二义性文法
    在这里插入图片描述
    在这里插入图片描述
    3.4.2 优先权和结合性
    在这里插入图片描述
    在这里插入图片描述
    算术加法或串的并置表现为可结合运算( associative operation)(若对于所有
    的值a、b 和c,且有(a·b)·c = a·(b·c),那么二进制算符“·”也是可结合的)。此时的语
    法树仍然各不相同,但是却表示相同的语义值,而且我们可能也无需在意到底使用的是哪一个。

3.5.1 EBNF表示法
在这里插入图片描述
3.6.1 上下文无关语言的形式定义
定义 上下文无关文法由以下各项组成:

  1. 终结符(t e r m i n a l)集合T。
  2. 非终结符(n o n t e r m i n a l)集合N(与T不相交)。
  3. 产生式(p r o d u c t i o n)或文法规则(grammar rule)
  4. 来自集合N的开始符号(start symbol)。

在这里插入图片描述
第4章 自顶向下的分析
4.1.1 递归下降分析的基本方法
递归下降分析的概念极为简单:将一个非终结符 A的文法规则看作将识别 A的一个过程的
定义。A的文法规则的右边指出这个过程的代码结构:一个选择中的终结符与非终结符序列与
下一章将要研究的自底向上的分析算法有一些也需要这些集合。
相匹配的输入以及对其他过程的调用相对应,而选择与在代码中的替代情况( c a s e语句和i f语
句)相对应。
4.2.1 LL(1)分析的基本方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.2.2 LL(1)分析与算法
在这里插入图片描述
这个规则的观点是:在规则1中,在输入中给出了记号a,若a可为匹配生成一个a,则希望
挑选规则A→a。在规则2中,若A派生了空串(通过A→a),且如a 是一个在推导中可合法地出
1 1 4 编译原理及实践 下载
现在A之后的记号,则要挑选A→a以使A消失。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.3 First集合和F o l l o w集合
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.3.3 构造L L ( 1 )分析表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值