1、L(GS)=anbmcm|n=0,m2.6 已知文法E=TE+TE-T 、 T=FT*FT/F 、 F=(E)i,写出该文法的开始符号、终结符号集合VT、非终结符号集合VN。开始符号:EVt=+, - , * , / ,( , ), iVn=E , F , T2.7 对2.6题的文法,写出句型T+T*F+i的短语、简单短语以及句柄。短语:T+T*F+i T+T*F i i T T*F简单短语:i T*F T句柄:T2.8 设有文法GS:S=S*S|S+S|(S)|a,该文法是二义性文法吗?根据所给文法推导出句子a+a*a,画出了两棵不同的语法树,所以该文法是二义性文法。2.9 写一文法,使其语
2、言是奇正整数集合。 A:=1|3|5|7|9|NAN:=0|1|2|3|4|5|6|7|8|92.10给出语言anbm|n,m1的文法。GS: S:=AB A:=aA|a B:=bB|b第三章3.1 有正则文法GZ:Z:=Ua|Vb,U:=Zb|b,V:=Za|a ,画出该文法的状态图,并检查句子abba是否合法。解:该文法的状态图如下:句子abba合法。3.2 状态图如图3.35所示,S为开始状态,Z为终止状态。写出相应的正则文法以及V,Vn和Vt。 左线性文法GZ: 右线性文法GS:=Ab|b S:=aA|b A:=Aa|a A:V=Z,A,a,b V=S,A,a,bVn=Z,A Vn=S
3、,AVt=a,b Vt=a,b3.3 构造下列正则表达式相应的NFA: 1(1|0)*|0 1(1010*|1(010)*1)*0正则表达式:1(1|0)*|01、2、3、4、1(1010*|1(010)*1)*03.4 将图3.36的NFA M确定化abq0=00,11q1=0,1q2=10DFA:3.5 将图3.37的DFA化简。划分2,42,3,4,51,0,3,53,5,2,43,5q0=0,1 q1=2,4 q2=3,5化简后的DFA:第四章4.1 对下面文法,设计递归下降分析程序。SaAS|(A) , AAb|c首先将左递归去掉,将规则AAb|c 改成 Acb非终结符号S的分析程序
4、如下:非终结符号A的分析程序如下:过程A INPUTSYM=cINPUTSYM=下一个符号YINPUTSYM=bN错误出口4.2 设有文法GZ:Z=(A) , A=a|Bb , B=Aab若采用递归下降分析方法,对此文法来说,在分析过程中,能否避免回溯?为什么?若采用递归下降分析方法,对此文法来说,在分析过程中不能避免回朔。因为规则A=a|Bb和规则B=Aab构成了间接左递归,不满足实现没有回溯的递归下降分析方法的条件(1)(书P67),且规则 A: := a|Bb,FIRST(a)=a,FIRST(Bb)=a,即此规则候选式的首符号集有相交,不满足实现没有回溯的递归下降分析方法的条件(2)(
5、书P67),在分析过程中,将造成回溯。改写文法可避免回溯:将规则B=Aab代入规则A=a|Bb得:A=a|Aabb,再转换成:A=aabb,可避免回溯。4.3 若有文法如下,设计递归下降分析程序。 |ID=项|*/ID|NUM|()首先,去掉左递归|改为: | + - 改为:(+ | -) * / (* | /)则文法变为: 非终结符号 类型变量表;int|float|charID,|ID(1) 在该文法中提取左因子。(2) 为所得的文法的非终结符构造FIRST集合和FOLLOW集合。(3) 说明所得的文法是LL(1)文法。(4) 为所得的文法构造LL(1)分析表。(5) 假设有输入串为“ch
6、ar x,y,z;”,写出相对应的LL(1)分析过程。(1) 规则|ID提取公因子如下:ID(,|)增加新的非终结符,规则变为:ID, C声明文法改变为:(2) FIRST()FIRST()int,float,charFIRST()ID),FOLLOW()#)FOLLOW();(3) 所得文法无左递归,且FIRST(int)FIRST(float)FIRST(char)FIRST(,)FIRST()FOLLOW()因此,所得文法为LL(1)文法。(4) 所得的文法构造LL(1)分析表如下所示:intfloatcharID,intfloatchar,(5) 输入串“char x,y,z;”相对应
7、的LL(1)分析过程如下:#char x,y,z;POP ,PUSH(;#;PUSH(char) charPOP,NEXTSYMx,y,z;PUSH(ID)x,y,z;,)y,z;y,z;z;z一、 (20分)对于文法G(S):S(A)|a, AA+S|S(1) 给出句型(a+(A)的最左推导。(2) 画出句型(a+(A)的语法树。(3) 写出上述句型的所有短语、简单短语和句柄。二、 (10分)给出语言anbmcn|n,m0的文法。三、 (10分)有正则文法如下。画出该文法的状态图,并检查句子aaab是否合法。GZ:ZAb|b,AAa|a四、 (10分)构造正则表达式(a | b)*aa相应的
8、NFA。五、 (10分)设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 请构造相应的确定有限自动机。六、 (10分)计算下列文法中每个非终结符号的FIRST集合和FOLLOW集合。GS:S(A),Aa | Bb,BbAa七、 (20分)有文法如下。试问该文法是LL(1)文法吗?如果是,请构造预测分析表;如果不是,请先将该文法改造成LL(1)文法,再构造LL(1)分析表。SSF | SF | F,F(S) | i 复习大纲第1章 编译概述 编译方式与解释方式 编译程序的组成 编译程序的结构(“遍”、
9、“端”)第2章 文法和语言 文法形式定义 推导(规范推导) 句型、句子 语言 短语、简单短语和句柄 语法树第3章 词法分析 词法分析的任务 正则文法及状态图 正则表达式 有穷自动机(NFA、DFA)NFA、DFA状态图 构造正则表达式的相应NFA NFA确定化 DFA化简第4章 语法分析自顶向下分析 第5章 语法分析自底向上分析第6章 语法制导翻译技术第7章 符号表管理技术 符号表的内容和组织 符号表结构 错误处理第9章 语义分析和代码生成 语义分析的任务 中间代码: (1)波兰后缀表示(逆波兰式)(掌握) (2)N元表示 (21)三元式(掌握) (22)四元式(掌握) (23)抽象机代码 (3)栈式抽象机及其汇编指令第10章 代码优化 局部优化 基本块的划分方法 基本块的DAG表示及优化实现 循环内优化
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1