5.第三章词法分析(1)解析

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1) 单词符号的表示


常用单词符号种别——分类(P42) 各关键字(保留字、基本字),各种运算 符,各种分界符——各用一个种别码标识 其它标识符——用一个种别码标识 常数——用一个种别码标识 属性(值)——单词符号的值 常数的值,标识符的名字等 保留字、运算符、分界符的属性值可以省 略
有限自动机 DFA NFA 等价
自动生成工具LEX,用正规式描述, 扫描器 象FA一样工作(3.4)
3.1 对词法分析器的要求
3.1.1 词法分析器的功能和输出形式

输入源程序,扫描识别, 输出单词符号 程序语言的单词符号一般分为五种: 关 键 字 ( 保 留 字 或 基 本 字 ) : 如 begin,end,if,then,else,while,do等 标识符:用来表示各种名字,如 X1 字面常数:如 256,3.14,true,‘abc’ 运算符:如 +、-、*、/ 等等 分界符:如 逗号,分号,冒号等
单词符号的内部表示

单词符号的内部表示是二元式: (词类种别编码, 单词符号自身的属性值) 1. 词类种别编码提供给语法分析程序 使用; 2. 单词自身的属性值提供给语义分析 程序使用。 3. 具体的分类设计方法以方便语法分 析程序使用为原则。
2018/11/14 Ch3.词法分析 11
14
3.2.1 输入、预处理

词法分析器工作的第一步是输入源程序文本。
输入串一般放在一个输入缓冲区中。但在许多情况下, 可以先预处理输入串,识别工作将更方便。 预处理工作包括对空白符、跳格符、回车符和换行符 等编辑性字符的处理,及删除注解等。


可以构造一个预处理子程序完成上面的工作。每当词 法分析器调用它时就处理出一串确定长度的输入字符, 并将其装入指定的缓冲区 --- 扫描缓冲区中。 这样分析器就可以在扫描缓冲区中直接进行单词符号 的识别工作。 P40.图3.1词法分析器的结构
15

输入、预处理:词法分析第一步
内存
预处理程序
预处理 扫描缓冲区 扫描识别 词法分析程序 输入缓冲区 扫描识别 外存
读入
源程序 文本
16
2)相关问题


词法分析器可以作为一个独立的子程序, 也可以作为一遍独立的扫描来安排。 输入缓冲区
正拼单词
单词开始指针 •双缓冲区
•并行、捻接
扫描指针
工作区 (token)
例子

考虑下述C语言代码段: while (i>=j) i- -; 经词法分析器处理后,它将转换为如下的单 词符号序列:
< while, - > < ( , - > < id ,指向i的符号表项的指针 〉 < >= , - > < id ,指向j的符号表项的指针> 10 < ) , - > < id ,指向i的符号表项的指针 > < - - , - > < ; , - >
单词的机内表示
编译器使用二元式标识特定的标识符: <单词类别,该单词所在符号表项的地址>
又称种别码
单词值 单词值
关键字和分界符若采用一字和一符一种编码 时,单词值无意义;倘若一类一种编码,单词值 可取整数的内部编码或自身的符号串表示。标识 符的单词值可取单词符号本身;常数的单词值通 常取二进制表示。
6

while i<>j do if i>j then i:=i-j else j:=j-i ;
输入
词法分析器
输出
while i <> j do if i > j then i else j := j - i := ;
7
i

j
3.1 .1 词法分析(扫描)器的功能



功能: 读源程序,产生记号序列 剥去源程序中的注释(块、行)和“空白” 符 预处理-宏处理与文件包含 单词符号的形式 按照最小的语义单位设计 通常表示为二元组: (单词符号种别,属性值 ) 关键——找出符号的分割符
2018/11/14 Ch3.词法分析 3



教学要求

掌握:
正规式、状态转换图、有限自动机的 概念, 将NFA转换为DFA、DFA的化简、 正规式与有限自动机间的转换、 正规文法与有穷自动机间的转换, 词法分析程序的功能和设计方法。


了解理解:

词法分析器的自动产生工具LEX。
如标识符单词 i 对 应的二元组(6, 10) 符号表
名字 …… 地址

i

100


12
3.1.2 词法分析器作为独立子程序
把词法分析设计成一个独立程序,每当语法分 析器需要一个单词符号时就调用这个子程序。 每一次调用,词法分析器从源程序字符串中识 别出一个单词符号,并把它的内部表示二元组 交给语法分析器处理。如图所示:
2)相关问题
: : :E: :=: :M: * C : * : * : 2 : eof : : : :
第3章 词法分析
词法分析(Lexical Analysis) 词法的表示 词法分析器的设计与实现
本章在编译程序中的地位
源程序
词法分析器
单词符号 表 格 管 理 优化器 中间代码 目标代码生成器 目标代码 语法分析器 语法单位 语义分析与中间代码产生 中间代码 出 错 处 理
2
主要教学内容

3.1 词法分析器的功能、输出形式和结构 3.2 词法分析程序的设计方法 --- 重点 3.3 正规表达式与有穷状态自动机 --- 重 点难点 3.4 词法分析器的自动产生
4
词法分析涉及的概念及关系
源程序 (字符串) 扫描识别, 依据构词规则 词法分析程序(扫描器) 生成 描述 工具 手工生成 (3.2) 单词符号串
[输入]
输入, 扫描 (3.2)
单词分类 (3.1) 内部表示
[输出]
预处理, 超前搜索
状态转换图 用程序实现, 即扫描器
自动生成 (3.3) 等价
正规式, 正规集

语法分析器
源 程 序 中 间 代 码
13
词法分 析器
语义分析和 中Baidu Nhomakorabea代码生成器
3.2

词法分析器的设计



3.2.1 输入、预处理 处理源程序输入的技术 3.2.2 单词符号的识别:超前搜索 识别单词符号的技术 3.2.3 状态转换图 单词符号结构的一种图形表示方法 识别单词符号的一种方法 3.2.4 状态转换图的实现 词法分析程序的一种手工构造方法 状态转换图 词法分析程序
相关文档
最新文档