编译原理期末重点汇集

这是我们学校期末编译原理老师划的重点,由于部分重点的专业视频较少,所以我把部分重点的视频地址也添加进去以便于学习

第一章

编译原理的六个过程(填空题):

词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成

六个过程都完成了哪些任务(选择题):

词法分析:对构成源程序的字符流进行扫描与分解从而识别单词

语法分析:层次分析,在词法分析的基础上将单词序列分解成各类语法短语

语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息

中间代码生成:将源程序变成一种内部表示形式

代码优化:对中间代码进行优化改造                                        

目标代码生成:把中间代码变换成特定机器上的绝对指令代码

哪些是属于前端哪些是属于后端(选择题):

前端:词法分析、语法分析、语义分析、中间代码生成(依赖于源语言与目标无关)

后端:目标代码生成、相关出错处理、符号表操作(依赖于目标机而不依赖源语言)

阐明语法的工具(填空)——文法

编译过程分为——前段、后端

编译可以通过多趟完成 答:对

第二章

给一个符号串知道长度是多少:比如|X|=001110 则长度为6 (ε的长度为0)

给一个符号串问哪些是固有头/固有尾/哪些不是固有头那些不是固有尾(选择题)

*

闭包与正闭包的关系:

四个类型的文法并知道谁包含谁谁属于谁:

0型文法示例与1型文法示例

给出两个文法判断两个文法是否等价:

两个文法所表述的语言是相同的

给出一个文法和一个句子,通过这个文法规范推导出这个句子的过程

最左推导或最右推导

编译原理——证明文法的二义性(1)_开发语言_拾柒念-GitCode 开源社区 (csdn.net)

最右推导是不是规范推导(判断题):是

最右规约是不是规范规约(判断题):不是(最左规约才是)

给出一个语法树问句型与句柄(同大题3)

直接短语中的最左直接短语为该句型的句柄

第三章

词法分析的工具都有哪些(选择): 状态转换图、扩展巴克斯范式、有限自动机、正规表达式、正规文法

正规文法与正规式之间的转换(正规文法是3级文法)

正规式转正规文法

正规文法转正规式

https://www.bilibili.com/video/BV1hD4y1H72n?p=7&vd_source=005ee0b552a0f4eec4d0b34abaab4fab

NFA是一种特殊的DFA对吗(判断):不对—DFA是一种特殊的NFA

把NFA转换成DFA用什么方法:子集法

给自动机,判断是DFA还是NFA

消除左递归与公共因子

第四章

给出一个文法求出文法的first、follow集以及文法产生式的select集(填空题)

First集:先将不重复的符号列出来判断如果第一个是终结符直接写下来,如果是非终结符就看非终结符的情况(如果非终结符=空,则将空带进去且将空删除)

Follow:要先把几个能推出空的情况写下来(不能有ε)

select(S->ab)=first(a)如果select(S->AB)= first(AB) 如果select(S->ε)=follow(s)——也要考虑多字母情况下的空,如果出现将他们合并

https://www.bilibili.com/video/BV1Cu411m7VX?vd_source=005ee0b552a0f4eec4d0b34abaab4fab

 

含有直接左递归的文法一定不是LL(1)文法→正确(一个文法有左公共因子/直接左递归是不能直接使用LL(1)文法向下推导的)( 一个含有直接左递归的文法不能用自定向下的文法进行分析的)——填空

LL(1)分析程序由什么组成(填空)——预测分析程序、先进先出栈、预测分析表

第五章

规范规约是自左向右(判断)——对

规范规约与规范推导互为逆过程(判断)——对

给语法树,问最左素短语是谁(填空)

算符优先文法是不是规范规约——不是

算符优先文法总是对句型的最左素短语——对

简单优先分析法是规范规约

有些优先关系矩阵中的优先关系不唯一,却不存在有限函数(√)

继承属性包含综合属性,综合属性是继承属性的特例。(√

第六章

LR分析器三个部分(填空题)——总控程序、分析表/分析函数、分析栈

LR分析方法的规约过程是规范推导的逆过程对吗——对

SLR(1)与LR(0)的区别:构造SLR(1)项目集规范图当中不会存在一定的规约冲突

LR 文法一定是规范归约。(√)

LR分析里四种文法之间的关系(选择题)(谁大谁小):

LALR(1):是LR(1)合并同心集后没有冲突

可归前缀和活前缀的关系(选择题):活前缀包含可归前缀

四个文法哪个文法分析性更强——LR(1)>LALR(1)>SLR(1)>LR(0)

小知识点

一个文法是二义的绝对不是LR类也不是算符优先文法

一个文法是LR(0)文法,就一定是SLR(1)文法,也是LR(1)文法,反之则不一定成立(选题)

LR(1)文法合并同心集后,他们之间的冲突可能是移进-规约冲突对吗——不对(只有可能是规约-规约冲突)

不存在移入-归约的冲突和归约-归约的冲突的文法是LR(0)文法——(存在移进—规约冲突,问一定不是哪一个文法)

第七章

语义计算包括:静态语义计算和语法树语义计算。

语义计算模型:属性文法和翻译模式

拓扑排序填空,拓扑排序:找到没有箭头指向的节点依次寻找完成即可

S属性文法是L属性文法的一个特例——L属性文法包括S属性文法

S-翻译模式是L-翻译模式的一个特例——L翻译模式包含S翻译模式

大题

1:给出一个文法判断二义性以及为什么(3分):

最左推导和最右推导不一样

编译原理——证明文法的二义性(1)_开发语言_拾柒念-GitCode 开源社区 (csdn.net)

【编译原理速成-文法类型及二义性证明】编译原理速成-文法类型及二义性证明_哔哩哔哩_bilibili:

2:给出一个文法和一个句子求推导规程并画出其语法树以及给出句型和直接短语 (7分):求推导过程及其语法树同上

【1编译原理求语法树的短语直接短语等等】https://www.bilibili.com/video/BV12a41167j9?vd_source=005ee0b552a0f4eec4d0b34abaab4fab

3:有穷自动机(5分):给出一个dfa将其最小化

【编译原理:DFA的最小化问题】编译原理:DFA的最小化问题_哔哩哔哩_bilibili

4:给出一个文法判断是否为LL(1)文法(10分)(给出过程和结果/书93-94)

1:求出所有为空的终结符

2:求出first集与follow集

3:求出select集

4:判断是否属于LL1文法(如果有一个不为空则不为LL1文法)

3编译原理如何求first集和follow集(更正版)_哔哩哔哩_bilibili

https://www.bilibili.com/video/BV1Pw41137C5?vd_source=005ee0b552a0f4eec4d0b34abaab4fab

5算符优先文法(10分)给出一个文法和一优先个关系矩阵和一个句子问句子是不是这个文法的句子(能够规约的话还要写出规约过程/也要会填表)

P116

6四个LR分析的文法中选一种,问你字符串是不是文法的句子,要根据分析表写

出分析过程(10分)(书137确保每一步都要正确)(四个文法知道其每个文法的概念和内容2个7分)

根据状态栈栈顶和剩余串最左部符号查分析表,如果是移进就将数字和非终结符分别填入两个栈中。如果是归约,根据状态栈栈顶和剩余串最左部符号查分析表得出规约式子的序号写入ACTION中,并将规约的符号填入符号栈中,再判断状态栈最顶端与符号栈最顶端,得出的数字写入GOTO       表,并将该数字移进状态栈

7给出文法,判断其是否为SLR(1)文法(15分)(140/156)

   

构造【SLR(1)分析表 + 判断是否是SLR(1)文法】_构造slr(1)分析表-CSDN博客https://www.bilibili.com/video/BV1pL4y1E7RE?vd_source=005ee0b552a0f4eec4d0b34abaab4fab

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值