编译原理简答题【太原理工大学】

二、简答题

1. 简述二义性文法的定义,以及二义性文法解决办法。

如果文法G中的某个句子存在不只一棵语法树,则称该句子是二义性的,如果文法含有二义性的句子,则称该文法是二义性的。

解决办法:① 引入一个新的非终结符,增加一个子结构并提高一级优先级;② 递归非终结符在终结符左边,使该终结符具有左结合性,否则有右结合性。

2. 语义分析的基本任务是什么,为什么使用中间语言?

语义分析的基本任务就是对结构上正确的源程序进行上下文有关性质的审查,审查源程序是否有无语义错误,为代码生成阶段收集类型信息。

使用中间语言:① 便于进行与机器无关的代码优化工作;② 使编译程序改变目标机更容易;③ 使编译程序的结构在逻辑上更为简单明确,编译前端和后端的接口更清晰。

3. 什么是文法?什么是自动机?文法和自动机有什么关系?

文法是以有穷的集合描述无穷的计划的工具,根据一些指定的规则,来确定编程语言的语法,从而实现编译器的功能。

自动机是有限状态机的数学模型。

正规文法与有限自动机等价,可以相互转换。

4. 什么是文法?什么是语言?文法和语言有什么关系?

文法是以有穷的集合描述无穷的计划的工具,根据一些指定的规则,来确定编程语言的语法,从而实现编译器的功能。

由文法的开始符号推导出的所有句子构成的集合称为该文法生成的语言。

文法是描述语言的语法结构的形式规则。给定一个文法,就能从结构上唯一地确定其语言;给定一种语言,能确定其文法,但这种文法不是唯一的。

5. 简述词法分析、语法分析、语义分析的概念及任务。

词法分析:词法分析的任务是在输入源程序时对构成源程序的字符串进行扫描分解,识别出一个个的单词,删除无用的信息,并报告分析出来的错误。

语法分析:语法分析的任务在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。

语义分析:语义分析阶段的任务主要检查源程序是否存在语义错误,并收集类型信息供后面代码生成阶段使用。

6. 什么是简单优先文法?

一个文法是简单优先文法,需要满足两个条件:① 在文法符号集中 V,任意两个符号之间必须存在一种优先关系;② 在文法中,两个产生式不能有相同的右部。

你可能感兴趣的:(期末复习汇总,自然语言处理)