《编译原理》第3章有穷自动机
编译原理
武汉大学计算机学院编译原理课程组
本章内容简介
·DFA、NFA
·DFA到NFA的转换
·正规文法与FA
·正规表达式与FA
第3章有穷自动机
自动机是一种能进行运算并实现自我控制的装置,计算机就是一部自动机。
自动机是描述符号串处理的强有力的工具。
“确定”:下一个输入字符惟一地确定了下一个当前状态。
1. 确定的有穷自动机DFA
DFA=(Q ,∑,t,q 0,F)
3.1有穷自动机的形式定义
Q——有穷非空的状态集。
∑——有穷的输入字母表。
t——映射Q ×Σ→Q 。
q 0——∈Q ,是开始状态。
F——⊆Q ,非空终止状态集合。
3.1 FA的形式定义—DFA
2. FA的表示:
①状态转换表
②状态转换图
DFA映射的扩充,使得DFA可以描述对符号串的识别。
DFA=(Q ,Σ,t,q 0,F)扩充的映射
t:Q ×Σ*→Q
定义为
⑴t(q,ε)=q
⑵
t(q,aα)=t(t(q,a),α)
其中q ∈Q ,a ∈Σ, α∈Σ*。
3.1 FA 的形式定义——DFA 的扩充
DFA=(Q ,Σ,t,q 0,F),如果t(q 0,α)=∈F ,则α可被DFA接受。
被DFA 识别的符号串集合,记为L(A)。
3.1 FA 的形式定义——FA 的等价性
如果两个有穷自动机A 1和A 2满足
L(A 1)=L(A 2)
则称自动机自动机A 1和A 2是等价的。
FA 的等价性举例
DFA A=({q 0,q 1},{a,b},t,q 0,{q 0})t(q 0,a)=q 1,t(q 1,b)=q 0
DFA B=({q 0′,q 1′,q 2′},{a,b},t′,q 0′,{q 0′,q 2′})t′(q 0′,a)=q 1′,t′(q 1′,b)=q 2′,t′(q 2′,a)=q 1′
L(A)=L(B)={(ab)n |n≥0}
3. 非确定的有穷自动机NFA NFA=(Q,∑,t,Q
0,F)
3.1有穷自动机的形式定义
Q——有穷非空的状态集。
∑——有穷的输入字母表。
t——映射Q×Σ→Q的幂集。
Q0——⊆Q,是开始状态集。
F——⊆Q,非空终止状态集合。
NFA=(Q ,Σ,t,Q 0,F)扩充的映射
t:Q ×Σ*→Q 的幂集
定义为⑴
t(q,ε)=q ⑵t(q,aα)=t(q 1,α)∪t(q 2,α)∪…∪t(q n ,α)其中a ∈Σ, α∈Σ*,t(q,a)∈{q 1 ,q 2 ,…,q n }。
3.1 FA 的形式定义——NFA 的扩充如果q ∈t(q 0,α) ,q 0∈Q 0,q ∈F,
则α可被NFA接受。
被NFA识别的符号串集合,记为L(A)。
·DFA 最小化——构造状态集合的划分
·确定化——子集法、造表法
NDFA 到DFA 的转换:
3.2 NFA到DFA的转换
3.2 NFA到DFA的转换——子集法、造表法
①状态子集的ε闭包
假设I是状态集合Q的一个子集。
定义I的ε闭包(ε-CLOSURE(I))为:
ⅰ.如果状态P∈I,则P∈ε-CLOSURE(I);
ⅱ.如果状态P∈I,则Pˊ∈ε-CLOSURE(I)。
其中Pˊ为由状态P出发,经任意条ε弧能到达的Q中的状态。
3.2 NFA到DFA的转换——子集法、造表法
子集
②I
a
设I是状态集Q的一个子集。
由I中的状态出发,经历一条a弧(跳过a弧前的任意条ε弧)可到达的状态的集合称为J,则
I a=ε-CLOSURE(J)
NFA到DFA的转换
③利用子集法构造确定的有穷自动机
′,F′)。
与NFA 假设已知的NFA为(Q′,Σ′,t′,Q
,F)。
等价的DFA为(Q,Σ,t,Q
Σ:可由NFA所含有的输入字母集合得到。
Q:由Q′的一些子集组成。
q0:是包含NFA的开始状态在内的Q ′的一个子集。
F:由包含NFA的终止状态F ′在内的Q ′的一些子集组成。
3.2 NFA到DFA的转换——DFA化简
寻找一个状态数比M更少的DFA Mˊ,使得M和Mˊ所识别的字符串相同,即L(M)=L(Mˊ)。
DFA最小化的关键在于把它的状态集分成一些两两互不相交的子集,使得任何两个不同的子集中的状态都是可区别的,而同一子集中的任何两个状态都是等价的。
等价状态:如果从DFA 的某个状态P出发能识别某一字符串x而停止于终态,那么从Q出发也能识别字符串x而停止于终态;反之亦然。
则称状态P和Q是等价的。
如果P和Q不等价,则说P和Q是可区分的。
3.2 NFA到DFA的转换——DFA化简
步骤二取每一组中的一个状态作代表。
步骤三删去多余死状态。
3.3 正规文法与FA
由正规文法G[S]可直接构造一个与之等价的FA A 。
•令G 的终结符号集为A 的字母表;
•增加一个终止状态Z (Z ∉V N );
•形如U →a 的规则,引一条从状态U 到终止状态Z 的标记为a 的弧;•形如U →aW 的规则,引一条从状态U 到W 的a 弧。
•G 的非终结符号作为A 的状态,G 的开始符号为A 的开始状态;
正规文法⇒FA
给定文法G[Z]:
Z→0U|1V
U→1Z|1
V→0Z|0
给出其对应的状态转换图。
3.3 正规文法与FA
由正规文法G[S]可直接构造一个与之等价的FA A 。
•令G 的终结符号集为A 的字母表;
•增加一个终止状态S (S ∉V N );
•形如U →a 的规则,引一条从状态U 到开始状态S 的标记为a 的弧;•形如U →Wa 的规则,引一条从状态W 到U 的a 弧。
•G 的非终结符号作为A 的状态,G 的开始符号为A 的终止状态;
FA⇒正规文法
①自动机A中的每一个状态均作为G的非终结符号,其中A的开始状态作为G的开始符号,A的输入字母表中的所有符号作为G的终结符号;
②对A中形如t(U,a)=V的映射,构造G的产生式U∷=aV;
③对A中终止状态Z,构造G的形如Z∷=ε的产生式。
3.4 正规表达式RE与FA
字母表Σ上的正规表达式RE e ,描述的语言集合称为正规集L(e)。
⑴ε、∅是Σ上的RE ,相应的正规集分别是{ε}、∅。
仅由有限次⑶所描述运算而得到的表达式才是Σ上的正规表达式。
⑵∀a ∈Σ,a 是Σ上的RE ,相应的正规集是{a};②e 1e 2也是Σ上的RE ,相应正规集为L(e 1e 2)=L(e 1)L(e 2);⑶设e 1与e 2是Σ上的RE ,分别描述正规集L(e 1)、L(e 2),则①(e 1)也是Σ上的RE ,相应正规集为L((e 1))=L(e 1);③e 1|e 2也是Σ上的RE ,相应的正规集为L(e 1|e 2)=L(e 1)∪L(e 2);④e 1*也是Σ上的RE ,相应的正规集为L(e 1*)=(L(e 1))*。
3.4 RE与FA——RE的性质
设A、B、C均为正规表达式,则有下列关系成立:
⑴A|B=B|A
⑵A|(B|C)=(A|B)|C
⑶A(BC)=(AB)C
⑷A(B|C)=AB|AC (B|C)A=BA|CA
⑸εA=Aε=A
⑹(A*)*=A*
⑺A*=ε|AA*
⑻(AB)*A=A(BA)*
⑼(A|B)*=(A*B*)*=(A*|B*)*
⑽A=b|aA当且仅当A=a*b
3.4 RE与FA——RE⇒FA
RE⇒FA举例
构造正规表达式xy*|yx*y|xyx相应的NFA。
正规文法到正规表达式
对任何一个正规文法G,都存在一个等价的正规表达式e,使得L(G)=L(e)。
首先将正规文法拓广。
正规文法中,产生式的形式为
U→αV U→αα为可空字符串。
正规文法到正规表达式
由右线性正规文法转换得到正规表达式的规则为:
⑴形如U→αV, V→β的产生式转换成正规表达式U=αβ;
⑵形如U→αU|β的产生式转换成U=α*β;
⑶形如U→α|β的产生式转换成U=α|β。
⑷反复使用⑴、⑵、⑶,直到文法只剩下一条关于文法开始符号的产生式,且该条产生式的右部不含非终结符号。
这个产生式的右部就是正规表达式。
类似地,可得到由左线性正规文法转换得到正规表达式的规则。
第3章内容小结·DFA的形式定义
·NFA的形式定义
·由NFA构造DFA
·DFA最小化
·正规表达式
·FA的构造
·由FA构造正规表达式
·由正规表达式构造FA
下节内容简介——第4章
·词法分析程序与单词符号
·词法分析程序的设计
·词法分析程序的自动生成
第3 章作业
P58 3.2 ④
3.10。
编译原理 第03章 词法分析与有穷自动机
3.2 单词符号及输出单词的形式 if (a>1) b =100;经词法分析后,输出 的单词符号串是:
(2, ) (29, ) 基本字if (30, ) 右括号 ) 左括号 ( (10,‘b’) 标识符 (17, ) 赋值号 = (10,‘a’) 标识符 b a (23, ) 大于号 > (11,100)常数 100 (11,1) 常数 1 (26, ) 分号 ;
语 法 分 析 器
3.2 单词符号及输出单词的形式 语言的单词符号是指语言中具有独立 意义的最小语法单位。
关键字 也称基本字,例如,C语言中 的if,else,while, do等。
标识符 表示各种名字,如变量名、常 量名、数组名和函数名等。
3.2 单词符号及输出单词的形式 常数 整型常数125、实型常数0.718、 布尔型常数TRUE等 。
例如,(a|b)*=(a*b*)* ;
3.3.1 正规式和正规集
正规式具有如下性质 : 令A , B 和 C 均为正规式,则 1.A | B = B | A (交换律) 2.A | ( B | C) = (A | B) | C (结合律) 3.A(BC) = (AB)C (结合律) 4.A(B | C) = AB | AC (分配律) 5.(A | B)C = AC | BC (分配律) 6. Aε | εA = A 7. A* = AA* | ε = A | A* = (A | ε )* 8. (A* )* = A*
3.3.1 正规式和正规集 运算符的优先级:闭包“*” > 连 接“· ” > 或“|” 。连结符“· ”一般可省略不 写。 运算符均是左结合的。
3.3.1 正规式和正规集 例1 设有字母表Σ={a,b} ,有:
1. a 和 b是正规式,相应正规集为 L(a)={a} , L(b)={b} 2. a | b 是正规式,相应正规集为 L(a | b )=L(a)∪L(b)={a ,b} 3. ab 是正规式,相应正规集为 L(ab)=L(a)L(b)={a}{b}={ab}
编译原理第三章_有穷自动机
例 过河问题 分析(续)
初始状态:MWGC-φ;终止状态:φ-MWGC。 g
MWGC-φ
WC-MG
问题:
6
例 过河问题 状态转换图
起始 g
MWGC-φ g
g φ-MWGC
g
7
WC-MG
m
m MWC-G
w
w
c
C-MWG
c W-MGC
g
g
MGC-W c
MG-WC
w
m
c G-MWC
m
gg MWG-C
+dd. ddd;
输入符号串
数字 数字
SB
.
数字
+
A
H
-.
数字
.G
接收:若扫描完输入串, 且在一个终止状态上结 束。
数字 阻塞:若扫描结束但未 停止在终止状态上;或 者为能扫描完输入串 (如遇不合法符号)。
不完全描述:某些状态 对于某些输入符号不存 在转换。
练习:+34.567 .123 3.4.5
w
有穷自动机(FA)
数字系统:可以从一个状态移动到另一个状态;每次 状态转换,都上由当前状态及一组输入符号确定的;可以 输出某些离散的值集。
FA:一个状态集合;状态间的转换规则;通过读头来 扫描的一个输入符号串。
读头:从左到右扫描符号串。移动(扫描)是由状态 转换规则来决定的。
8
读头
一个FA的例子
(3)运行: 串f(,Q,且t1tt21)∈= Σf(,f(Qt1,t2t1∈), Σt2*),其中Q∈K, t1t2为输入字符
17
例3
题:试证abba可为例1的DFA M所识别(所接受)。
第3章 有穷自动机
例3.10
NDFA =(Q,,t,Q0,F)其中 Q={q0, q1, q2, q3}, ={x, y}, Q0={q0}, F={q1}. t(q0,x)={q1, q2}, t(q0,y )={q0}, t(q1, x)={q0}, t(q1,y )={q1,q2}, t(q2,x)={q3}, t(q2,y) ={q3}, t(q3,x)={q1,q3}, t(q3,y)={q3} DFA =(Q’, , t’,q0, F’). (1) ={x,y}; (2)Q’={[q0], [q1], [q2], [q3], [q0, q1], [q0, q2], [q0, q3], [q1, q2], [q1, q3], [q2, q3], [q0, q1, q2], [q0, q1, q3], [q0, q2, q3], [q1, q2, q3], [q0, q1, q2, q3]} (3)定义映射t’: t’([q0], x)=[q1,q2], t’([q0], y)=[q0], t’([q1], x)=[q0], t’([q1], y)=[q1, q2], t’([q2], x)=[q3], t’([q2], y)=[q3], t’([q3], x)=[q1, q3], t’([q3], y)=[q3], t’([q0, q1], x)=[q0, q1,q2], t’([q0, q1], y)=[q0, q1,q2], …. t’([q0, q1 , q2 , q3], x)=[q0, q1,q2 ,q3], t’([q0, q1 , q2 , q3], y)=[q0, q1,q2 ,q3]. (4)DFA的开始状态q0’=[q0] (5) DFA的开始状态集合F=[q1], [q0, q1], [q2, q1], [q3, q1], [q0, q1, q2], [q0, q1, q3], [q1, q2, q3], [q1, q2, q3 , q4]
编译原理 第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章 词法分析与有穷自动机
■有穷自动机的状态转移图表示方法
编译原理课件第3章有穷自动机
14
例:下图是一个NDFA,它所识别的是所有含有相 继两个a或相继两个b的字。
15
例子 NFA M=({S,P,Z},{0,1},f,{S,P},{Z}) 其中 f(S,0)={P} f(Z,0)={P} f(P,1)={Z} f(Z,1)={P} f(S,1)={S,Z}
16
状态图表示
1S 0
9
3.1.3 自动机的等价性
对于*中的任何字 ,若存在一条从初态结点 到某一终态结点的通路,且这条通路上所有弧的标 记符连接成的字等于 ,则称可为 DFA M所识别 (读出或接受)若M的初态结点同时又是终态结点, 则空字可为M所识别(或接受)。DFA M所能识别的 字的全体记为L(M)。
对于任给的DFA A1和A2,若L(A1)=L(A2),称 自动机A1与A2等价。P37 例3.5。
13
对于∑*中的任何一个字,若存在一条从某一 初态结点到某一终态结点的通路,且这条通路上所 有弧的标记字依序连接成的字(忽略那些标记为的 弧)等于,则称可为NDFA M所识别。若M的某些 节点既是初态结点又是终态结点,或者是存在一条 从某个初态结点到某个终态结点的的通路,那么, 空了可为M所接受。
4
3.1.1 状态转换表
chapter 3-有穷状态自动机
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
例2、假设字母表为{0,1},构造一个识别含有001子串的所有 字符串的DFA的状态图。
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
关键问题:DFA与NFA等价吗?
第三章、有穷状态自动机
第三章、有穷状态自动机
NFA与DFA的等价性
NFA与DFA等价是指两种模型识别相同的语言类(正则语言)。 对于任意给定的DFA,存在一个NFA与之等价; 对于任意给定的NFA,存在一个DFA与之等价。 DFA本身就是一种NFA,所以,要证明DFA与NFA等价,只需证明 对于任意给定的NFA,存在一个DFA与之等价。 下面根据给定的NFA构造一个DFA: 这里M2=(Q2,Σ,δ,q0,F ),Q2 =P(Q),
第三章、有穷状态自动机
δ1
q01 q1 q2
0 1
q1 q2 q1
0 q02 q3 q4
q01 q1 Q2
1 q3 q4 q5
δ2
q02 q3 q4
q5
q5
q5
第三章、有穷状态自动机
下面构造M= (Q,Σ,δ,q,F), (1)Q={(r1,r2) ∣ r1∈Q1且r2∈Q2}; (2)Σ= {0,1}; (3)转移函数 δ((r1,r2) ,a)= δ (δ1 (r1,a) ,δ 2(r2,a)), 如下页表所示; (4)q0=(q01,q02)是M的起始状态; (5)F={(q2,q02),(q2,q3),(q2,q4),(q2,q5),(q01,q4), (q1,q4)}。
第3章 有穷自动机
33
正规文法FA
给定文法G[S]: S→aS|aA|bB A→bA|cC B→aB|dD C →cC|c D →dD|d 给出其对应的状态转换图。S是开始状 态,Z是终止状态.图3.16 FA
34
FA正规文法
①自动机A中的每一个状态均作为G的非终结符号,
q1 q2
q5 q6 q6 q4 q6
26
q3 q4 q3
NFA到DFA的转换 ③ 利用子集法构造确定的有穷自动机
假设已知的NFA为(Q′,Σ′,t′,Q0′,F′)。与NFA等 价的DFA为(Q,Σ,t,Q0,F)。 Σ:可由NFA所含有的输入字母集合得到。 Q:由Q ′的一些子集组成。 Q0:是包含NFA的开始状态在内的Q ′的一个子集。 F:由包含NFA的终止状态F ′在内的Q ′的一些子集组 成。
31
DFA化简举例
G 0 0 I
0
start
F 1
1
0
1
0
H
1
J
1
32
3.3 正规文法与FA
由正规文法G[S]可直接构造一个与之等价的FA A。
令G的终结符号集为A的字母表;
G的非终结符号作为A的状态,G的开始符号为A的开始 状态;
增加一个终止状态Z(ZVN);
形如U→a的规则,引一条从状态U到终止状态Z的标记为a 的 弧;
a T U T V W S b
a a Z b
15
a b
B a
a
3.1.4非确定的有穷自动机NDFA的形式定义 非确定的有穷自动机NFA
NFA=(Q,∑,t, Q0,F) Q——有穷非空的状态集 。
第3章有穷自动机
实际上计算Ia=ε-closure(J)。这里的I=Gi 如果 Ia包含于Gj 则不分划;否则分划Gi 。
编译原理
50
编译原理
51
化简前的DFSA(图3.12)
化简后的DFSA(图3.14简前的DFSA
化简后的DFSA
编译原理
53
将一个NDFSA M转化为等价的含有最少状态 数的DFSA步骤总结如下:
编译原理
36
编译原理
37
构造了新状态[B, C, E]
编译原理
38
编译原理
39
确定化方法:造表法
两个定义:
ε-closure(I)集合含义是:从I中任 一状态出发,经由一条或多条相 邻ε弧而能到达的状态集合 ε-closure({1})={1, 2} ε-closure({5})={5,6,2}
31
消除空移的示例
编译原理
32
编译原理
33
利用状态转换表消除空移示例
首先,标记直接经由一个空移到达某个终态的所 有状态为终态.
图3.4中的NDFSA标记终态后的情况
编译原理
34
然后,消除与未被标记为终态的那些状态相关的空移. 最后,删除ε列和空行.
图3.4中的NDFSA消除空移后的情况
编译原理
编译原理
14
例:证明 =baab被下图的DFSA所识别。
(q0,baab)├ (q2,aab)├
(q1,ab)├ (q3,b)├ (q3 , )
q3属于终态。 得证。
a a a
q1
b
b, a
q0
b
q3
编译原理:第3章 有穷自动机
编译原理第3章内容简介学习目标第3章有穷自动机3.1 有穷自动机的形式定义3.1 有穷自动机的形式定义DFA的表示举例——状态转换表DFA的表示举例——状态转换图 3.13.1 FA的形式定义有穷自动机识别的符号串举例DFA A3.1 有穷自动机的形式定义 3.1 有穷自动机的形式定义NFA举例 3.13.1用NFA识别符号串yFA的构造FA的构造举例—1FA的构造举例—2FA的构造举例—3请构造一个有穷自动机FA的构造举例—4 3.1请构造一个有穷自动机FA的等价性举例3.2 NFA到DFA的转换 3.2 NFA到DFA的转换—NFA确定化3.2 NFA到DFA的转换3.2 NFA到DFA的转换—NFA确定化——ε闭包状态子集I的ε闭包——举例状态子集I的状态子集I的ε闭包——举例状态子集I的——Ia 子集3.2 NFA到DFA的转换Ia子集——举例Ia子集——举例 3.2 NFA到DFA的转换NFA到DFA的转换——子集法NFA=(Q NFA到DFA的转换——举例1aNFA到DFA的转换——举例2NFA DFA DFA NFA DFA DFADFA化简举例1DFA化简——注意NFA到最小化DFA的转换——举例33.3 正规文法与FA3.3 正规文法与FAFA⇒右线性正规文法FA⇒右线性正规文法——举例1y3.4 正规表达式RE与FA 正规表达式与有穷自动机3.4 RE与FA——RE的性质 3.4 RE与FA—RE⇒FARE⇒FA举例1RE⇒FA举例23.4 RE与FA——FA⇒RE FA⇒REFA⇒RE FA⇒RE举例FA⇒RE举例正规文法到正规表达式正规文法到正规表达式DFA的程序实现DFADFA的程序实现DFA DFA的程序实现lDFA的程序实现l第3章内容小结第3章内容小结参考文献。
编译原理第二版第3章词法分析
1. ε和φ都是∑上的正规式,它所表示的正规集分
别为{ε}和Ф; 2. 任何a∈∑,a是∑上的正规式,它所表示的正 规集为{a}; 3. 假定e1和e2都是∑上的正规式,他们所表示的 正规集分别为L(e1)和L(e2),那么,以下也 都是正规式和他们所表示的正规集;
一、正规式与正规集的递归定义
3.2 单词符号及输出单词的形式
单词自身值
对常数,基本字,运算符,界符就是他们本 身的值 对标识符,将标识符的名字登记在符号表中, ‚自身值‛是指向该标识符所在符号表中位 置的指针。
假定基本字、运算符和界符都是一符一种 例:if(a>1) b=100; 词法分析后输出的单词序列是: (2, ) if (29, ) ( (10,‘a’) a (23, ) > (11,‘1’) 1 (30, ) ) (10,’b’) b (17, ) = (11,‘100’) 100 (26, ) ;
4. 仅由有限次使用上述三步定义的表达式才是∑上的 正规式,仅由这些正规式所表示的字集才是∑上 的正规集。
重点回顾
四、将正规文法转换成正规式 求非终结符的正规式 将正规文法中的每个非终结符表示成关 于它的一个正规式方程,获得一个联立 方程组 用代入法解正规式方程组 最后只剩下一个开始符号定义的正规式, 其中不含非终结符
3.3 语言单词符号的两种定义方式
作用: 描述单词的构成规则,基于这类描 述工具建立词法分析技术,进而实现词法 分析程序的自动构造。 工具有: 正规文法 正规式(Regular Expression)
多数程序设计语言的单词符号都能用正 规文法或正规式来定义。
3.3.1 正规文法
多数程序设计语言单词的语法都能用正 规文法(3型文法)描述 正规文法回顾 文法的任一产生式α →β 的形式都为 A→aB或A→a,其中A ,B∈VN ,a∈VT A→Ba或A→a,其中A ,B∈VN ,a∈ VT 正规文法描述的是VT*上的正规集
