2.2 语言处理程序基础

以编译方式翻译C/C++源程序的过程中,类型检查在( )阶段处理。
A. 词法分析
B. 语义分析
C. 语法分析
D. 目标代码生成

正确答案是 B。
解析
本题考查的是编译器工作过程。
A选项词法分析阶段处理的错误:非法字符、单词拼写错误等。与题意不符。
B选项静态语义分析阶段(即语义分析阶段)处理的错误:运算符与运算对象类型不合法等错误。本题选择B项语义错误。
C选项语法分析阶段处理的错误:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。与题意不符。
D选项目标代码生成(执行阶段)处理的错误:动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误。与题意不符。
综上所述,本题选B。

下图所示的二叉树表示的算术表达式是( )(其中的*、/、一表示乘、除、减运算)。
在这里插入图片描述

A. a*b/c- d
B. a*b/(c-d)
C. a*(b/c- d)
D. a*(b-c/d)

正确答案是 C。
解析
本题考查算术表达式相关问题。
算术表达式与树的中缀表达式类似,按照左根右的顺序,其中在算术表达式中符号位表示根。
根据该二叉树的表示,我们可以得知*为该树的总根,将左子树和右子树分隔开来。左边部分是a,右边部分是以-作为右子树的总根,左边是b/c,右边是d综合得出算术表达式应该为a*(b/c-d),答案选C。

某有限自动机的状态转换图如下图所示,该自动机可识别( )。
在这里插入图片描述

A. 1001
B. 1100
C. 1010
D. 0101

正确答案是 B。
解析
本题考查的是有限自动机相关知识。
A选项从s0出发,1001到达s1,没有到达终态s2,不能被自动机识别。
B选项从s0出发,1100成功到达终态s2,可以被自动机识别。本题选择B选项。
C选项从s0出发,1010到达s0,没有到达终态s2,不能被自动机识别。
D选项从s0出发,0101到达s1,没有到达终态s2,不能被自动机识别。

对于后缀表达式abc-+d*(其中,一、+、*表示二元算术运算减、加、乘),与该后缀式等价的语法树为( )。
在这里插入图片描述

正确答案是 B。
解析
本题考查程序语言相关知识。对题中ABCD4个二叉树进行后序遍历,得出结果与该后缀表达式一致的则为与其等价的语法树。答案为B。
A为:ab-c+d*
B为:abc-+d*
C为:ab+cd-*
D为:abcd-+*

下图所示为一个不确定有限自动机(NFA)的状态转换图。该NFA识别的字符串集合可用正规式( )描述。
在这里插入图片描述

A. ab*a
B. (ab)*a
C. a*ba
D. a(ba)*

正确答案是 A。
解析
本题考查有限自动机相关知识。根据图中展示,其正规式应以a开头,a结尾,b在中间可以出现0次或多次,所以是ab*a,答案为A。
B项是ab必须一起出现,C项b仅出现1次,D项是ba连续出现。都不符合。

语法指导翻译是一种( )方法。
A. 动态语义分析
B. 中间代码优化
C. 静态语义分析
D. 目标代码优化

正确答案是 C。
解析
本题考查程序语言基础知识。翻译的任务:首先是语义分析和正确性检查,若正确,则翻译成中间代码或目标代码。其基本思想是,根据翻译的需要设置文法符号的属性,以描述语法结构的语义。例如,一个变量的属性有类型,层次,存储地址等。表达式的属性有类型,值等。属性值的计算和产生式相联系。随着语法分析的进行,执行属性值的计算,完成语义分析和翻译的任务。
动态语义分析指运行期间的语义问题,如0作为除数进行运算。
所谓代码优化是指对程序代码进行等价(指不改变程序的运行结果)变换。程序代码可以是中间代码(如四元式代码),也可以是目标代码。

下面二叉树表示的简单算术表达式为( )。
在这里插入图片描述

A. 10*20+30-40
B. 10* (20+30-40)
C. 10* (20+30) -40
D. 10*20+ (30-40)

正确答案是 C。
解析
本题考查程序语言基础-二叉树的相关知识。本题由二叉树可知,表达式最后计算的为一,其次为*,最先做的为+,只有C选项的表达式是先加法后乘法最后减法。
A是先乘再加最后减,B项先加法后减法最后乘法,D是先乘法和减法最后加法。
也可将A、B、C、D四个选项对应的二叉树全部画出,找出相符的选项。

在程序运行过程中,( )时涉及整型数据转换为浮点型数据的操作。
A. 将浮点型变量赋值给整型变量
B. 将整型常量赋值给整型变量
C. 将整型变量与浮点型变量相加
D. 将浮点型常量与浮点型变量相加

正确答案是 C。
解析
本题考查程序语言基础知识。本题A选项需要将浮点数转换为整型数;B选项和D选项同类型数据,不需要转换数据类型;C选项需要将整型数转换为浮点数再计算。因此本题选择C选项。

乔姆斯基(Chomsky)将文法分为4种类型,程序设计语言的大多数语法现象可用其中的( )描述。
A. 上下文有关文法
B. 上下文无关文法
C. 正规文法
D. 短语结构文法

正确答案是 B。
解析
上下文无关文法:形式语言理论中一种重要的变换文法,用来描述上下文无关语言,在乔姆斯基分层中称为2型文法。由于程序设计语言的语法基本上都是上下文无关文法,因此应用十分广泛。

在以阶段划分的编译过程中,判断程序语句的形式是否正确属于( )阶段的工作。
A. 词法分析
B. 语法分析
C. 语义分析
D. 代码生成

正确答案是 B。
解析
检查单个词是否正确,属于词法阶段的工作。而识别判断程序语句形式是否正确属于语法分析的工作。

"单选题
某确定的有限自动机(DFA)的状态转换图如下图所示(A是初态,D、E是终态),则该DFA能识别( )。
在这里插入图片描述

A. 00110
B. 10101
C. 11100
D. 11001

正确答案是 C。
解析
选项中,只有C选项的字符串能被DFA解析。解析路径为:ACEEBDD。

下图为一个表达式的语法树,该表达式的后缀形式为( )。
在这里插入图片描述

A. x 5 y + * a / b -
B. x 5 y a b * + /-
C. -/ * + × 5 y a b
D. x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yoyo勰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值