提示:内容已经过期谨慎付费,点击上方查看最新答案
编译原理(山东联盟-山东财经大学)
- 关于过程/函数的活动记录描述错误的是( )。
- 以下说法不正确的是
- 某属性文法,产生式S→B关联的语义计算包括{ B.f := S.f} ,据此判断.f是( )属性。
- 编译程序中,语法分析器的输入是( )。
- 有关基本归纳变量的作用,错误的是
LL(1)文法中的第一个L表示( )
- 表达式(a+b)/c-(a+b)*d对应的三元式形式,(a+b)的运算结果用( )表示。
已知文法G(S)如下:S→ AaS |BbS|d
A→ a
B → ε |d
对该文法正确描述的是( )- 编译程序和解释程序的区别在于( )
以下关于数据存储的说法错误的是( )。
- Chomsky文法分类中,2型文法又称为( )。
- 将产生式B → Bb |d消除左递归的方法是( )
- 存储组织中,为某些量动态分配存储空间的含义正确是( )。
LL(1)文法中的1表示( )。
- 下列错误属于静态语义错误的是( )
- 某属性文法,产生式B→Bb关联的语义计算是B→{B1.in_num :=B.in_num }B1b{ B.num := B1.num-1} ,在自顶向下语法分析时,对于应该先计算的属性描述正确的是( )。
- 已知文法G(S)如下:已知文法G(S)如下:S→ AaS |BbS|d
A→ a
B → ε |d
若用预测分析法实现语法分析,需要编写( )预测分析表。【说明:行号和列号不计入】 - 两个正规式R1和R2等价,是指( )。
- 符号表常用的操作不包括( )。
词法分析器输出的5类单词不包括( )。
- 设有基本块如下:
T1:=3
T2:=A*B
T3:=9+T1
M:=A*B
T4:=C-D
L:=T3*T4
T2:=C+D
N:=T2
假设L、M和N 是出基本块后的活跃变量,对于上述程序可以采取的局部优化
措施有( ) - 已知产生式 S→ if B then S1,其语义规则{B.true := newlable; B.false := S.next; S1.next:=S.next; S.code := B.code ‖gen(B.true':')‖S1.code},下列描述正确的有( )
- 单词的描述方法有( )。
- 已知文法G(S)如下:S→ aSb|aS
对该文法正确描述的有( ) - 已知文法G(S)的两个产生式如下:
M → K | bLM
K → dML |ε,First(M)集合中的元素有( ) - 符号串aab的前缀包括( )
- 目标代码生成中,变量的活跃信息是必须要考虑的,否则无法生成正确的目标代码
- 编译的各个阶段都可能要用到符号表。
- 语法分析输入的是5类单词序列。
- 目标代码生成时,无需考虑目标计算机的系统结构
- 所有编译程序都有目标代码生成阶段
- 短语、直接短语、句柄都是句型的成分。
- 语法制导的语义计算是指在语义分析的同时,顺便进行语法分析和检查。
空集是字母表上的正规式。
- 词法分析输出的终结符号串。
- LR(1)分析器是LR(0)分析器的优化,功能更强,执行效率更高。
- 自底向上语法制导的语义分析时,栈包括3个,分别是状态栈、符号栈、语义栈。
- LR文法中的R表示最右推导。
- 赋值语句的语义分析不需要回填技术。
- 对一般的程序设计而言,其编译程序的符号表应包含哪些内容及何时填入信息不能一概而论。
- LL(1)文法的实现有两种方法,递归下降法和预测分析法。
- 一个有穷自动机有且仅有一个初态。
- S-属性文法的语义技术是自底向上进行。
- 正规式和有穷自动机是等价的,所以二者可以互相转换。( )
- 已知文法G(S)如下:
S→ aAaB |bAbB
A→ S |db
B → bB |a
SELECT(B→ bB)∩SELECT(B→ a)的结果是Ø。 - 代码生成器的设计要着重考虑目标代码的质量问题
- 5类单词中的标识符是指变量。
- 作为脚本语言,Python语言编写的源程序,每次都要边解释边执行。
- 静态语义分析的任务最主要是检查程序结构(控制结构和数据结构)的一致性和完整性。
- 字母表的克林闭包(kleene)一定包含符号ε。
- C语言编写的源程序,每次执行都要边解释边执行。
- 既有继承属性又有综合属性的文法是L-属性文法。
- 三元式和四元式都属于三地址码。
- 一个句型中的句柄只有一个。
- 符号的作用域是通过其在符号表中是否可见体现的。
- 终结符号的属性值来自词法分析的结果。
A:过程/函数的活动记录存放着控制类信息、实际参数值、过程/函数声明的变量、临时变量等 B:为最大限度提高存储空间的利用率,一个函数在栈区仅保留一份活动记录 C:过程/函数的活动记录中变量的信息,有的是变量的值,有的是变量指代的偏移地址 D:过程/函数的活动记录在过程/函数被调用时创建,运行中访问并/或修改,调用结束撤销
答案:为最大限度提高存储空间的利用率,一个函数在栈区仅保留一份活动记录
A:源程序和目标程序是等价关系 B:窥孔优化是在中间代码层次上进行的优化工作 C:源程序到目标程序的变换是等价变换,即两者结构不同,但语义是一致的 D:目标代码生成时,需要考虑目标计算机的指令系统
答案:晶体是内部质点在二维空间成周期性重复排列的固体;空间格子中的结点是具体的质点(离子或原子)
A:遗传属性 B:具体属性 C:综合属性 D:继承属性
答案:继承属性
A:表达式 B:短语 C:单词 D:句子
答案:单词
A:记录循环的结果 B:计算其它同族归纳变量 C:自身定值 D:控制循环
答案:记录循环的结果
A:其他选项都不对 B:从左到右推导 C:分析时看最左侧的输入符号 D:从左到右扫描输入符号串
A:1 B:(1) C:a+b D:(a+b)
A:是LL(1)文法 B:因为出现左公因子,所以不是LL(1)文法 C:因为出现左递归,所以不是LL(1)文法 D:没有出现左公因子和左递归,但不是LL(1)文法
A:是否生成目标代码 B:是否生成中间代码 C:使用的翻译技术不同 D:加工的源程序不同
AI参考:正确选项是【C:使用的翻译技术不同】。编译程序和解释程序的主要区别在于使用的翻译技术不同。编译程序将源程序全部翻译成目标代码,然后再执行目标代码;而解释程序则是边翻译边执行,逐行解释源程序并执行。因此,答案为C。其他选项如是否生成目标代码、是否生成中间代码、加工的源程序不同等虽然也涉及到了编译程序和解释程序的部分特点,但不是它们的主要区别。'
A:在静态数据区,数据对象并不是一个字节一个字节连续存放,存放时需要“留白”处理,目的是为了“边界对齐” B:目标程序在目标机中运行时,都置身在一个连续的逻辑地址空间 C:程序运行时,存储空间需要为机器的操作系统和体系结构等代码预留一部分存储空间 D:目标程序代码通常存放在静态代码区,过程/函数存放在动态数据区的栈区
A:正规文法 B:上下文无关文法 C:上下文有关文法 D:一般文法
AI参考:将产生式B → Bb | d消除左递归的方法是使用栈。左递归的消除通常使用栈来帮助完成,因为栈是一种后入先出(LIFO)的数据结构,它可以有效地处理左递归的问题。具体来说,可以将产生式B → Bb | d中的Bb部分移动到B的左边,并增加一个新的非终结符Bb的右端点为B,然后利用栈来进行转换。因此,答案为选项C:使用栈来消除产生式B → Bb | d的左递归。'
A:在编译阶段为源程序的某些量进行分配存储空间,运行时再进行动态调整 B:在运行时为源程序的某些量分配存储空间 C:源程序中某些量动态分配存储空间时,可以采取栈式存放,也可以堆式存放。但是二选一,一旦确定后,所有同类型变量都采用统一的存放模式 D:在编译阶段为源程序的某些量进行分配存储空间,运行时只能访问不能修改
A:分析时每一步推导都要看当前输入符号 B:其他选项都不对 C:从左到右扫描输入符号串 D:从左到右推导
AI参考:正确选项是C:从左到右扫描输入符号串。LL(1)文法是一种预测分析方法,用于识别具有某些特定语法结构的输入符号串。在LL(1)文法中,符号1表示从左到右扫描输入符号串。这意味着在分析过程中,每一步推导都要看当前输入符号串的前一个符号,并依据该符号的类型来推导出下一步的分析结果。因此,选项C“从左到右扫描输入符号串”是正确的答案。选项A和D都描述了LL(1)文法的分析过程,但不够具体。选项B则完全不正确。'
A:括号不匹配 B:类型不匹配 C:计算结果溢出 D:出现非法字符
A:继承属性.num B:综合属性.in_num C:继承属性.in_num D:综合属性.num
A:四行三列 B:三行两列 C:三行四列 D:三行三列
A:R1和R2定义的正规语言相同 B:R1和R2使用的运算符相同 C:R1和R2定义在相同的字母表上 D:R1和R2转换成的有穷自动机相同
AI参考:答案是A:R1和R2定义的正规语言相同。正规式等价是指两个正规式所定义的正规语言相同。正规式是一种表示字符串模式的语言,可以通过一系列运算符(如“*”、“+”、“.”等)连接起来。两个正规式等价,意味着它们所描述的字符串模式相同,因此所定义的正规语言也相同。其他选项如使用的运算符、定义在字母表上或转换成的有穷自动机相同,虽然与正规式的定义有关,但不是判断两个正规式等价的必要条件。'
A:检查名字是否符合标识符命名的文法 B:删除一个或一组无用的项 C:查询给定的名字是否已在表中 D:对给定名字,往表中填写或更新它的某些信息
A:分界符 B:常量 C:关键字 D:变量
A:循环展开 B:合并已知量 C:代码外提 D:删除无用赋值
A:此处newlable的值是S1语句块的第一个语句标号 B:S.next是整个语句执行完的下一条语句标号 C:newlable表示生成一个新的语句标号 D:.next是继承属性,所以跳转前需要先确定语句块S的下一条语句标号
A:状态转换表 B:正规文法 C:正规式 D:有穷自动机
AI参考:正确选项是【B,正规文法;C,正规式】。单词的描述方法主要有正规文法和正规式两种,正规文法是一种描述字符串的方法,可以用来生成和识别字符串;正规式则是正规文法的另一种表述方式。选项A和D虽然也涉及到状态转换和自动机,但与单词的描述方法无关。'
A:因为出现左公因子,所以不是LL(1)文法 B:因为出现左递归,所以不是LL(1)文法 C:可通过消除左递归或左公因子,将其变换成LL(1)文法 D:该文法的等价变换是G(S)如下:S→ aSA A→b|ε
A:K B:ε C:b D:d
A:a B:aa C:ε D:b
AI参考:正确选项为:B:aa C:ε。前缀是一个符号串的子序列,即只包含前几个或一部分字符的子串。对于符号串aab,它的前缀包括a、aa和ε,其中a是只有一个字符的前缀,aa是包含两个连续字符的前缀,而ε表示空字符串的前缀。因此,选项B和C都是正确的前缀。选项A和D都不是前缀,因为它们不是符号串aab的子序列。'
A:错 B:对
A:对 B:错
A:对 B:错
A:错 B:对
A:对 B:错
A:对 B:错
A:对 B:错
A:错 B:对
AI参考:B:对。空集是一个没有任何元素的集合,因此它不是一个字母表上的正规式,所以选项B是正确的。选项A则表示错误。'
A:对 B:错
A:对 B:错
AI参考:答案是B:错。LR(1)分析器不是LR(0)分析器的优化,它们是两种不同的LR分析器,功能和执行效率没有优劣之分。LR(1)分析器在某些情况下可能比LR(0)分析器更复杂,执行效率也可能较低。'
A:错 B:对
A:对 B:错
A:错 B:对
A:对 B:错
A:对 B:错
AI参考:正确答案是B:错。\r该题描述错误,LL(1)文法的实现方法不只有两种,还包括LALR(1)等其他方法。'
A:对 B:错
A:错 B:对
A:错 B:对
AI参考:答案:A解释:正规式只能检查给定的输入串是否符合一定的规则,但不能实现状态转移;而有穷自动机可以通过改变状态来实现状态转移,但无法识别新的规则。因此,正规式和有穷自动机是不等价的,所以不能互相转换。故本题为错误选项。'
A:错 B:对
A:错 B:对
A:对 B:错
AI参考:答案是B:错。标识符在编程中通常用于标识变量、函数、类等,而题目中提到的5类单词并不一定是编程中的标识符,因此不能简单地判断为变量。'
A:对 B:错
A:错 B:对
A:错 B:对
A:错 B:对
A:对 B:错
A:错 B:对
A:对 B:错
AI参考:答案:B:错。一个句型中的句柄可以不止一个。句柄是语法分析中的一个概念,用于表示句子中的关键词或短语,在不同的句型中,句柄的数量和用法可能有所不同。因此,一个句型中的句柄不只有一个,可能有多个句柄。'
A:错 B:对
A:对 B:错
温馨提示支付 ¥2.15 元后可查看付费内容,请先翻页预览!