编译原理复习一 词法分析

一.编译程序的基本组成有:词法分析 语法分析 语义分析 中间代码生成 代码优化、目标代码生成 符号表管理和出错处理

其中符号表管理和出错处理贯穿编译的始终。
在这里插入图片描述

编译器的分析-综合模式:
在这里插入图片描述

构词规则与词法分析:

首先规定单词形成的规则,称为构词规则;然后根据构词规则识别输入序列,称为词法分析。

词法分析的基本概念:正规式、正规集、有限自动机,词法分析器的构造

词法分析器的作用:

滤掉源程序中的无用成分;
处理与具体操作系统或机器有关的输入;
识别记号并交给语法分析器;
调用符号表管理器和出错处理器进行相关处理。

词法分析的主要内容:

<1> 记号、模式与单词
<2> 记号的说明-模式的形式化描述(正规式与正规集)
<3> 记号的识别-有限自动机
<4> 从正规式到词法分析器

1.4.5 扫描遍数

在这里插入图片描述

拉链回填技术:

回填技术是指控制语句中布尔表达式翻译成四元式序列时,有的转移地址不能在产生这些四元式的同时得知,需要在适当的时候回填这个地址。
拉链技术是指为了记录需要回填地址的四元式,把需要回填E•ture的四元式拉成一条链,称为“真链”;把需要回填E•false的四元式拉成一条链,称为“假”链;这就是拉链技术。

词法分析 1.单词的基本分类:

关键字(保留字) kw(key word, or reserved word)
标识符 id(identifier)
字面量 literal 一般为常量
特殊符号 ks(key symbol, or special symbol) 逗号 运算符等

例2.1 语句 position := initial + rate * 60
    记号	  id   ks    id   ks id ks number

注意:称识别出id而不是rate或initial
问题:根据什么识别这些词法的基本单位(词法元素)?

2.1.1 三个术语:

模式(patten):产生和识别元素的规则
记号(token): 按照某个模式(或规则)识别出的元素(一组)
单词(lexeme):被识别出的元素自身的值(一个),也称为词值
在这里插入图片描述

2.1.3词法分析器的作用和工作方式

在这里插入图片描述
注意:方式一 和 方式二 的工作方式是串行的,方式二是词法分析器和语法分析器交替串行
并行方式下,词法分析器和语法分析器共享记号流,使用互斥,同步等对记号流进行保护
词法分析器的输出是语法分析器的输入(生产者——消费者工作模式) 特点:效率高于串行 结构复杂

2.2.1 字符串与语言

语言的定义(从词法分析的角度)

在这里插入图片描述
定义中强调两个有限,因为计算机的表示能力有限 :
字母表是有限的,即字母表中元素是有限多个;
字符串的长度是有限的,即字符串中字符个数是有限多个。

2.2.1 字符串的前缀后缀子序列

在这里插入图片描述
S的零次幂 为空串
前缀:位于字符串S前端的0个或n个字符组成的串
后缀:类比前缀
子串:S中去掉前缀或后缀(两者可一块进行)后形成的串
真: 不为空,且不等于S
子序列:S中去掉0或n个连续或不连续的字符后形成的字符串(如 abcdef 去掉b和e acdf)
注意它和子串的区别:子串只能去掉前后连续字符

集合运算:

在这里插入图片描述

运算的优先级和结合性

若正规式的优先级和结合性做下述约定:
1. 三种运算均具有左结合性质;
2. 优先级从高到低顺序排列为:闭包运算、连接运算、或运算。
则正规式中不必要的括号可以被省略。
例如,(a)|(((b))©)可以简化成a|bc。

正规式的等价

不同算术表达式可以表示同一个数,如3+5、5+3、2+6等均表示8。不同正规式也可以表示同一个正规集,即正规式与正规集之间是多对一的关系。

二.NFA DFA的构造

链接在此

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值