2.4 正规文法、正规表达式与有限自动机的等价性
正规文法与有限自动机的等价性研究
Ab ta tI i e he e iae tc n ttto t o e we n te r g lrg a sr c :tg v st quv ln o siu in me h d b t e h e u a r mm a n e fn t uo aa b r vng t e ra d t ie a tm t y p o i h i h
计算机 光盘 软件 与应 用
21 0 0年第 5 期 C m u e DS fw r n p lc t o s o p t rC o t a ea dA p ia in 工 程技 术
正规文法与有限 自动机的等价性研究
葛寒 松 ,柴 晓辉 ( 商丘 师 范学 院计 算机 科 学 系 ,河 南 商丘 46 0 7 00) 摘 要 :通过 证 明正规文 法和有 限 自动机之 间的 等价性 定理 ,给 出正规文 法和有 限 自 机之 间的等 价构造 方法 。 动 关犍词 :正规 文法 ;有限 自动机 ;等 价 } 生;构造方 法 中圈分类号:T 311 文献标识码:A P 0. 文章编号 :10— 59 (0 0 0 — 17 0 07 99 21 ) 5 0 1— 2
h o t e mm f q iae c e we n te o u v l n e t e m. e b h
Ke wo d : g lrg a y r sRe ua r mm a ;iiea t r Fn t uomaaF t iae c ;tu t rn to t;xuv ln eSr cu ig me d _ h
证 明:
状态 q出发经标 记为 a的箭 弧到达 状态 A包 括 a 的情形 ) ( =£ 。综 上所述 ,在正规 文法 &中,s w的充要 条件是 :在 M中,从 状态 q到状态 s有一 条通 路 ,其 上所有 箭弧 的标记 符号依 次连接起 来 恰 好 等 于 w,这 就 是 说 , w LG) 且 仅 当 W LM , 故 ∈ (L当 ∈ ()
【编译原理】1-5章课后习题答案精心整理版,可直接缩印
第一章1.2 计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 【解答】计算机执行用高级语言编写的程序主要有两种途径:解释和编译。
这两种途径的主要区别在于:解释方式下不生成目标代码程序,而编译方式下生成目标代码程序。
从执行速度上看,编译型的高级语言比解释型的高级语言要快,但解释方式下的人机界面比编译型好,便于程序调试。
(在解释方式下,翻译程序事先并不采用将高级语言程序全部翻译成机器代码程序,然后执行这个机器代码程序的方法,而是每读入一条源程序的语句,就将其解释(翻译)成对应其功能的机器代码语句串并执行,而所翻译的机器代码语句串在该语句执行后并不保留,最后再读入下一条源程序语句,并解释执行。
这种方法是按源程序中语句的动态执行顺序逐句解释(翻译)执行的,如果一语句处于一循环体中,则每次循环执行到该语句时,都要将其翻译成机器代码后再执行。
在编译方式下,高级语言程序的执行是分两步进行的:第一步首先将高级语言程序全部翻译成机器代码程序,第二步才是执行这个机器代码程序。
因此,编译对源程序的处理是先翻译,后执行。
)1.3 请画出编译程序的总框图。
如果你是一个编译程序的总设计师,设计编译程序时应当考虑哪些问题? 【解答】编译程序总框图如图1-1所示。
作为一个编译程序的总设计师,首先要深刻理解被编译的源语言其语法及语义;其次,要充分掌握目标指令的功能及特点,如果目标语言是机器指令,还要搞清楚机器的硬件结构以及操作系统的功能;第三,对编译的方法及使用的软件工具也必须准确化。
总之,总设计师在设计编译程序时必须估量系统功能要求、硬件设备及软件工具等诸因素对编译程序构造的影响等。
第二章2.1 正规式M1和M2等价是指:M1和M2所识别的语言集相等。
2.2 什么是扫描器?扫描器的功能是什么?【解答】扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
《编译原理》期中及期末习题
第一章高级语言与编译程序概述典型例题:单项选择题1.1.1.将编译程序分成若干个“遍”是为了___。
a.提高程序的执行效率b.使程序的结构更加清晰c.利用有限的机器内存并提高机器的执行效率d.利用有限的机器内存但降低了机器的执行效率1.1.2.构造编译程序应掌握____。
(陕西省2000年自考题)a.源程序b.目标语言c.编译方法d.以上三项都是1.1.3.变量应当_。
a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值1.1.4.编译程序绝大多数时间花在____上。
(陕西省1998年自考题)a.出错处理b.词法分析c.目标代码生成d.管理表格1.1.5.____不可能是目标代码。
( 陕西省1997年自考题)a.汇编指令代码b.可重定位指令代码c.绝对指令代码d.中间代码1.1.6.数组A[1…20,1…10]的首地址偏移量为0,按列存储,每个元素占一个字节,存储器按字节编址,则A[i,j]的偏移地址为____。
a.(i-1)X10+(j-1)b.(i-1)X20+(j-1)c. (i-1)+(j-1)X10d.(i-1)+(j-1)X201.1.7.使用____可以定义一个程序的意义。
a.语义规则b.词法规则c.产生规则d.左结合规则1.1.8.表达式X:=5中,变量x____。
a.只有左值b.只有右值c.既有左值又有右值d.没有左值也没有右值1.1.9.词法分析器的输入是__。
a.单词符号b.源程序c.语法单位d.目标程序1.1.10.中间代码生成时所遵循的是_。
a.语法规则b.词法规则c.语义规则d.等价变换规则1.1.11.编译程序是对__。
a.汇编程序的翻译b.高级语言程序的解释执行c.机器语言的执行d.高级语言的翻译1.1.12.词法分析应遵循_。
(陕西省2000年自考题)a.语义规则b.语法规则c.构词规则d.等价变换规则多项选择题:1.2.1 编译程序各阶段的工作都涉及到___。
2.4 正规表达式到有限自动机的构造
2.4.3 DFA M的化简 (DFA Minimization) NFA确定化所得的DFA可能含有多余 的状态, 需化简。所谓DFA M的化简,是 指寻找一个状态数比M少的DFA M',使得 L(M) = L(M')。 化简后的DFA M' 满足下述条件: (1) 无多余状态 (死状态); (2) 状态集中无相互等价(不可区别) 的状态。
2014-9-28 9
例2.7 对下图,取 I=e_CLOSURE{1}={1,2}, 求从状态I出发经一条有向边a所能 到达的状态集J和e_CLOSURE(J)。
a 5 e e a e 6
1
e
a
2 4
3 7
e
8
J={5, 3, 4} e_CLOSURE(J)={5, 6, 2, 3, 8, 4, 7}
S 0 1 a 1 1 b 1 1
2014-9-28
30
于是得到DFA 如下: a a 1 0 b b 化简: 因{0,1}a={1}, 故不划分。 因{0,1}b={1}, 故不划分。 因此, 最简DFA如下: a 0 b
2014-9-28 31
(2) (a*b*)*对应的NFA如图2-20所示, 用子集法将NFA确定化得下述转换表:
r1*
的转换规则可不可以改为?
e r1 e sj
si
例:(11+)*
2014-9-28
8
2.4.2 NFA M的确定化 --子集构造法(Subset Construction) 首先 定义FA M的任一状态子集 I 的 e_CLOSURE(I): (1)若si∈I, 则si∈e_CLOSURE(I); (2)若si∈I, 则从 si 出发经过e所能到达的 状态 sj 属于e_CLOSURE(I)。 其次 定义Ia: 对FA M的任一状态子集 I , 若a是Σ中的 一个字符,则定义 Ia=e_CLOSURE(J), 其中 J 是从 I 中某一状态出发经过a所能 到达的所有状态的集合。 J=move(I,a)
第6讲 词法分析3--正规式与有限自动机的等价性
视频区域
为正规式构造NFA
(a|b)*(aa|bb)(a|b)*
(a|b)*(aa|bb)(a|b)*
X
Y
a a5a
ε
ε
X
1
2
3ε
b6 b b
视频区域
a
4εY b
为正规式构造NFA
a
a
a
aa
Xε 1 ε 2
3ε 4 ε Y
b
bb
b
M’
为NFA构造正规式
假定NFA M=<S, Σ, δ, S0, F>,我们对M的状 态转换图进行以下改造:
在M的转换图上加进两个状态X和Y,从X用ε弧连接 到M的所有初态结点,从M的所有终态结点用视ε频弧区连域 接到Y,从而形成一个新的NFA,记为M’,它只有一 个初态X和一个终态Y,显然L(M)=L(M’)。
构造Σ上的NFA M’ 使得 L(r)=L(M’)
首先,把r表示成
视频区域
Xr Y
为正规式构造NFA
按下面的三条规则对r进行分裂
i r1r2 k 代之为 i r1 j r2 k
r1
视频区域
i r1|r2 j 代之为
i
j
i
r1*
r2 k 代之为 i ε j ε k
r1
为正规式构造NFA
正规式 -> FA
对任何正规式r,都存在一个FA M,使得L(M)=L(r)。
编译原理
正规式与有限自动机的等价性 ——为NFA构造正规式
为NFA构造正规式
对转换图概念拓广,令每条弧可用一个正规式 作标记。
编译原理第6讲 词法分析3--有限自动机等价性
{1,6,4,2,Y} {1,5,4,2,Y} {1,3,6,2,4,Y}
{1,5,4,2,Y} {1,3,5,2,4,Y} {1,6,4,2,Y}
DFA与NFA的等价性证明
把表看成状态转换矩阵,子 集视为状态
转换表唯一刻划了一个确定 的有限自动机M
初态是-closure({X})
M’ X
a
两个状态不等价,则称它们是可区别的
测试:状态的可区分性
两个状态s和t是可区分的,是指( )
A. 对于任意字,要么s读出停止于终态而t读出
停止于非终态,要么t读出停止于终态而s读
出停止于非终态
视频区域
B. 存在一个字,要么s读出停止于终态而t读出 停止于非终态,要么t读出停止于终态而s读 出停止于非终态
重复上述过程,直到所有第2, 3列子集全部出现在第一列为止
I
视I频a 区域 Ib
-Closure({X}) {...} {...}
{...}
{...} {...}
{...}
{...} {...}
DFA与NFA的等价性证明
M’
a
a5a
a
X 1 2
3 4 Y
b
b6 b
b
I -closure({X})={X,1,2}
DFA与NFA的等价性证明
确定化:不失一般性,设字母表只 包含两个 a 和b,我们构造一张计 算状态集的转换表:
首先,置第1行第1列为closure({X})求出这一列的Ia,Ib;
然后,检查这两个Ia,Ib,看它 们是否已在表中的第一列中出 现,把未曾出现的填入后面的 空行的第1列上,求出每行第2, 3列上的集合...
达的状态集合。
正规式与有限自动机的等价
V1(V2)* V3
证B. 就正规式V,引入初态X和终态Y. 先构造NFA V
X
Y
法则(P50图3.7): 确定化: 给定 I为M的状态子集, a为 中字符. 引入概念 I的闭包,记为 _closure(I): (a) I中元在闭包中 (b)一切 I中元通过弧能到的状态
Ia= _closure(J): J是所有那些由I中元经a弧能到达的状态全体
j是所有那些由i中元经a弧能到达的状态全体xy例子i?closure112ia?closurej?closure3452345678?a??a?a?15263847转换矩阵构造过程确定化设?abnfam初态集为xiiaib?closurex依ia计算依ib计算选取未出现在第一列者填入第一列下行位置作为i重新计算ia和ib例
D. 最少化算法(P56-58) 例子3.6 (P51图3.8)
I) 令 = {S1, S2} S1为非终态集; S2为终态集. 可区分 II) 设 = {S1, S2, …, Sn } (Si , Sj 可区分, 各Si 待区分) 如果存在 a和某个Si , 使得Sia 分别落在中 p 个不同的子集, 则将Si 分为 p 个更小的状态子集Si1, Si2, …, Sip, 使得对每个Sij 而言, Sija全部包含在 中的同一子集中. (注意: Si 中一切遇a 无定义的状 态归为一类(一个子集)) 如此, 每细分一次得一个 new III) 若 new , 则将 new 作为 重复 II) IV) 对中任意子集Si = {Si1, Si2, …, Sik}选一个代表状态如Si1. 将原来导入 Si2, …, Sik的弧改为导入Si1. 然后删除Si2, …, Sik. Si1为新的初态 Si 中有原初态; Si1为新的终态 Si 中有原终态 V) 在IV步结果基础上,删除所有无用状态. 即从初态永远到达不了的那些状 态.
有穷自动机与正规文法 编辑原理
单元目录第三单元~词法分析3.5 有穷自动机和正规文法1.正规文法和有穷自动机的等价性有穷自动机和正规文法的等价性,即:1.对于一个NFA M,都存在一正规文法G,使得L(G)=L(M)。
2.对于一个正规文法G,都存在一个NFA M,使得L(M)=L(G)。
2.有穷自动机和正规文法1.定理:设G=(VN ,VT,P,S)为一正规文法,则存在一有穷自动机使得L(M)=L(G);M的构造方法 :(右线性正规文法)为G的开始符号S和开始状态S1.增加一个新状态Z,作为NFA的终态;2.若G中有如A->tB的产生式,则令f(A,t)=B3.若G中有如A->t的产生式,则令f(A,t)=Z状态图如下:3.对左线性正规文法将右线性文法的“开始结点”与“终止结点”互换,且将各弧反向。
例:已知左线性正规文法为:I=>l|Il|Id解:先画出右线性文法的自动机再将“开始结点”与“终止结点”互换,且将各弧反向。
4.将有穷自动机转化成等价的正规文法:定理:已知一个有穷自动机FA M=(K,Σ,f, S , Z),则存在一个正规文法G=(VN,VT,P,S),使得L(G)=L(M)。
构造方法:对于函数f(A,t)=B 可写出 A→tB对于终态Z,可以增加一个产生式 A →ε5.习题给出接受下列字母表{0,1}上的语言DFA.(1)所有以00结束的字符串的集合。
(2)所有3个0的字符串的集合。
描述下列正规式所表示的语言(1)0(0|1)*0解:以0开头并且以0结尾的0、1串。
(2)(0|1)*0(0|1)(0|1)解:由0、1组成的串,且从右边开始数第三位为0。
(3)0*10*10*10*解:含3个1的0、1串.。
对下列语言分别写出它们的正规式(1)Σ={0,1}上含偶数个1的所有串解: (0|10*1)*(2)Σ={0,1}上含奇数个1的所有串解: (0|10*1)*0*10*。
《编译原理》考试试题及答案
《编译原理》考试试题及答案《编译原理》考试试题及答案(附录)⼀、判断题:1.⼀个上下⽂⽆关⽂法的开始符,可以是终结符或⾮终结符。
( X )2.⼀个句型的直接短语是唯⼀的。
( X )3.已经证明⽂法的⼆义性是可判定的。
(X )4.每个基本块可⽤⼀个DAG表⽰。
(√)5.每个过程的活动记录的体积在编译时可静态确定。
(√)型⽂法⼀定是3型⽂法。
(x )7.⼀个句型⼀定句⼦。
( X )8.算符优先分析法每次都是对句柄进⾏归约。
(应是最左素短语) ( X )9.采⽤三元式实现三地址代码时,不利于对中间代码进⾏优化。
(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。
( x )11.⼀个优先表⼀定存在相应的优先函数。
( x )12.⽬标代码⽣成时,应考虑如何充分利⽤计算机的寄存器的问题。
( )13.递归下降分析法是⼀种⾃下⽽上分析法。
( )14.并不是每个⽂法都能改写成LL(1)⽂法。
( )15.每个基本块只有⼀个⼊⼝和⼀个出⼝。
( )16.⼀个LL(1)⽂法⼀定是⽆⼆义的。
( )17.逆波兰法表⽰的表达试亦称前缀式。
( )18.⽬标代码⽣成时,应考虑如何充分利⽤计算机的寄存器的问题。
( )19.正规⽂法产⽣的语⾔都可以⽤上下⽂⽆关⽂法来描述。
( )20.⼀个优先表⼀定存在相应的优先函数。
( )型⽂法⼀定是2型⽂法。
( )22.如果⼀个⽂法存在某个句⼦对应两棵不同的语法树,则⽂法是⼆义性的。
( )⼆、填空题:1.( 最右推导)称为规范推导。
2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码⽣成),(代码优化)和(⽬4.从功能上说,程序语⾔的语句⼤体可分为()语句和()语句两⼤类。
5.语法分析器的输⼊是(),其输出是()。
6.扫描器的任务是从()中识别出⼀个个()。
7.符号表中的信息栏中登记了每个名字的有关的性质,如()等等。
8.⼀个过程相应的DISPLAY表的内容为()。
9.⼀个句型的最左直接短语称为句型的()。
正规文法与有限自动机的等价构造
正 规 文 法 与有 限 自动 机 的等 价 构 造
钱忠胜 邹 俊
江西 南 昌 3 0 1 ) 3 0 3 ’ 江西财经大学信息管理学 院 (
( 南昌理工学 院计算机科学与软件工程 系 江西 南 昌 3 04 ) 30 4
摘
要
在功能上 , 正规文法与有限 自动机描述 和识别语 言是等价 的, 它们之 间也存在等价构造算法 , 但这些构造算法有些复 杂。
词 法 分 析 中 , 于 单 词 识 别 、 成 过 程 的 模 型 表 示 和 实 现 j 用 生 。
当前 系统 的一个状态 ; ∑表示系统可 能发生 的条件集合 ; 8是一
c n tucin ag rt o sr t loihms, i h a e rt e o o wh c r ah rc mplx The smplfe f r s o h o sr c in n herpr os ae p e e td. c nsr to ・ e. i i d om ft e c n tu to s a d t i o f r r s n e A o tucin a i b u he e uiae tta so ai nfo fnt utmaa t e i e e u a r mm a s as r vd d a d p e e . r lv te mpl sg v n. o tt q v n r n f r to r m iea o t o lf ln a r g l g a l m i t r r r i o p o ie n r v d A ee a xa l n e i i e
文献 [ 3—5 。 ] 定义 1 一个 确定有限 自动 机 M 是一个 自动识别装置 , 为
一
个 五元组 , M=( , 8 S, ) 其 中 S中 的每个元 素表示 即 S ∑, , F ,
正规文法正规式
状态图如下:
a S -a,b b
b
U a
a + a,b Q
b
V
2、用矩阵表示DFA : 方法: 行表示状态
列表示输入字符 元素表示相应状态行和输入字符下的新状态。
“” 标明初态,默认第一行是初态。 终态行在表右端标1,非终态标0 上例矩阵表示如下:
字符 状态
a
b
S
U
V0
U
Q
V0
V
U
Q0
Q
Q
Q1
例:
a
S-
b
表示:f(S,a)=Z
f(S,b)=Z
f(Z,a)=Z
S
f(Z,b)=Z
Z
写成正规式是: (a|b)(a|b)*
+ a,b Z
a
b
Z
Z0
Z
Z1
3、接受(识别)的概念: 自动识别单词
对于Σ*中的任何字符串t,若存在一条初态到某 一终态的路,且这条路上所有弧的标记符连接成的字 符串等于t,则称t可为DFA M所接受。
• a*
• b*
• -------------------
• (a|b)*
• a*|b*
• aba*
• (a|b)*(aa|bb) (a|b)*
• {}
• • a {a}来自• b {b}• -----------
• (a) {a}
一个正规式可以表示若干个符号串,
• (b) {b}
其正规集就是这些符号串的集合
正规文法正规式:将一个正规文法转换为正规式的规则:
计算机编译原理课后习题及答案详细解析
在此深情而热烈的感谢沈仲秋同学的大力支持和帮助,同时希望本文档对各位有些帮助。
一1、画出编译程序的总体结构图,简述其部分的主要功能。
[答案]编译程序的总框图见下图。
图编译程序的总体结构图其中词法分析器,又称扫描器,它接受输入的源程序,对源程序进行词法分析,识别出一个个的单词符号,其输出结果上单词符号。
语法分析器对单词符号串进行语法分析(根据语法规则进行推导或归纳),识别出程序中的各类语法单位,最终判断输入串是否构成语语义分析及中间代码产生器,按照语义规则对语法分析器归纳出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间优化器对中间代码进行优化处理。
一般最初生成的中间代码执行效率都比较低,因此要做中间代码的优化,其过程实际上是对中间代码目标代码生成器把中间代码翻译成目标程序。
中间代码一般是一种与机器无关的表示形式,只有把它再翻译成与机器硬件相关的机器能表格管理模块保持一系列的表格,登记源程序的各类信息和编译各阶段的进展状况。
编译程序各个阶段所产生的中间结果都记录在表格出错处理程序对出现在源程序中的错误进行处理。
如果源程序有错误,编译程序应设法发现错误,把有关错误信息报告给用户。
编译程2、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?[答案]计算机执行用高级语言编写的程序主要途径有两种,即解释与编译。
像Basic之类的语言,属于解释型的高级语言。
它们的特点是计算机并不事先对高级语言进行全盘翻译,将其变为机器代码,而是每读总而言之,是边翻译边执行。
像C,Pascal之类的语言,属于编译型的高级语言。
它们的特点是计算机事先对高级语言进行全盘翻译,将其全部变为机器代码,再统1.文法G[S]为:S->Ac|aBA->abB->bc写出L(G[S])的全部元素。
[答案]S=>Ac=>abc或S=>aB=>abc所以L(G[S])={abc}2. 文法G[N]为:N->D|NDD->0|1|2|3|4|5|6|7|8|9G[N]的语言是什么?[答案]G[N]的语言是V+。
形式语言与自动机
0型文法
1型文法,即 上下文有关文法
其中 ,(VT∪VN)*
||0
其中 ,(VT∪VN)*
||||
0型语言
1型语言,即 上下文有关语言
2型文法,即 上下文无关文法
A 其中 AVN,(VT∪VN)*
2型语言,即 上下文无关语言
3型文法,即 正规文法 (线性文法)
Aa或AaB(右线性),或 Aa或ABa(左线性)
–次序靠前的小写字母,如:a、b、c –运算符号,如:+、-、*、/ –各种标点符号,如:括号、逗号、冒号、等于号 –数字1、2、…、9 –黑体字符串,如:id、begin、if、then
非终结符号
–次序靠前的大写字母,如:A、B、C –大写字母S常用作文法的开始符号
–小写的斜体符号串,如:expr、term、factor、stmt
……
i=0
L的正闭包记作L+:即L的1次或若干次连接。
L+=Li = L1∪L2∪L3∪L4∪ ……
i=1
7
把幂运算推广到语言
L0={},Ln=Ln-1L,于是Ln是语言L与其自身的n-1次连接。
L={A,B, … ,Z,a,b, … ,z},D={0,1, … ,9}
–可以把L和D看作是字母表 –可以把L和D看作是语言
符号串有关的几个概念 长度
–符号串的长度是指中出现的符号的个数,记作||。 –空串的长度为0,常用表示。
4
前缀
–符号串的前缀是指从符号串的末尾删除0个或多个符号 后得到的符号串。如:univ 是 university 的前缀
后缀
–符号串的后缀是指从符号串的开头删除0个或多个符号 后得到的符号串。如:sity 是 university 的后缀
编译原理知识点参考
第三章3.1 对于词法分析器的要求1.词法词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。
词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序。
2.程序语言的单词符号:关键字、标识符、常数、运算符、界符。
3.输出的单词符号的表示形式:(单词种别,单词自身的值)Eg:while (i>=j) i--;输出单词符号:< while, - >< (, - >< id, 指向i的符号表项的指针><>=, - >< id, 指向j的符号表项的指针>< ), - >< id, 指向i的符号表项的指针>< --, - >< ;, - >4.词法分析器作为一个独立子程序:结构简洁、清晰和条理化,有利于集中考虑词法分析一些枝节问题。
5.词法分析器3.2 词法分析器的设计1.词法分析器2.输入、预处理:输入串放在输入缓冲区中。
预处理子程序:剔除无用的空白、跳格、回车和换行等编辑性字符;区分标号区、捻接续行和给出句末符等扫描缓冲区(指向开始位置,向前搜索确定终点)3.单词符号的识别、超前搜索:(1)基本字识别Eg:DO99K=1,10 DO 99 K = 1,10IF(5.EQ.M)GOTO55 IF (5.EQ.M) GOTO 55DO99K=1.10IF(5)=55需要超前搜索才能确定哪些是基本字(2)标识符(3)常数(4)算符和界符4.状态转换图(有限方向图)<1>结点代表状态<2>状态之间用箭弧连结,箭弧上的标记(字符)代表射出结状态下可能出现的输入字符或字符类。
<3>一个状态转换图可用于识别(或接受)一定的字符串。
5.语法分析的状态转换图6.状态转换图的实现思想:每个状态结对应一小段程序。
河南理工大学大二计算机专业编译技术考试试卷及参考答案1
河南理工大学编译技术考试试卷及参考答案1一、单项选择题(5’)1.要在某台机器上为某种语言构造编译程序,必须掌握下述那些内容?()a. 汇编语言b. 高级语言c. 源语言d. 目标语言e. 程序设计方法学f. 机器语言g. 编译方法A、abfB、afgC、cdgD、efg答案:C2.一般程序设计语言的定义都涉及()三个方面。
a.语法 b.语义 c.语用 d.程序基本符号的确定。
A、abcB、abdC、acdD、bcd答案:A3.数组的内情向量中肯定不含有数组的( )的信息。
A、维数B、类型C、维上下界D、各维的界差答案:A4.编译程序生成的目标程序()是机器语言的程序。
A、一定B、不一定答案:B5.编译程序是一种常用的()软件。
A、应用B、系统答案:B6.程序语言的语言处理程序是一种()。
A、系统软件B、应用软件C、实时系统D、分布式系统答案:A7.使用解释程序时,在程序未执行完的情况下,()重新执行已执行过的部分。
A、也能B、不可能答案:A8.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的( )。
A、必要条件B、充分条件C、充分必要条件D、无关条件答案:A9.动态存储分配时,可以采用的分配方法有( )。
(1) 过程为单位的栈式动态存储分配 (2) 堆存储分配 (3) 最佳分配方法A、(1)B、(2)C、(2)(3)D、(1)(2)(3)答案:D10.用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行。
这种说法()。
A、正确B、不正确C、不一定答案:B11.汇编程序是将汇编语言程序翻译成()。
A、高级语言程序B、机器语言程序C、低级语言程序D、机器语言或高级语言程序答案:B12.编译程序是将()翻译成()。
A、汇编语言程序机器语言程序B、高级语言程序汇编语言程序或机器语言程序C、汇编语言程序或高级语言程序机器语言程序或高级语言程序D、高级语言程序机器语言程序或高级语言程序答案:B13.如果文法G是无二义的,则下面( )成立。
编译原理教程课后习题参考答案——
第二章 词法分析2.1 完成下列选择题:(1) 词法分析器的输出结果是 。
a. 单词的种别编码b. 单词在符号表中的位置c. 单词的种别编码和自身值d. 单词自身值(2) 正规式M1和M2等价是指 。
a. M1和M2的状态数相等b. M1和M2的有向边条数相等c. M1和M2所识别的语言集相等d. M1和M2状态数和有向边条数相等(3) DFA M(见图2-1)接受的字集为 。
a. 以0开头的二进制数组成的集合b. 以0结尾的二进制数组成的集合c. 含奇数个0的二进制数组成的集合d. 含偶数个0的二进制数组成的集合【解答】(1) c (2) c (3) d图2-1 习题2.1的DFA M2.2 什么是扫描器?扫描器的功能是什么?【解答】 扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
通常是把词法分析器作为一个子程序,每当词法分析器需要一个单词符号时就调用这个子程序。
每次调用时,词法分析器就从输入串中识别出一个单词符号交给语法分析器。
2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的有限自动机,其中f 定义如下:f(x,a)={x,y} f {x,b}={y}f(y,a)=Φ f{y,b}={x,y}试构造相应的确定有限自动机M ′。
【解答】 对照自动机的定义M=(S,Σ,f,So,Z),由f 的定义可知f(x,a)、f(y,b)均为多值函数,因此M 是一非确定有限自动机。
先画出NFA M 相应的状态图,如图2-2所示。
图2-2 习题2.3的NFA M 用子集法构造状态转换矩阵,如表表2-1 状态转换矩阵1b将转换矩阵中的所有子集重新命名,形成表2-2所示的状态转换矩阵,即得到 M ′=({0,1,2},{a,b},f,0,{1,2}),其状态转换图如图2-3所示。
表2-2 状态转换矩阵将图2-3所示的DFA M ′最小化。
第三节正规式与有限自动机的等价性
( a|b) *(aa|bb)(a|b) *
X
Y
等价变换:
( a|b) * (aa|bb)
(a|b) *
X
1
2
Y
7
( a|b) * (aa|bb)
(a|b) *
X
1
2
Y
等价变换:
a
a
a3 a
ε
ε
X
5
1
2
ε
ε
6
Y
b
b
b
4
b
NFAM
8
(2) 用状态转换矩阵M 表示NFAM’;
I
{x,5,1} {5,1,3} {5,1,4 } {5,1,3,2,6,y} {5,1,4,2,6,y} {5,1,4,6,y} {5,1,3,6,y}
s0 s1
si
si a si b si c
sn M’
M’ 满足 DFAM 的定义.
推论: 对任意正规式V,存在一个DFAM ,使得L(DFAM)= L(V).
6
示例: 设正规式为 ( a|b) *(aa|bb)(a|b) *,求与之等价的DFAM.
(1) 由定理 1 的证明方法,可如下构造NFAM
s5 ab s6
b
10
第四节 自动生成词法分析器的实现
11
12
-------------练习--------------------1. 奇数的正规式表示; 2. 标识符中允许下划线的正规式表示; 3. 凡是 ‘1’后都有‘0’相跟随的01序列的正规式表示; 4. 构造如下正规式相应的DFA
11(0|1)*101 5. 构造一个DFA,它接受∑={0,1}上所有满足如下条件的字 符串: 每个1后都有0直接跟随在后边的非空序列; 根据 DFA的状态图,编写一个识别程序.
2.4 正规文法、正规表达式与有限自动机的等价性
ε
q0
q1
M1
f1
ε
qf
ε
q2
M2
f2
ε
• 情况2. 设r的最外层运算为连接,即r=r1 r2。构造 NFA如下:
q1 M1 f1
ε
q2
M2
f2
• 情况3. 设r的外层运算为Kleene闭包,即可写成 r=(r1)*的形式。可构造NFA如下:
ε
q0
ε
q1
M1
f1
ε
f0
ε
□
• 例:根据正规式构造等价的NFA。 • 1)a(a+b)*b • 2)((a+b)2)*
NFA→正规式
• 回顾:去状态法。 • 另一种方法: NFA→ 右线性文法→正规式 • 例2.10 求下列DFA的等价正规式。
q0 q1 q2
• 解:首先求出等价的右线性文法
q0 → 0q1 |1q0 q1 → 0q0 |1q2 |1 q2 → 0q1 |1q0
• 然后转化为等价的正规式方程组
q0 = 0q1 + 1q0 q1 = 0q0 + 1q2 + 1 q = 0q + 1q 1 0 2
正规文法与有限自动机的等价性研究[]
正规文法与有限自动机的等价性研究[]摘要:通过证明正规文法和有限自动机之间的等价性定理,给出正规文法和有限自动机之间的等价构造方法。
关键词:正规文法;有限自动机;等价性;构造方法中图分类号:TP301.1 文献标识码:A 文章编号:1007-9599 (2010) 05-0000-02Equivalent Study Between Regular Grammar and Finite AutomataGe Hansong,Chai Xiaohui(Department of Computer Science,Shangqiu Teachers College,Shangqiu 476000,China)Abstract:It gives the equivalent constitution method between the regular grammar and the finite a utomata by proving the theorem of equivalence between them.Keywords:Regular grammar;Finite automata;Equivalence;Structuring method一、引言在乔姆斯基的文法分类中,正规文法包括左线性文法和右线性文法。
由于正规文法和正规表达式在描述语言的能力上是等价的,而正规表达式和有限自动机在描述语言的能力上也是等价的,因此,正规文法和有限自动机之间也存在着等价性。
通常,对于正规文法G和有限自动机M,G所定义的语言记作L(G),M所能识别的语言记作L(M),如果有L(G)=L(M),则称G和M是等价的。
二、从正规文法到有限自动机(一)正规文法到有限自动机的等价性证明定理1:对于每一个右线性正规文法GR和左线性正规文法GL,都存在一个有限自动机M与之等价。
证明:1.设右线性文法GR=(VT,VN,S,P),将VN中每个非终结符视为状态符号,并增加一个新的终止符号f,(fVN)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
L( M ' ) = L( M ) R = L(G )
正规文法→NFA
• 例: 给出正则文法G如下: S→0B B→0B B→1S B→0 试构造等价的DFA。
正规文法→NFA
• 例2.8 设L=0(10)*,易知L可以由下面的右线性文法 产生
G1 : S → 0 A
A → 10 A | ε
L 也可以由左线性文法 G2 产生
[ε ] ∈ δ ([ S ], w) 当且仅当 S ⇒ w
G
*
即
w ∈ L( M )
当且仅当
w ∈ L(G )
我们可以构造一个右线性文 当 G = (V , T ; P, S ) 是一个左线性文法时, 法 G ' = (V , T ; P ' , S ) ,其中:
P ' = { A → α | A → α R是G的一个产生式}
• 解此方程组可得 • q0=(00+01+1)*01
等价转换方法总结
• 有限自动机之间的等价转换: ε-NFA → NFA → DFA • FA与正规表达式 • FA FA与右线性文法 • FA与左线性文法 • 右线性文法→正规式方程组→正规式 • 正规式→NFA→右线性文法
研究
• 左线性文法↔右线性文法
其中 Pref(x)表示 x 的前缀,那么易知:
{a | δ (qi , a ) = q j } 当i ≠ j R = {a | δ (qi , a ) = q j } U {ε } 当i = j
0 ij k k k k k Rij = Rik−1 ( Rkk−1 )* Rkj−1 U Rij −1
2.4 正规文法、正规表达式与有限自 正规文法、 动机的等价性
• 前面我们已经证明,从接受语言的范围来 说,DFA,NFA,以及带 ε-转换的NFA是等价 的。 • 本节我们将分别证明,正规表达式和正规 文法同各种FA也是等价的。
2.4.1 正规表达式与有限自动机的等价性
• 定理 定理2.6 设r为一个正规表达式,那么存在一个带ε -转换的NFA接受L(r)。 • 证明:我们对r中运算符的个数用数学归纳法证明,
那么易知, G ' 是一个右线性文法,而且 L(G' ) = L(G)R 。对于 G ' ,我们在 前面已构造出一个带ε -转换的 NFA:M 接受 L(G ' ) 。注意上面 M 中只有 一个终止状态,我们把 M 的终止状态作为初始状态,把 M 的初始状态作 为终止状态,把 M 的图形表示中的各条有向边的方向逆转(边上旁标的 ' 字 符 不 变 ), 就 得 到 一 个 新 的 带 ε - 转 换 的 NFA: M , 显 然
定理 2.8
设 G 为一个正规文法,那么存在一个带ε -转换
的 NFA:M 使得 L(M)=L(G)。
证明: 先假设 G = (V , T ; P, S ) 为一个右线性文法, 我们可以构造 一个带ε -转换的 NFA: M = (Q, T , δ ,[ s ],{[ε ]}) 其中: Q = {[α ] | α = S 或α 是G中某产生式右边的一个后缀}
• 例2.9 对于下列文法,求其等价的正规表达式。
P : S → 1S | 0 A | ε A → 0S |1A
• 解:转化为方程组
S = 1S + 0 A + ε A = 0 S + 1A
• 解此方程组得唯一解
S = (1 + 01*0)* A = 1*0(1 + 01*0)*
• 因此上述文法所生成的语言是 L((1+01*0)*)
NFA→正规式
• 回顾:去状态法。 • 另一种方法: NFA→ 右线性文法→正规式 • 例2.10 求下列DFA的等价正规式。
q0 q1 q2
• 解:首先求出等价的右线性文法
q0 → 0q1 |1q0 q1 → 0q0 |1q2 |1 q2 → 0q1 |1q0
• 然后转化为等价的正规式方程组
q0 = 0q1 + 1q0 q1 = 0q0 + 1q2 + 1 q = 0q + 1q 1 0 2
δ 定义为:1) 对A ∈ V: δ ([A],ε )={α |A → α 是G的一个产生式}
2) 对a ∈ T 且[aα ] ∈ Q : δ ([aα ], a ) = {[α ]}
对推导的步数用数学归纳法可证明
[α ] ∈ δ ([ S ], w)
*
当且仅当
S ⇒ wα
G
特别地,当α = ε 时,就有:
左线性文法↔ 左线性文法↔右线性文法
• • • • • • 空串对应起始符号,起始符号对应空串。 A→aB ⇒ B→Aa A→a ⇒ S→Aa A→ε ε ⇒ S→A S→Aa ⇒ A→a S→A ⇒ A→ε
G2 : S → S10 | 0
试分别构造与上述文法等价的 NFA。
[S ]
ε
[0 A]
[ A]
ε
[ε ]
[10 A]
ε
根据 G1 构造出来的接受 L 的 NFA
[S ]
ε
[10 S ]
[1S ]
ε
[0] [ε ]
根据 G2 构造出来的接受 L 的 NFA
NFA→正规文法 →
定理 2.9 设 M = (Q, Σ, δ , q0 , F ) 为一个 DFA,那么存在一 个右线性文法 G1使得 L(G1 ) = L( M ) ,也存在一个左线性文法
NFA→右线性文法
• 例: 给定NFA如下,构造等价的右线性文法。
问题
• NFA→左线性文法 ?
2.4.3 右线性文法→正规式 右线性文法 文法→
• 给定正规文法,很难直接看清它生成的语言,可以把先求 出等价的正规式。 • 方法:将右线性文法变换为正规式的方程组。 • 1. 把文法中的各个变量看作未知正规表达式,终极符看作 已知正规表达式。 • 2. 对某变量A ,若以A 为左部的全部产生式为 • A→xB|yC|zD • 其中x,y,z是终极符号串,B,C,D是变量,则得到正规表达 式方程 • A=xB+yC+zD • 3.这样,整个右线性文法变换为一个正规式方程组,解此 方程组可得等价的正规表达式。
用数学归纳法(对 k 进行归纳)可以证明,对
∀i, j ∈ {1, 2,L, n}和非负整数 k,都存在正规表达式 rijk 表示
k 集合 Rij
由于
L( M ) =
q j ∈F
U
R1nj
所以 L(M)可以用一个正规表达式表示。
• 例:构造等价于下列DFA的正规式:
正规文法与有限自动机的等价性 • 正规文法是左线性文法和右线性文法的总称。 • 为了证明正规文法和FA的等价性,我们首先证明每 个右线性文法和每个左线性文法所产生的语言都可 以被一个带ε-转换的NFA接受,然后证明每个DFA接 受的语言都可以由一个右线性文法产生,也可以被 一个左线性文法产生。
定理 2.7 设语言 L 被一个 DFA 接受,则 L 也可以被一个正规 表达式所表示。 证明:设接受 L 的 DFA 为
M = (Q, Σ, δ , q1 , F )
其中Q = {q1 , q2 ,L, qn }。 我们记
Rij = {x ∈ Σ* | δ (qi , x) = q j }
k Rij = {x ∈ Rij | ∀y ∈ Pr ef ( x), y ≠ ε :(δ (q1, y) = qr ) → (r ≤ k)}
G2 ,使得 L(G2 ) = L( M ) 。
(证明请看教材,这里从略)
NFA→右线性文法
• 给定NFA: M=(Q, Σ, δ, q0, F) • 构造右线性文法:G=(Q, Σ, P, q0) • 产生式的构造规则: • 1) q→ap 如果(q,a)→p • 2) q→a 如果(q,a)→p且p∈F • 3) q0 →ε 如果 q0 是终结状态。
ε
q0
q1
M1
f1
ε
qf
ε
q2
M2
f2
ε
• 情况2. 设r的最外层运算为连接,即r=r1 r2。构造 NFA如下:
q1 M1 f1
ε
q2
M2
f2
• 情况3. 设r的外层运算为Kleene闭包,即可写成 r=(r1)*的形式。可构造NFA如下:
ε
q0
ε
q1
M1
f1
ε
f0
ε
□
• 例:根据正规式构造等价的NFA。 • 1)a(a+b)*b • 2)((a+b)2)*
存在一个带 ε-转换且只有一个终止状态的NFA接受L(r)。 • 1. 归纳基础:当r中运算符个数等于0时,r只可那是下 面几种:∅, ε或一个字母 a ,接受它们的NFA分别为:
q0
qf
q0
q0
a
qf
• 1) 接受∅
2) 接受ε
3)接受a
• 归纳步:假设当r中含有不多于k个运算符时结论成 立。下面证明当r中含有k+1个运算符时结论也成立。 分3种情况讨论。 • 情况1. 设r的最外层运算为“+”,即r=r1+r2。此时 构造NFA如下: