编译原理问答一

一、引论

1.翻译(语言处理器)的三种形态的代表?

解:JAVA(混合),C(先编译后运行),PYTHON(边翻译边运行);

编译器:一遍翻译,多遍运行

解释器:一边翻译,一边运行

2.编译的步骤?

解:

3.每个步骤大概的功能?

解:

二、实现一个简单的编译器

1.语法与语义定义了程序语言?

解:语法描述了程序的正确形式;

语义定义了程序的含义。

2.闭包怎么操作的?以及什么是正规闭包?

解:

3.上下文无关文法G是什么,包含什么元素?

解:上下文无关文法G是一个四元式。

4.什么是句型,句子,语言?

解:可由开始符推得的叫做句型a;

若a只含有终结符则为句子;

G产生的所以句子是语言L(G)。

5.什么是符号表?

解:

6.什么是三地址码?

解:三地址代码是四元式的另一种表示形式。每个三地址码指令,都可以被分解为一个四元式(4-tuple)。因为每个陈述都包含了三个变量,所以它被称为三地址码。

7.语法分析的两种思路?

解:①.从语法规则出发检查源程序。

②.从源程序出发检查语法规则。

8.递归下降分析法特点?

回溯可能会导致效率低。

三、词法分析

(词法分析器功能是识别终结符,终结符不一定只有一个字符,如num,100)

1.词法分析输出格式?

解:输入“+”,输出“<op,153>”

2.词法分析器两种操作方法?

解:状态转换图法和正则表达式法。

3.什么是正则表达式,正则集?

解:

正则集是一种语言,集合的所有元素满足当且仅当可以被某种正则表达式表示

4.自动机的五元式M意义?

DFA:

NFA:

5.DFA与NFA区别?

6.NFA如何转换为DFA?

7.正则表达式怎么转换为DFA?

8.自动机的语言L?

解:

与上下文无关文法语言不同。

四、语法分析

A.自上而下

(判断由终结符组合成的非终结符是否合法)

1.什么是0,1,2,3型文法

解:

2、什么是文法的语言?

解:一个文法生成的语言是它所有句子的集合。因此一个终结符号串Ω在G生成的语言中,则有S=*>Ω。

3.大小写,α,β?

解:大写代表非终结符,小写代表终结符,α和β代表字符串。

4.什么是具有二义性?

解:造成二义性的原因是:文法中没有体现出结合律和优先级。

5.最左广度搜索法如何操作以及两个技巧?

解:

技巧是①:如果前缀不匹配则舍去。

②如果一个输入的全是终结符的串前缀已经匹配成功,另一个栈串还有字符则舍去。

6.该方法存在的三个问题及改造方法?

①左递归

②公共左因子

③推出空串

7.最左深度搜索法

解:要求无左递归

8.预测分析法是什么?

9.LL(1)怎么工作的?

解:

10.什么是FIRST集,FOLLOW集?

解:

11.FIRST集与FOLLOW集如何构建预测分析表?

解:

12.最左推导与最右推导区别?

解:

13.怎么根据文法写出语言?

B.自下而上之LR(0)

1.自上而下与自下而上的区别

解:

2.语法树里什么是句型,短语,直接短语,句柄?

3.如何根据文法求句型中的短语?

4.如何构建有限自动机?

5.LR(0)算法

有状态栈和符号栈

6.LR(0)分析方法,action表和goto表。

7.什么是活前缀?

8.项目集闭包运算怎么求?

解:对活前缀有效的项目的集合。

9.项目集与项目集规范族关系?

10.LR(0)条件?

解:只要有规约项目就进行规约。

C.自下而上之SLR(1)

1.如何通过项目集规范族区分LR(0)和SLR(1)?

解:

2.SLR(1)条件?

解:

判断a与FOLLOW集是否有交集即可

3.如何建立SLR(1)分析表?

解:规约都按照SLR(1)方法来。

有规约移位冲突时,follow集有的规约,该移位的移位,其他报错。

4.存在的问题?

解:

D.自下而上之LR(1)

1.什么是LR(K)项目?

将一般形式为 [A→α·β, a]的项称为 LR(1) 项,其中A→αβ 是一个产生式,a 是一个终结符(这里将$视为一个特殊的终结符)它表示在当前状态下,A后面必须紧跟的终结符,称为该项的展望符。

  • 在形如[A→α·β, a]且β ≠ ε的项中,展望符a没有任何作用(β中可能含有其他的终结符)
  • 但是一个形如[A→α·, a]的项在只有在下一个输入符号等于a时才可以按照A→α 进行归约:这样的a的集合总是FOLLOW(A)的子集,而且它通常是一个真子集。

2.闭包的定义?

3.LR(1)流程?

编译原理学习笔记(十)~LR(1)分析-CSDN博客

由0)可以推导出1式【0):左边橙色框中的式子 1:右边蓝色框中的式子】,有1式中的S是非终结符,所以又可以继续推出等价项目2和3。又2式中圆点后面的L属于非终结符,继续推出4、5式【注意:4、5中的展望符是=,因为2式中L后面有终结符=】然后继续对左边橙色框中的式子进行相同算法的推导即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雙溪舴艋舟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值