ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:615.81KB ,
资源ID:30550655      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30550655.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理考试.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理考试.docx

1、编译原理考试编译程序是对高级语言程序进行翻译在规范规约中,用句柄来刻画可规约串动态存储分配是指在运行阶段为源程序的数据对象分配存储空间词法分析的输出结果是单词的种别编码和自身值正规式等价是指所识别的语言集相等优化可生成运行时间短且占内存少的代码程序【一】文法和语言编译程序和翻译程序的区别编译程序是整体编译完了,生成目标代码,再一次性执行。解释程序是一边解释,一边执行,并不形成目标程序。文法文法是描述语言的语法结构的形式规则(即语法规则)。文法G:定义为四元组(VN,VT,P,S)VN为非终结符号的集合, VT为终结符号的集合, P为产生式的集合, S为开始符号,是一个非终结符,至少要在一条规则

2、中作为左部出现。文法分类0型文法 短语文法 递归可枚举语言1型文法 上下文有关文法 上下文有关语言2型文法 上下文无关文法 上下文无关语言3型文法 正规文法 正规语言句型假定G是一个文法,S是它的开始符号。如果S*(表示从S出发,经0步或若干步可推出),则称是一个句型。句子仅含终结符号的句型是一个句子。语言由文法G生成的语言记为L(G),它是文法G的一切句子的集合推导 直接推导规约 直接规约直接推导:仅当A 是一个产生式,有v =A,w= ,A ,称v直接推导到w, 记作v w,也称w直接归约到v。最左推导又称为规范推导。 语法树语法树的根结由开始符号所标记。随着推导的展开,当某个非终结符被它

3、的某个候选式所替换时,这个非终结符的相应结就产生了下一代新结。每个新结和其父亲结间都有一条连线。在一棵语法树生长过程中的任何时刻,所有那些没有后代的端末结自左至右排列起来就是一个句型。二义文法如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。也就是说,若一个文法存在某个句子,它有两个不同的最左(最右)推导,则这个文法是法是二义的。 文法的二义性证明:找出一个句子,它有两个不同的最左推导或最右推导画出语法树EE+E|E*E|(E)|i,关于(i*i+i)的语法树短语语法树中一棵子树的所有叶子从左向右排列起来形成一个相对于子树根的短语。直接短语只有父子两代的短语为直接短语。句柄一

4、个句型的分析树中,最左边的只有父子两代的子树的叶子从左向右排列起来形成构成此句型的句柄。1、语言和文法的相互转换1) 已知文法写出该文法所生成的语言: 语言是有穷集:通过从开始符号的推导出所有的句子,所有句子的集合即为所求的语言 语言是无穷集:通过从开始符号的推导出几个的句子,总结句子的特点,将特点描述出来。例如G: S0S1, S01 S 01 S0S1 0011 S 0S1 00S11=000111 语言为01个数相等,并且0在前,1在后L(G)=0n1n|n=12) 已知语言写出描述该语言的文法一般所写的文法是上下文无关文法和正规文法,用集合的形式表示语言 若是这一类的题目先记住几个基本

5、的情况,若是复杂的都可以分解成基本的情况。 一般给定集合是无限集,文法都应是递归文法,可以是直接递归也可以是间接递归。基本的有: an 若生成多个a,用递归文法表示则为:A-aA,递归有结束的时候,结束的写法看n的值:若n为0,即有0个a,即为,A- 若n为1,即有1个a,即为a,A-a若n为2,即有2个a,即为aa,A-aaanbn生成n个a,n个b且a在b之前,则每一次推导都要产生一个a和一个b,才能保证ab的个数相等,若用A作为非终结符,右部A不能在ab之前A-Aab,或在ab之后A-abA,这样生成的符号串就是abab,所以只能在ab之间。所以为:A-aAb,然后看n的值:若n为0,即

6、有0个ab,即为,A- 若n为1,即有1个a,一个b,即为ab,A-ab rrt 若r是a,b*,rt是r的逆,第一位和最后一位相同,第二位和倒数第二位相同,。所以先生成第一个和最后一个,然后依次生成第二位和倒数第二位。因为第一位和最后一位相同,同为a或同为b,A-aAa|bAb,这样能保证从后部分是前部分的逆。递归结束看rt和r之间的符号,在这里没有为,所以为A-;若改为rart,rt和r之间为a,即为A-a其余的情况可分解成以上三种情形。例1: 试构造生成语言L=anbnci|n1, i 0的文法分析:anbnci可以进行分解让A生成anbn,B生成ci符号串anbnci是AB连接后的结果

7、。n1所以A-aAb|ab ,i 0所以B-cB|也可写成B-Bc|。解:S-AB A-aAb|ab B-cB|例2: 已知语言L=anbbn| n 1, 写出产生L的文法。 分析:先生成anbn,当n=1符号串为:abb解:S-aSb|abb例3:请给出描述语言=a2m+1 b m+1 | m=0a2m b m+2| m=0的文法分析:a2m+1 b m+1可以看成aa2m b mb,而a2m b m可以用A-aaAb生成,a2m b m+2可以看成a2m b mbb,而a2m b m也可以用A-aaAb生成,若m=0,a2m b m为空串所以为A-,aa2m b mb 是aAb, a2m

8、b mbb是Abb;解:s-aAb|Abb A-aaAb|例4:已知语言L=x | xa,b,c*,且x重复排列是对称的(aabcbaa,aabbaa,等) 写出该语言的文法。 分析:若符号串的长度为偶数,则后半部分是前半部分的逆,所以为S-aSa|bSb|cSc|若符号串的长度为奇数,则除中间的外,中间字符的后半部分是中间字符前半部分的逆,而中间的字符可以为a,b,c所以文法为:S-aSa|bSb|cSc|a|b|c 解: S-aSa|bSb|cSc|a|b|c| 用自然语言描述语言这种情况一般常根据经验来构造文法。例:写一个文法,使其语言是奇数集,且每个奇数不以0开头。 N-A|MAM-B

9、|MDA-1|3|5|7|9B-1|2|3|4|5|6|7|8|9D-0|B1.已知文法GA=(A,a,b,AbA|a,A)所生成的语言是什么? bna|n=02.写一文法,使其语言是偶正整数的集合。 要求:(1) 允许0打头; (2)不允许0打头。答 :(1)允许0开头的偶正整数集合的文法ENT|DTNT|DND|1|3|5|7|9D0|2|4|6|8(2)不允许0开头的偶正整数集合的文法ENT|D TFT|G ND|1|3|5|7|9D2|4|6|8FN|0GD|03.给出生成下述语言的上下文无关文法:(1) anbnambm| n,m=0 (2) 1n0m 1m0n| n,m=0(3)

10、a2n+1|n=0(4) a2n+1bnci|n0,i=0答: (1)SAA AaAb| (2) S1S0|A A0A1| (3) SaaS|a (4) SaAB AaaAb|aabBcB|4.已知语言L=x | xa,b,c*,且x重复排列是对称的(aabcbaa,aabbaa,等)写出该语言的文法。 SaSa|bSb|cSc|a|b|c|1:证明下述文法GE是二义的。Ea|(E)|EOE O+|-|*|/答:可为句子a+a*a构造两个不同的最右推导:最右推导1 EEOE EOa E* a EOE* a EOa * aE+ a * a a + a * a最右推导2 EEOEEOEOEEOEO

11、 aEOE * a EOa * a E+ a * a a + a * a2:令文法GE为: ET|E+T|E-TTF|T*F|T/FF(E)|i 1: 试构造生成语言L=anbnci|n1, i 0的文法解:S-AB A-aAb|ab B-cB|2: 已知语言L=anbbn| n 1, 写出产生L的文法。 解:S-aSb|abb3: 已知文法G=(A,B,C,a,b,c,A,P)其中产生式P由以下组成: A abc A aBbc BbbB Bc Cbcc bC Cb aC aaB aC aa 问:此文法表式的语言是什么? 解:该题通过推导到的句子的特点进行总结,语言为:anbncn|n=14

12、请给出描述语言=a2m+1 b m+1 | m=0a2m b m+2| m=0的文法 解:s-aAb|Abb A-aaAb| 5已知文法GS为: SdAB AaA|a BBb | GS产生的语言是什么?GS能否改写为等价的正则文法?解:语言为:dambn|m0,n=0 可改写为正规文法:S-dA A-aB B-aB|bD| D-bD|6:试写一文法,使其描述的语言L(G) 是能被5整除的整数集合。 解:S-D|AD|ABDD-0|5A-1|2|3|4|5|6|7|8|9B-0|A|0B|AB7: 已知语言L=x | xa,b,c*,且x重复排列是对称的(aabcbaa,aabbaa,等) 写出

13、该语言的文法。 解: S-aSa|bSb|cSc|a|b|c| 2、已知一上下文无关文法,对给定的句型,画出语法树,并求其所有的短语,直接短语以及句柄。1)已知一上下文无关文法,构造语法树 语法树是对推导过程中的形象描述。若用产生式:A-推导,对应的树中,A是双亲结点,中的符号是孩子结点。一般根据推导过程可以画出语法树。注意,推导过程有最左推导、最右推导和既不是最左也不是最右推导。注意:语法树的叶子结点不一定是终结符号例:对于文法GS S ( L) | aS |a L L, S | S画出句型( S ,(a)的语法树 S ( L ) L , S S ( L ) S a2)求某一句型的短语, 直

14、接短语, 句柄. 短语:( S ,(a);S ,(a); (a);a;S直接短语:S;a句柄: S用语法树理解某一句型的短语, 直接短语, 句柄语法树中一棵子树的所有叶子从左向右排列起来形成一个相对于子树根的短语。只有父子两代的短语为直接短语。一个句型的分析树中,最左边的只有父子两代的子树的叶子从左向右排列起来形成构成此句型的句柄。所以短语的求法:根据语法树中的非终端结点来查找短语;每一个非终端结点为根的子树上的叶子结点从左往右排列起来即是短语。 若某个非终端结点的所有的孩子结点都是叶子结点,该非终端结点为根的子树上的叶子结点从左往右排列起来即是直接短语,也就是所有的孩子结点排列起来即是直接短

15、语。句柄:最左直接短语写出句型( S ,(a)的所有短语, 直接短语, 句柄. 根据该句型的语法树,可以知道有六个非终端结点,对语法树从上到下,从左往右看非终端结点:以S为根的子树上的叶子结点排列起来为:( S ,(a);以L为根的子树上的叶子结点排列起来为:S ,(a); 以L为根的子树上的叶子结点排列起来为:S;以S为根的子树上的叶子结点排列起来为: (a);以L为根的子树上的叶子结点排列起来为:a ;以S为根的子树上的叶子结点排列起来为:a;后两个非终端结点对应相同的叶子结点,所以写成一个短语,所以短语有五个:所有短语:( S ,(a);S ,(a); (a);a;S第三层上的L和第五层

16、上的S的所有孩子都是叶子,所以所对应的叶子排列起来是直接短语直接短语:S;a句柄: S证明E+T*F的语法树,指出这个句型的所有短语、直接短语和句柄。答 E+T*F的语法树: E E + T T * F短语有:E+T*F,T*F 直接短语有:T*F 句柄为:T*F3:已知文法G:S(AS)|(b) A(SaA)|(a)试画出句型(A(SaA)(b) 的语法树,指出该句型的所有短语、直接短语和句柄(8分) S ( A S )( A S ) ( S a A ) ( b )短语: ( SaA)、(b )、(SaA)(b)、 (A(SaA)(b) 直接短语: ( SaA) 、 (b ) 句柄( SaA

17、)【二】词法分析正规式: 正规文法:任一产生式的形式都为:AaB或Aa正规集:设字母表为,辅助字母表=,。1.和都是上的正规式,它们所表示的正规集分别为和 ; 令=a,b, 上的正规式和相应的正规集的例子有:正规式 正规集a aab a,bab ab(ab)(ab) aa,ab,ba,bba ,a,a,任意个a串DFA一个确定的有穷自动机(DFA)M是一个五元组:M=(K,f,S,Z)其中1.K是一个有穷集,它的每个元素称为一个状态;2.是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号表;3.f是状态转换函数,是在KK上的映射. 如 f(ki,a)=kj,(kiK,kjK)

18、意味着,当前状态为ki,输入符为a时,将转换为下一个状态kj,我们把kj称作ki的一个后继状态;4.SK是唯一的一个初态;5.Z K是一个终态集,终态也称可接受状态或结束状态。NFA一个不确定的有穷自动机(NFA)M是一个五元组:M=(K,f,S,Z)其中1.K是一个有穷非空集,它的每个元素称为一个状态;2.是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号表;3.f是状态转换函数,是在K*2K上的映射.4.S K是初始状态集5.Z K是一个终态集NFA到DFA的确定化过程子集法1:NFA确定化和DFA最小化 确定化:采用的子集法。1) DFA的初态为:NFA的初态集的-clo

19、sure,即为-closure(S)S为NFA的初态集2) 从-closure(S)开始将所有求出的子集均接受上的符号,求出所到达的集合,直到子集不在增大为止。 3)确定终态:若子集中含有NFA的终态,该子集为DFA的终态 例:从图中可以得到:NFA的初态为i终态为f -closure(i)=i,1,2 状态集合I的-闭包,表示为-closure(I),除了包括自身之外,还包括状态集I中的任何状态S经任意条弧而能到达的状态的集合。-closure(i)要包括自身中的状态i,和i经过任意条弧到达的状态,可以到1和2,所以-closure(i)=i,1,2DFA的初态为:NFA的初态集的-闭包,所

20、以为i,1,2 确定化的过程从i,1,2开始,接受a,是::i接受a到达的集合是空集 1接受a到达的集合是1 2接受a到达的集合是31 3=1,3,然后求1,3的-闭包,-closure(1,3)=1,3,2所以i,1,2接受a到达的集合是1,3,2。用数学的形式表示为:1,2,3=-closure(move(i,1,2,a)状态集合I的a弧转换,表示为move(I,a)定义为状态集合J,其中J是所有那些可从I中的某一状态经过一条a弧而到达的状态的全体。i,1,2接受b到达的集合是1,2,4。1,2,3和1,2,4是新增加的子集,然后在对1,2,3和1, 2,4再分别接受a和b,重复做直到所出

21、现的所有集合都接受了a和b。如上表所示。终态的确定: NFA的终态为f,上面所出现的集合只要有f的即为DFA的终态,1,2,3,5,6,f1,2,4,5,6,f1,2,4,6,f1,2,3,6,f中都含有f所以是终态。画出DFA的状态转换图:最小化: 采用的分割法完成: 1.将M的状态分成非终态和终态集 2、寻找子集中不等价状态 若一个集合的状态等价,则对于任何输入符号,该集合中的状态接受该符号后到达的状态属于同一集合。否则不等价,把不在同一个集合的划分出去。例上图 :先划分为终态集和非终态集 S,A,B C,D,E,F 对于集和C,D,E,F中的状态接受a到达的状态属于同一个集合,属于集和C

22、,D,E,F,接受b 到达的状态属于同一集合,所以C,D,E,F是等价的。对于集和S,A,B,S接受a到达的状态为A,属于S,A,B,A接受a到达的状态为C,属于C,D,E,F,B接受a到达的状态为A,属于S,A,B,所以A与S,B是不等价的。将A划分出去。划分的结果为:AS,B对于集和S,B接受a到达的状态均为A,属于 A ;S接受b到达的状态为B,属于S,B,B接受b到达的状态为D,属于C,D,E,F,S,B接受b到达的状态属于不同集合,所以S,B是不等价的。最终的划分为:S,ABC,D,E,F将等价的状态合并:正规文法、正规式和FA的等价问题2、FA和正规式、正规文法的转化 1)正规文法

23、转化为正规式: 采用的是联立方程组: 例如:文法GS为:S-aA, S-a, A- aA, A-dA, A-a, A-d 联立方程组为 : S=aA+a(1) A=aA+dA+a+d(2) 整理:A=(a+d)A+(a+d) A=(a+d)*(a+d) 带入(1) S=a(a|d)*(a|d) |a=a(a|d)*注:产生式左部相同的写到一个方程中,所有的右部用+连接起来作为方程的右部。产生式左部作为方程的左部,S-aA, S-a,对应的方程为:S=aA+a方程的求解:若有方程A=rA+t ,则该方程的解为:A=r*t2)正规式转化为正规文法: 一般用分解法做,记住几个基本的情况: 若x和y都

24、是正规式, 对A-xy,重写成:A-xB, B-y; 对形如A-x|y,重写成: A-x,A-y; 对形如A-x* y,重写成: A-xA|y-不断使用如上规则,直到每个产生式最多含有一个终结符为止。例如:将R=a(a|d) *转换成正规文法 分解的情况是:a与(a|d) *做连接,所以为:A-aB,B-(a|d) * (a|d) *相当于:(a|d) * 按第三种情况处理,所以为:B-(a|d)B|,即为: B-aB |dB| 所以文法为:A-aB B-aB |dB|3) 正规文法转化为FAa) 字母表与G的终结符集相同。b) 为G的每个非终结符生成M的一个状态,G的开始符号S是初态。c)

25、增加一个新状态Z,作为NFA的终态。d) 对G中的形如A-tB的产生式, 其中t为终结符或,A和B为非终结符,构造M的一个转换函数f(A,t)=B;,即A到B 有一条弧,弧上的标记为te) 对G中的形如A-t的产生式,构造M的一个转换函数f(A,t)=Z; 即A到Z 有一条弧,弧上的标记为t例如: GS: S-aA S-bB S- A- aB A- bA B- aS B- bA B- 转化为的FA 为: 4) FA转化为正规文法:a) 有穷自动机的初态对应文法的开始符号。b) 有穷自动机的字母表为文法的终结符集。c) 对转换函数f(A,t)=B,即A到B 有一条弧,弧上的标记为t即可写一个产生

26、式A-tB。d) 对可接受状态Z,增加一个产生式Z- 例如:正规文法为:GA:A-aB A-bD B-bC C-aA C-bD C- D-aB D-bDD- 5)正规式转化为FA 一般采用分解法完成,直到弧上只有一个输入符号或 为止 形如xy,: x y 形如x|y, x|y 形如A-x* y YX例:1(0|1)*1016)FA转化为正规式:第一步,在M的状态转换图上加进两个结点,一个为X结点,一个为Y结点,从X结点用弧连接到M的所有初态结点,从M的所有终态结点用弧连接到Y结点,形成一个与M等价的M, M只有一个初态和一个终态最后X和Y结点间的弧上的标记则为所求的正规式例: 请构造与正规式R

27、=(a*b)*ba(a|b)* 等价的状态最少的DFA(确定有限自动机) 根据正规式所构造的NFA为: b b a a,b1a 确定化ab1q011,21,2q111,2,31,2,3q21,41,2,31,4q31,41,2,41,2, 4q41,41,2,3,41,2,3,4q51,41,2,3,4其中q3,q4,q5是终态最小化: 将状态划分为终态集和非终态集q0.q1.q2q3,q4,q5 输入a f(q0,a)=q0 q0,q1,q2f(q1,a)=q0 q0,q1,q2 f(q2,a)=q3q3,q4,q5 q2与q0,q1输入a到达的状态属于不同集合,,所以进一步划分为:q0,q

28、1q2f(q0,b)=q1 q0,q1 f(q1,b)=q2 q2,q0,q1输入b到达的状态属于不同集合,进一步划分为:q0q1f(q3,a)=q2q2 f(q4,a)=q2q2 f(q5,a)=q2q2 输入a到达的状态属于相同集合;f(q3,b)=q4 q3,q4,q5 f(q4,b)=q5 q3,q4,q5 f(q5,b)=q5 q3,q4,q5输入b到达的状态属于相同集合;q3,q4,q5是等价状态最终划分为:q0q1q2q3.q4,q5 最小化的状态转换矩阵为:abq0q0q1q1q0q2q2q3q2q3q3q3q3是终态例设字符集= a, b ,请写出不以a开头的但以aa结尾的字符串集合的正规表达式,并构造与之等价的状态最少的DFA。正规式为:b(a|b)*aa根据正规式所构造的NFA

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1