2024 年 6 月编译原理考试要点

1、知道翻译程序的三个类型

编译程序、解释程序、汇编程序。


2、自编译、交叉编译的概念及对 T 型图的理解

自编译:将一种高级语言的程序直接用该语言表示出来。

交叉编译:在A机器上的编译程序能产生B机器语言的目标代码。


3、系统程序设计语言的概念

能够编写编译程序或其他系统软件的高级语言。


4、知道各种推导和归约的长度

 

直接推导长度为1,推导的长度≧1,广义推导的长度≧0。


5、知道句型、句子、语言的概念

c7b38edbb6c6493084f8734ff5e910e7.png

 


6、给定文法会写其产生的语言


7、能判断产生某语言的文法是哪一个


8、知道递归文法的作用

 

使文法的形式比较简练,提供无限文法的有限表示方法。


9、会画一个句型所对应的语法树,并能找出其中的短语、简单短语、句柄

 

(1) 子树未端结点形成的符号串是相对于子树根的短语。

(2) 只有两层的简单子树末端结点形成的符号串是相对于该子树根的简单短语。

(3)最左边的简单子树的末端结点形成的符号串是句柄。


10、会证明文法的二义性

 

一个文法中某个句子对应两棵不同的语法树。


11、会判断乔姆斯基文法的类型

 

不正规的方法:

正规文法(3型)的所有产生式满足左线性或右线性推导,如果替换时不考虑上下文则为上下文无关文法(2形),推导中有αAβ::=αBβ形式的是上下文有关文法(1型),以上都没有的是短语结构文法(0型)。


12、能写出一个文法的压缩过文法

 

去除A::=A和推导不出终结符号的字符产生的文法。

 

13、会画出左线性和右线性文法对应的状态转换图,并能实现左右线性文法的转换及其对应的正规式

f2a0c57f1b194ad5a31b5ac4fbfb2fe6.png

 

 

 

14、能根据某正规式构建转换系统能根据转换系统写出正规式,并对该转换系统确定化、重命名并判断能否化简

66bd247c61e14336a214fc9540473cc0.png

 

15、会判断状态转换图能否化简


16、会判断两个正规式是否等价


17、会利用两种方法消除文法的左递归

 

(1)改写法:先将相同部分代入,然后将A::=Aα|β改写为A::=βA' A'::=αA'|ε

(2)扩充的BNF:

{t}^n m t重复出现m,m+1…n次

[t]=ε或t={t}^1

()提取公因子



18、会求 First 集和 Follow 集合,且能由此构造 LL(1)分析表,并判断文法是否为 LL(1)文法

 

求FIRST集:α=X1X2...Xn

首先置 FIRST(α)=φ;然后将 FIRST(X1)中一切非ε的符号加入FIRST(α),若ε属于FIRST(X1),再将FIRST(X2)中一切非ε的符号加入 FIRST(α),依此类推;最后,若对于 1≤i≤n,ε属于FIRST(Xi),则再将ε加入 FIRST(α)。

求FOLLOW集:

对于文法的开始符号S,令#属于FOLLOW(S)。

若文法中有形如 A::=αBβ的规则,且B不等于ε,则将 FIRST(β)中一切非ε的符号加入 FOLLOW(B);若B=ε或β推出*e,则FOLLOW(A)中全部符号均属于 FOLLOW(B),其中α可以为ε。


19、会判断 LR 项目的类型


19、知道 SLR(1)分析法的具体做法

 

在一个项目集中同时存在a的移进和E的归约项目时,存在“移进-归约”冲突,因此不是LR(0)文法,若FOLLOW(E)和FOLLOW(a)的交集为空,则可用SLR(1)解决,ACTION为FOLLOW(a)时移进,为FOLLOW(E)时归约。


20、会构造 LR(1)文法识别活前缀的 DFA 并造表,同时会判断其是否可以压缩为 LALR(1)并说明理由

 

LR(1):搜索符,开始符后面接#,A—>αBβ,a(A、B是非终结符),若β为空照抄,β不为空则加入后面的终结符

LALR(1):当LR(1)项目集存在A—>x•,a和A—>x•,b时,合并同心集为A—>x,a/b,合并后不存在“归约-归约”冲突,则可以压缩为LALR(1)。

 

21、能实现算数运算的后缀表达式和中缀表达式间的转换


22、会将条件语句转成 POST 数组形式和四元式形式

 

POST数组形式

JLT:<成立,转到p

if a>b then s1 else s2

b a  跳转到s1 JLT s2 跳转到结尾Jump s1

四元式形式

(1)(j>,a,b, 3)

(2)(j,,,4)

(3)s1

(4)s2

(5)(return,,,) 


23、设计题:能设计出产生某语言的状态转换图或 DFA

 

考的很烂,考后复盘一下:

条件语句if(a)b=c else if(b<c) a=c else c=d

第一小问是post语句(填5个数字)第二小问是四元式。

左线性文法画成状态转化图,要把首符号S作为终态。转化成右线性。

状态转换系统路径应该包括第一个状态,全都没写导致多推了很多。

LL(1)分析表 S::=ABC,A含有ε,B含A开头的句子,C::=c|d求FIRST(ABC)

LR(1)分析表 判断可不可以LALR(1)

 

最后一题设计题要求奇数个0后面1个1,然后01和10随机排列,比如0000011001, 0001011001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值