第3章--词法分析
《编译原理》第3章

NFA到相应的DFA的构造的基本思路是: DFA的每 一个状态对应NFA的一组状态. DFA使用它的状 态去记录在NFA读入一个输入符号后可能达到的 所有状态.
NFA M所能接受的符号串的全体记为L(M)
结论:
上一个符号串集V是正规的,当且仅当存 在一个上的不确定的有穷自动机M,使得 V=L(M)。
DFA是NFA的特例.对每个NFA N一定存在一个DFA M,使得 L(M)=L(N)。对每个NFA N存在着与之 等价的DFA M。 有一种算法,将NFA转换成接受同样语言的DFA.这 种算法称为子集法. 与某一NFA等价的DFA不唯一.
0
1
S P
Z
{P} {}
{P}
{S,Z} {Z}
{P}
• δ为S * 到S的子集(2 S)的一种映射
• 从NFA的矩阵表示中可以看出,表项通常是一状态的集合, 而在DFA的矩阵表示中,表项是一个状态
∑*上的符号串t被NFA M接受:
• 对于Σ*中的任何一个串t,若存在一条从某一初态 结点到某一终态结点的道路,且这条道路上所有 弧的标记字依序连接成的串(不理采那些标记为ε 的弧)等于t,则称t可为NFA M所识别(读出或接 受)。 • 若M的某些结点既是初态结点又是终态结点;或 者存在一条从某个初态结点到某个终态结点的道 路,其上所有弧的标记均为ε,那么空字ε可为M所 接受。
其中: δ(S,0)={P}
δ(S,1)={S,Z} δ(Z,0)={P} δ(Z,1)={P} δ(P,1)={Z} • 状态图表示
1 1 S 0 0,1 Z
P
1
• 矩阵表示
状态 输入
δ(S,0)={P} δ(S,1)={S,Z} δ(Z,0)={P} δ(Z,1)={P} δ(P,1)={Z}
my第03章-词法分析

如果一个种别只含有一个单词符号,那么对 于这个单词符号,种别编码就完全代表它自身 了。若一个种别含有多个单词符号,那麽,对 于它的每个单词符号,除了给出种别编码之外, 还应给出有关单词符号的属性信息。 单词符号的属性是指单词符号的特征或特性。 属性值则是反映特性或特征的值。例如,对于 某个标识符,常将存放它有关信息的符号表项 的指针作为其属性值;对于某个常数,则将存 放它的常数表项的指针作为其属性值。
假定每半个区可容120个字符,而这 两个半区又是互补的。如果搜索指示器 从单词起点出发搜索到半区的边缘但尚 未达到单词的终点,那么就调用预处理 子程序,令其把后续的120个字符装入另 半区。我们认定在另半区一定可以达到 单词的终点。这意味着得标示符和常数 的长度实际上必须加以限制,否则即使 缓冲区再大也无济于事。
第三章 词法分析
3.2 词法分析器的设计 3.2.1 输入、预处理 词法分析器工作的第一步是输入源程序文本。输入串一 般放在一个缓冲区中,这个缓冲区称输入缓冲区。词法分 析器的工作可以直接在这个缓冲区中进行。但在许多情况 下,把输入串预处理一下,对单词符号的识别工作将是比 较方便的。 预处理工作包括对空白符、跳格符、回车符和换行符等 编辑性字符的处理,及删除注解等。 我们可以设想构造一个预处理子程序,他完成上面的工 作。每当词法分析器调用它时就处理出一串确定长度的输 入字符,并将其装入词法分析器所指定的缓冲区中(称为 扫描缓冲区)。这样分析器就可以在此缓冲区中直接进行 单词符号的识别工作。
a 0 b 2 b a a b 3 a
1
b
第三章 词法分析
替换规则
如:正规式:R=(a*b)*ba(a|b)*
第三章 词法分析
习题:画出状态转换图
程序设计语言编译原理(第三版)第3章

程序设计语言编译原理(第三版)第3章第3章词法分析任务:从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串。
§3.1§3.2§3.3§3.4对于词法分析器的要求词法分析器的设计正规表达式与有限自动机词法分析器的自动产生(LE某)—略1§3.1对于词法分析器的要求一.功能和输出形式二.接口设计§3.1对于词法分析器的要求一.功能和输出形式1.功能:输入源程序,输出单词符号2.单词符号的分类(1)关键字:由程序语言定义的具有固定意义的标识符,也称为保留字或基本字。
例如:Pacal语言中begin(2)标识符:用来表示各种名字。
endifwhile等。
如变量名、数组名、过程名等。
(3)常数:整型、实型、布尔型、文字型等例:100(5)界符:,;3.14159()true等ample(4)运算符:+、-、某、/3§3.1对于词法分析器的要求3.输出的单词符号形式二元式:(单词种别,单词符号的属性值)通常用“整数编码”“单词符号的特征或特性”单词符号的编码:标识符:一般统归为一种常数:常按整型、实型、布尔型等分类关键字:全体视为一种/一字一种运算符:一符一种界符:一符一种4§3.1对于词法分析器的要求例:考虑下述C++代码段:while(i>=j)i--;经词法分析器处理后,它将被转换为如下的单词符号序列:<while,-><(,-><id,指向i的符号表项的指针><>=,-><id,指向j的符号表项的指针><),-><id,指向i的符号表项的指针><--,-><;,->§3.1对于词法分析器的要求二.接口设计1.词法分析器作为独立的一遍词法分析字符流(源程序)单词序列(输出在一个中间文件上)2.词法分析器作为一个独立的子程序,但并不一定作为独立的一遍语法分析器单词(至少一个)调用(取下一个单词)词法分析器优点:使整个编译程序的结构更简洁、清晰和条理化.6§3.2词法分析器的设计一.输入和预处理二.单词符号的识别三.状态转换图及其实现§3.2词法分析器的设计一.输入、预处理1.预处理:剔掉空白符、跳格符、回车符、换行符、注解部分等.原因:编辑性字符除了出现在文字常数中之外,在别处的任何出现都无意义.#注解部分不是程序的必要组成部分,它的作用仅在于改善程序的易读性和易理解性.8§3.2词法分析器的设计2.预处理子程序:每当词法分析器调用时,就处理出一串确定长度(如120个字符)的输入字符,并将其装进词法分析器所确定的扫描缓冲区中。
第3章 词法分析(3)

3.4 正规式与有穷自动机的等价性
1. NFA M正规式R
在消结过程中,逐步用正规式来标记弧, 规则如下:
1.对于
1
2.对于
R1
2
R2
代之为
3
1
R1 R2
3
代之为 R1 R1| R2 1 2 1 2 R2 R2 3.对于 代之为 R1R2﹡R3 R 1 R 3 1 3 1 2 3
例如:有NFA M如图3.14,求其等价的正规式R。
a,b a 3
x ε 0 b 1 a|b a|b x ε 0
aa
a
4
ε
b
y (a|b)*(aa|bb)(a|b)* x y ε 2 a,b a|b aa(a|b) * y bb(a|b) *
4
ε y x
bb
2
ε
a|b
ε
0
3.4 正规式与有穷自动机的等价性
课堂练习 求以下NFA的正规式 a a 3 a 1 2 b
第一步
a
5 6 b
b
4
b
a
a
3
a
a
s
1 2
b
5 b
4 b
6 b
z
3.4 正规式与有穷自动机的等价性
第二步
a|b s 1 2
aa bb aa|bb 5
a|b
6
z
第三步
s
第四步
(a|b)*
2
5
(a|b)*
z
s
(a|b)*(aa|bb)(a|b)*
z
课堂讲解
• 【例5.12】第72页 • 【例5.13】第73页
第三章 词法分析精选版演示课件.ppt

gjgj
11
串和语言(3)
• 串的运算
– 连接(concatenation):x和y的连接时把y附加到x 的后面形成的串,记作xy。
• x=dog,y=house,xy=doghouse
– 指数运算(幂运算):s0=ε,s1=s,si=si-1s;
• x=dog,x0=ε,x1=dog,x3=dogdogdog
第三章 词法分析
赵建华 南京大学计算机系
2009年2月
gjgj
1
内容
• 词法分析器的作用 • 词法单元的规约 • 词法单元的识别 • 词法分析器生成工具Lex • 有穷自动机 • 从正则表达式到自动机 • 词法分析器生成工具的设计方法
gjgj
2
词法分析器的作用
• 读入源程序字符流、组成词素,输出词法单元序列。 • 过滤空白、换行、制表符、注释等。 • 将词素添加到符号表中。 • 在逻辑上独立于语法分析,但是通常和语法分析器
器通过单元名即可确定词法单元序列的结构。
– 属性值通常用于语义分析之后的阶段
• 模式
– 描述了一类词法单元的词素可能具有的形式
• 词素
– 源程序中的字符序列 – 它和某个词法单元的模式匹配,被词法分析器识别
为该词法单
• printf(“Total = % d\n”, score);
– printf, score和标识符(id)的模式匹配 – “Total = % d\n”和literal的模式匹配
gjgj
6
词法单元的属性
• 一个模式匹配多个词素时,必须通过属性 来传递附加的信息。属性值将被用于语义 分析、代码生成等阶段。
• 不同的目的需要不同的属性。因此,属性 值通常是一个结构化数据。
编译原理 第3章 词法分析与有穷自动机(第5-8讲)

它所对应的状态表如图:
状态 0 1 2 3 a 1 3 1 3 后继 状态 b 2 2 3 3
输入字符 接受 否 否 否 是
式的转化
22
第3章 词法分析与有穷自动机
■DFA所识别的语言
给定DFA M,对于字符c1,c2,…,cn,当以下条件成立时, 称M接受由c1,c2,…,cn组成的字符串c1c2…cn: 存在状态序列s0,s1,s2,…,sn,使得s1=f(S,c1), s2=f(s1,c2),…,sn=f(sn-1,cn),且sn∈Z。 由DFA M接受的语言L(M)是所有M接受的字符串组成的集 合。
25
第3章 词法分析与有穷自动机
判断下图是DFA还是NFA的状态转换图,并 写出其他2种表示形式
26
第3章 词法分析与有穷自动机
■由正规表达式R构造NFA
1.基本正规表达式 (a)对于正规式φ,所构造NFA: (b)对于正规式ε,所构造NFA: (c)对于正规式a,a∈Σ,则 NFA:
x ε y
练习:若S=a|bb,则L((a|bb)*)=?
5
第3章 词法分析与有穷自动机
■正规式中运算的优先级
括号优先,* 次之,•(连接)再次之,| 最后 例:a|bc* ≌ a|(b(c*)) ab|c*d ≌ (ab)|((c*)d)
■ 正规式与正规集举例
L(a|bc*)=L(a)∪L(bc*) 思考:L(ab|c*d)=? =L(a)∪L(b)L(c*) =L(a)∪L(b)(L(c))* ={a}∪{b}{ε,c,cc,ccc……} ={a,b,bc,bcc,bccc,……}
17
第3章 词法分析与有穷自动机
■有穷自动机的状态转移图表示方法
词法分析

第三章 词法分析
常常把词法分析程序作为独立的一遍或作 为被语法分析程序所调用的子程序。
1、作为独立的一遍:
语法分析前进行词法分析,把单词符号 串形成中间文件存贮。
2019/11/21
中南大学软件学院 陈志刚
6
3.1 词法分析概述
第三章 词法分析
三、词法分析程序的安排
2019/11/21
中南大学软件学院 陈志刚
27
六、转换系统
第三章 词法分析
定义:转换系统是具有下列三个特征的状态转换 图,即 1) 开始状态S和终止状态Z 唯一; 2) 无弧进入S,也无弧自Z射出;
3)可能存在标记为空串(ε)的弧。
转换系统与状态转换图的区别: ε弧
ε S1
Z1 ε
S
A
Z
2019/11/21
中南大学软件学院 陈志刚
14
3.1 词法分析概述
五、词法分析程序的输出形式
解:输出的单词串为:
第三章 词法分析
2019/11/21
中南大学软件学院 陈志刚
15
第三章 词法分析
3.2 词法分析程序的设计
一、状态转换图
状态转换图是一张有限方向图。用结点代表状态, 状态之间用箭弧连接,箭弧上的标记(字符)代表 在射出结状态下可能出现的输入字符或字符类。
1 非字母或数字 2
例2:
0
1
U
数字
3
非数字
4
=
5
0 0
V
1
2019/11/21
01
+
6
Z
例3:
*
7
非*
8
编译原理 第3章

3.1.3 识别标识符的若干约定和策略
定义标识符的语法规则为 <标识符>→<字母>∣<标识符><字母>∣<标识符><数字> 从语法上来说,标识符的长度似乎可以任意。 然而,考虑实现技术,许多语言都对标识符的最大允许长度作 了限制。
编译原理
7
设计扫描器时,按如下原则行事: 1. 如果一个标识符中的字符个数超过最大允许长度,则把尾部 多出的字符截去; 2. 对于字符个数不超过最大允许长度的标识符,则按“尽可能 长”的策略来识别标识符。
图3.5 状态图
首先,在开始状态R下扫描的第一个符号是0,转到状态 V,表示0是句柄,归约到V。接下来,在状态V扫描1, 转到状态S,此时句柄为V1,归约成S。再往下扫描1,由 状态S转到状态U,表示句柄为S1归约为U。最后,扫描0, 转到状态S,此时句柄为U0,归约为S,
编译原理 27
图3.6(a)列出分析的每一步。形成图3.6(b)所示的语法 树。 自底向上的分析。
读入a1,沿矢线方向到下一状态,在此状态时扫 描a2,……, 直至W中全部字符读完且进入终态F,则W已被接受。
编译原理 19
例:下面的状态图对于串baabba的识别 S→aA|bB,A→bB|aD|a,B→aA|bD|b,D→aD|bD|a|b
a
A a a
a
S b
b
B
a
D b a,b b Z
编译原理
16
E d
d 0
d
d
d 5 d 6
1
.
d
2
E
4
±
. 图3.4文法G<无符号数>的状态图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 词法分析知识结构:功能 词法分析器的要求 单词符号分类 词法分析 单词内部形式器的设计 设计方发词法分析器的设计 状态图词法分析器组成正规表达式单词描述工具 正规集词法分析器 正规文法确定有限自动机(DFA )单词识别工具 非确定有限自动机(NFA )DFA 的最小化正规式与FA 的等价转换等价转换正规文法与FA 的等价转换第一节 对词法分析器的要求一、词法分析器的功能输入源程序,输出单词符号(二元式表示)。
关键字:是由程序语言定义的具有固定意义的标识符。
标识符:用来表示各种名字,如变量等。
常数:常数的类型有整型,实型等。
运算符:算术运算符,关系运算符,逻辑运算符。
界限符:逗号,分号等。
三、单词符号内部的表示形式内部的单词符号TOKEN字(二元式),TOKEN字占用机器字的长度,依据信息量的多少而定。
1、TOKEN字结构CLASS:用整数表示。
VALUE:表示单词符号的属性(符号表指针)。
2、TOKEN的作用CLASS:用于语法分析器对源程序结构的分析。
VALUE:用于语义分析器对源程序具体操作的分析。
3、单词种别码划分原则CLASS:关键字,运算符,界限符(编译程序定义的符号)使用一字一种编码。
VALUE值省略。
VALUE:标识符,常数(用户定义的符号),存放符号表常数表的指针。
标识符,常数每一类为一种编码。
例:BEGIN A:= B END;词法分析结果:符号表(BEGIN,---- )Array(A ,K1 ) K1(:= ,--- )(B ,K3 ) K3(END ,--- )(;,--- )四、词法分析器的结构1、一遍扫描(交互式结构)。
2、多遍扫描(独立式结构)。
第二节词法分析器的设计一、设计步骤1、确定词法分析器的接口关系;2、确定单词分类和TOKEN字的结构;3、对每一类单词构造状态转换图;4、根据状态转换图设计算法。
二、功能描述1、组织源程序输入;2、按词法规则拼读单词符号,并转换成二元式;3、删除注解行,空格和无用符号;4、检查词法错误。
三、设计方法1、输入(读取原文件)原文件存储方式:一种方式将原文件一次读入内存,另一种方式利用缓冲区技术将原文件分批读入内存。
缓冲区的设置:输入(扫描)缓冲区,存放输入的原文件(双缓冲区)。
2、预处理功能描述:删除无用符号,出错信息的列表打印。
单词符号的识别:⑴语句格式①标识符不能被无效字符隔开。
②标识符与关键字,关键字与关键字之间用空格符隔开。
②标识符的个数不能超过限定的个数。
⑵单词符号的格式①标识符,关键字的首字符必须是字母。
②常数的首字符必须是数字。
3、识别算法(P39)标识符的识别;常数的识别;算符的识别;界符的识别。
四、状态转换图1、状态转换图的表示形式是一张有向图,结点代表状态(用○表示),结点间用箭弧线连接( ),箭弧线上的符号,表示射出结点到达射入结点可能识别的输入符号,终态结点代表分析结束。
初态⇒⑴ ⇒⊙初始状态,表示识别符号串的开始。
⑵双圈◎终态,表示识别符号串的结束。
⑶◎*表示多读入一个字符。
例1:标识符的状态转换图状态转换矩阵字母,数字例2:标识符“AB1”的识别 例4 状态转换矩阵 数字2、识别过程从初态开始,逐步读入字符,转到下一个状态(或出错),直至终态(或不能到达终态出错)。
例3:字符串“AB+12”的识别识别出单词AB,多读入一个字符 +。
由另一张状态转换图识别单词符号 +。
继续识别剩余字符12(数字):上述识别过程把AB +12字符串分解为三个单词符号“AB ”、“ + ” 、“12”。
3、状态转换图的实现状态转换图非常容易用程序实现,每一个状态对应一段程序。
⑴不含回路的分叉状态结点的程序设计利用多分支语句CASE 或选择语句IF...THEN...ELSE...。
⑵含回路状态结点的程序设计利用循环语句WHILE...DO。
⑶词法分析程序的组成状态转换图是一种特殊的流程,它可直观清晰地描述单词符号的识别过程,只要把每一个结点加入语义动作,就构成了词法分析程序。
4、词法分析程序的组成(八个模块)主控模块;初始化模块;判定源程序文件是否存在模块;从源程序文件中读一个字模快;拼读一个单词模块;查关键字模块;输出单词模块;错误处理模块。
第三节正规式、正规集、正规文法一、正规式的定义∑中的符号为正规式的基本符号,单个符号或由符号与运算符组成的表达式称正规式。
运算符优先级:重复用“ * ”表示;连接用“•”表示或省略;选择用“∣”表示。
例:a,ab *,a∣b ,(a∣b)c都是正规式。
二、正规集由正规表达式所表示的字符串的集合称为正规集。
如正规式用V表示,正规集L(V)表示。
三、正规文法正规文法是上下文无关文法的一种特殊情况,所有产生式的右部至多含有一个非终结符号,左线性文法,右线性文法都属于正规文法。
左线性文法:A →B αA → α右线性文法:A → αBA → α 其中:A ,B ∈V N ,α∈V * T * T四、正规式与正规集的递归定义1、正规式与正规集的递归定义P46⑴ε和Ф都是Σ上的正规式,正规集为{ε}和Ф。
⑵任何a ∈Σ,a 是∑上的正规式,正规集为{a}。
⑶假定U 和V 是∑上的正规式,正规集为L(U),L(V)U ∪V 是正规式,正规集为L(U)∪L(V)。
UV 是正规式,正规集为L(U)L(V)。
(U)*是正规式,正规集为 (L(U))*。
例1:令Σ= {a, b},则⑴正规式a | b 的正规集是{ a, b }。
⑵正规式(a | b )(a | b )的正规集是{aa, ab, ba, bb}。
⑶正规式a * 的正规集是{ε,a, aa, aaa ……}。
⑷正规式(a | b )* 的正规集是{ε,a, b, aa, ab, ba, bb,aaa……}。
(a | b)*=(a*b*)*,即所有a和b的符号串集合。
⑸(a | b)*(aa| bb)(a | b)*的正规集是所有含有两个相继a或两个相继b的字符串集合。
例2:∑ ={a, b, c……z,0, 1,……9}正规式(a | b…|z)(a | b|…z|0|1|…|9)*代表标识符。
2、正规式与正规集的等价性若两个正规式代表的正规集相同,则认为正规式等价。
U=V,表示L(U)=L(V)例3:U=10**, L(U)={1}{0}*V=10*, L(V)={1}{0}*则10**=10*例4:b(ab)*= (ba)*b (ab)*≠a*b*(a|b)*= (a*b*)*(a|b)*≠(a*|b*)3、正规式的代数定律(1)U∣V=V∣U 交换律(2)U∣V∣W=(U∣V)∣W 结合律(3)U(VW)=(UV)W 结合律(4)U(V∣W)=UV∣UW 分配律(5)εU = Uε= U(6)U *=U+∣ε(7)U **=U*(8)U +=U*U=UU*例1:选择规则U∣V,则描述的正规集L(U∣V)=L(U)∪L(V)。
令 U=a,V=b:则 L(U∣V)= L(U)∪L(V)=L(a)∪L(b)={a}∪{b}={a,b}例2:连接规则UV,则描述的正规集L(UV)=L(U)L(V)。
令 U=a∣b,V=c:则 L(UV)= L(U)L(V)=L(a∣b )L(c)= {a,b}{c}={ac,bc}例3:重复规则U *,则描述的正规集L(U*)=(L(U))*。
U *={ε}∪U1∪U2∪...∪UnU=(a∣ab)L(U *)=(L(U))*=(L(a∣ab))*=(L(a)∪L(ab))* ={a,ab}*={a,ab}0∪{a,ab}1∪{a,ab}2∪⋯={ε}∪{a,ab}∪{a,ab}{a,ab}∪⋯={ε,a,ab,aa,aab,aba,abab,⋯ }五、正规式与正规文法的转换正规式与正规文法都有相同的表达能力,用以描述语言(单词符号)的结构,使得所描述的语言是等价的(即L(V)=L(G))。
1、正规式与正规文法的特点正规式描述的语言结构清晰,简洁;而正规文法描述的语言于识别。
2、正规定义式d1→ r1d2→ r2...其中:d i 为定义式的名字;r i是∑∪{d1,d2,...,d i-1}构成的正规式;r i中不含有d i,d i+1,...。
3、正规式与正规文法的转换算法例:高级语言标识符的正规式字母(字母∣数字)*⑴根据正规定义式规则,给正规式分量、正规式定义名称字母→ A ∣ B ∣ C数字→ 0 ∣ 1 ∣ 2id →字母(字母∣数字)*⑵对定义式的子表达式定义名称rid →(字母∣数字)*⑶对定义式的子表达式展开(字母∣数字)*= ε∣(字母∣数字)+= ε∣(字母∣数字)(字母∣数字)*= ε∣字母(字母∣数字)*∣数字(字母∣数字)*⑷把展开式代入定义式rid →ε∣字母(字母∣数字)*∣数字(字母∣数字)*⑸把rdi →(字母∣数字)*代入定义式id、rid,将得到正规文法:id →字母ridrid →ε∣字母rid∣数字rid其中:id,rid ∈ V N;字母,数字∈V T。
六、正规文法与正规式的转换建立正规文法的联立方程组,求描述同一语言的正规式。
1、右线性文法到正规式,使得L(G)=L(V)。
产生式 X → rX ∣ t,其中 r,t∈ V T X∈V N。
论断1:方程 X=rX + t ,有形如 X=r *t的解。
例:文法GS →aS ∣bA ∣bA →aS⑴立联立方程组S = aS + bA + b ①A = aS ②⑵②式,代入①式S = aS + baS + bS =(a + ab)S + b ⑶由论断得方程解S =(a + ab)*b= (a∣ab)*b对于同一方程式采用不同的结合方式,可以得到不同形式的正规式,但是所描述的语言(正规集)是等价的。
S = aS + baS + b= aS +(baS + b)= a *(baS + b)= a *baS + a*b= (a *ba)*a*b所以(a *ba)*a*b = (a∣ab)*b。
2、左线性文法与正规式的转换算法产生式 X → Xr ∣ t,其中 r,t∈ V T X∈V N。
论断2:方程 X=Xr + t ,有形如 X=tr *的解。
例:文法Gid → id 字母∣ id 数字∣字母其中:id ∈ V N;字母,数字∈V T。
建立方程id = id 字母 + id 数字 + 字母= id(字母 + 数字)+ 字母= 字母(字母∣数字)*3、正规文法与正规式的转换规则⑴产生式 A→xB,B→y 对应的正规式 A=xy;⑵产生式 A→xA∣y 对应的正规式 A=x * y;⑶产生式 A→x ,A→y 对应的正规式 A=x∣y例:文法GS→aA,S→aA→aA,A→dA,A→a,A→d⑴根据规则⑶先有正规式S = aA∣aA = (aA∣dA)∣(a∣d)⑵再将A的正规式变换为A = (a∣d)A∣(a∣d)⑶根据规则⑵将A的正规式变换为A = (a∣d)*(a∣d)⑷再将A式的结果代入S的正规式S = a(a∣d)*(a∣d)∣a⑸再利用正规式的代数性质得到的正规表达式为S = a((a∣d)*(a∣d)∣ε)因为(a∣d)*(a∣d)=(a∣d)+,所以S = a(a∣d)+∣a= a((a∣d)+∣ε)。