#编译原理# 词法分析(三)第二部分

编译原理笔记第三部分,由于内容过长所以分为了两部分,跳转链接在总阅读目录处,内容参考:北航软院教师邵兵课堂课件及内容、张莉著《编译原理及编译程序构造》、国防工业出版社的《编译原理——学习指导与典型题解析》、AlvinZH的学习笔记以及个人理解

目前是包含了全部内容的版本,后续会推出精简版和复习知识点版

如有建议或错误错误欢迎在评论中指出或联系我:QQ:847590417

总阅读目录

第一部分:

3.1 词法分析程序的功能及实现方案

3.2 单词的种类及词法分析程序的输出形式

3.3 正则文法及状态图

3.4 正则表达式与有穷自动机FA

第二部分:

 

本章总内容

重点:词法分析介绍、词法分析单词种类划分、正则文法、状态图、正则表达式、自动机、自动机的转化、表达式文法和自动机的转化、词法分析程序的设计实现,词法分析程序自动生成器LEX。

 

之前的内容

词法分析介绍、词法分析单词种类划分、正则文法、状态图、正则表达式、自动机、自动机的转化会在第三章的第一部分进行介绍。

 

3.5 有穷自动机、正则文法、正则表达式的转化

转化流程图:

#编译原理# 词法分析(三)第二部分

以下转换的顺序是按图上箭头的顺序进行排序的(NFA包含DFA,所以和NFA的转化可能称之为DFA的转化)。

 

0.正则文法G转状态图

绘制左线性文法的状态图(状态图只能用于左线性文法,这是和后面的DFA的明显区别)状态图的绘制没有严格规定(右线性的暂时不做考虑)

1.文法的非终结符号是一个个的结点

2.设一开始状态S(句子)

3.对规则Q::=t(t为终结符),需要一条从S到Q的一条弧,弧上标记为t

4.对Q::=Rt,画一条从R到Q的弧,弧上标记为t

(倒,谁规约于谁,谁指向谁)

5.根据自动机方法,可加上开始状态和终止状态标志,识别符号作终止状态,用双圆圈标识

1.DFA M转正则文法 G

规则:

1.对(A,t) = B,写成:A→tB(只推右线性,左线性在推导时可能递归)

2.对每个可接受状态Z(终止状态),增加产生式Z→ε

3.有穷自动机的初态对应文法开始符号,有穷自动机的字母表为文法的终结符号集

例:

 

#编译原理# 词法分析(三)第二部分

  2.正则文法 G转DFA M

规则:(和状态图的转化类似)

1.字母表(弧上的所有符号组成的表)和G的终结符号相同

2.为G中的每个非终结符生成M的一个状态,G大的开始符号S是开始状态S

3.增加一个新状态Z,作为NFA的终态

4.对G中的形如A→tB,其中t为终结符或空字符,A和B为非终结符号的产生式,构造M的一个转换函数(A,t)=B

4.对G中形如A→t的产生式,构造M的一个转换函数(A,t)=Z

例:

 

#编译原理# 词法分析(三)第二部分

  3.正则表达式转DFA M

他们是等价的

定理:在Σ上的一个字集V,V是Σ*的子集,是正则集合,当且仅当存在一个DFA M使V=L(M).

规则:

一个正则表达式,构建时从左到右拆解分析即可

a. 对空集φ不作处理

#编译原理# 词法分析(三)第二部分

b. 对正则式ε,由x射出符号为空符号的弧到y

#编译原理# 词法分析(三)第二部分

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppdws.html