【编译原理】最全复习大纲及例题

一、体系结构的基本概念

1、画出编译程序的总体结构图,并简要说明每一部分的主要功能。
在这里插入图片描述

二、文法和语言

1、给出该文法产生的语言
例题:
对于文法G:S→AB,A→aA | ε,B→bB | b,给出该文法产生的语言。
解:S→AB,
S→aAB,
S→aaAB,
S→aaAbB,
S→aaAbbB,
归纳得
L(G)={a的m次方×b的n次方 | m>=0,n>=1 }
2、构造一个文法G,满足语言L(G)
例题1:
构造一个上下文无关文法G,满足L(G) ={am×bn×cn×dm|m≥1且n≥1}
解:构造的文法为:G= ( V,T,P,S )
其中V={ S ,A },
T={ a,b,c,d }
P={ S→aSd ;S→A ;A→bAc | bc }
例题2:
构造一个上下文无关文法G,满足L(G) ={am×bn×cn×dm|m≥1且n≥0}
解:前面同上
P={ S→aSd ;S→A ;A→bAc | ε }
例题3:
构造一个上下文无关文法G,满足L(G) ={am×b2n×cn×d2m|m≥1且n≥1}
解:前面同上
P={ S→aSdd | aAdd ;A→bbAc | bbc }
例题4:
对于十进制数据,写一个文法,使其语言是奇数集,且每个奇数不以0开头。
解:构造的文法为
G:N→AB | B ;A→AC | D ;B→1|3|5|7|9 ;D→B|2|4|6|8 ;C→0|D
3、写句型,句子
例题:
S→0S1→00S11→000S111→00001111
句子:00001111,句型:以上五个
4、给出文法G,写最左推导,最右推导,画出语法树
在这里插入图片描述
5、什么是二义文法?该文法是二义文法吗?
二义文法:句子对应不止一个最左/最右推导。
若有两种及以上推导方式,则该文法是二义文法。
6、给出句型的所有短语,直接短语,句柄,素短语,最左素短语。
短语:每颗子树的叶子;
直接短语:每颗直接子树的叶子;
句柄:最左的直接短语;
素短语:至少含一个终结符且不包含更小的素短语
最左素短语:最左的素短语

三、词法分析

1、状态转换图
2、正规集、正规表达式及其求法
3、确定有限自动机,不确定有限自
动机

4、NFA到DFA的转化,DFA的从简,从正规表达式构造自动机
步骤:(1)求正规表达式 (2)画NFA (3)子集法求DFA (4)化简DFA
例题:
在这里插入图片描述
解:在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述2、给出“以01结尾的二进制数串”的正规表达式及其相应的NFA然后确定化,求出其对应的DFA 并给出其形式定义。
正规表达式:(0|1)闭包* ×01
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、构造一个DFA。它接受Σ={a,b}上所有包含ab的字符串
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

四、语法分析——自上而下分析

1、求First集和Follow集
First集:看产生式→右边第一个,若为终结符,直接加入,若为非终结符,从该非终结符找产生式右边第一个。
Follow集:开始符有#,A→αB,B后面为空,Follow(A)加入Follow(B)中,A→αBβ,若β是终结符,直接加入,β是非终结符,First(β)去掉ε之后加入Follow(B)中,注:如果β→ε,带入A→αBβ,得到A→αB,将Follow(A)加入Follow(B)中。
例题:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
2、将文法修改不含左递归
例题:
将文法G[S]改写为等价的G[S],使G[S]不含左递归和左公共因子:
G[S]:S→bSAe | bA;A→Ab | d
解:改后:G[S]:S→bP;P→SAe | A;A→dQ;Q→bQ | ε
3、判断是否为LL(1)文法
1、该文法不含左递归
2、该文法中每一个非终结符的各个产生式的候选首符集两两不相交
3、该文法的每个非终结符,都有某个候选首符集包含ε,则First(T)∩Follow(T)=空
4、给出输入串的分析过程(反正压入)
在这里插入图片描述
在这里插入图片描述
5、画出LL(1)的预测分析表
在这里插入图片描述在这里插入图片描述在这里插入图片描述

五、语法分析——自上而下分析

1、规范规约,短语,直接短语,句柄,素短语,直接素短语
(参考第二章)
2、算符优先分析法(构造算符优先表)
Firstvt集:P→终a……;P→非Q终a……;P→非Q……;
将终a加入Firstvt§,Firstvt(Q)属于Firstvt§
Lastvt集:P→……终a;P→……终a非Q;P→……非Q;
将终a加入Lastvt §,Lastvt (Q)属于Lastvt §
算符优先表:矩阵形式,若F→( E ),则左括号小于点Firstvt( E ),
Firstvt( E )大于点右括号,左括号等于点右括号;注:当→右边出现终终或者终非终时,终等于点终。
算符优先文法:任何两个终结符之间至多只有一种优先关系。
例题:
给出下列文法的算符优先关系,构造出算符优先关系表,并给出(i+i)*i的分析过程在这里插入图片描述
解:在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3、通过LR(0)分析表,给出串的分析过程。
例题:
文法G(S)及其LR分折法如下表,请给出串“baba”的分析过程。
在这里插入图片描述
在这里插入图片描述
注:2与b对应S4,则4进分析栈,b进符号栈;5与b对应R4,则5和a出栈,4和b对应6(通过goto表看),则6进入分析栈,B进入符号栈

六、属性文法和语法制导的翻译

在这里插入图片描述在这里插入图片描述

七、语义分析与中间代码生成

1、求逆波兰,三地址,三元式,间接三元式,四元式,抽象树,DAG

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述

  • 17
    点赞
  • 192
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向前的诚_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值