编译原理习题(含答案)——8-10语法制导翻译——哈工大陈鄞配套版本

时间:2022-09-05 16:28:49

 语法制导翻译_1


1 文法G[S]及其语法制导翻译定义如下:

产生式 语义动作

S’ → S print( S.num)

S → ( L) S.num = L.num +1

S → a S.num = 0

L →L( 1), S L.num = L( 1).num + S.num

L →S L.num = S.num

若输入为( a,( a)),且采用自底向上的分析方法,则输出为( )

A. 0

B. 1

C. 2

D. 4

 

2 有文法G及其语法制导翻译如下所示( 语义规则中的*+分别是常规意义下的算术运算符)

 E→E( 1) ∧ T {E.val = E( 1).val * T.val}

 E→T {E.val = T.val}

 T→T( 1)# n {T.val = T( 1).val + n.val }

 T→ n {T.val = n.val}

则分析句子3 ∧ 3 # 4其值为()。

A. 10

B. 21

C. 14

D. 24

 

3 有一语法指导定义如下:

S→bAb print “1”

A→( B print “2”

A→a print “3”

B→aA) print “4”

若输入序列为b( a( a( aa)))b,且采用自底向上的分析方法,则输出序列为( )

A. 32224441

B. 34242421

C. 12424243

D. 34442212

 

4 有一语法指导定义如下,其中+表示符号连接运算:

S→B print B.vers

B→a B.vers=a

B→b B.vers=b

B→Ba B.vers=a+B.vers

B→Bb B.vers=b+B.vers

若输入序列为abab,且采用自底向上的分析方法,则输出序列为( )

A. aabb

B. abab

C. bbaa

D. Baba

 

5 使用( )可以定义一个程序的意义。

A. 语义规则

B. 词法规则

C. 产生规则

D. 词法规则

 

6 以下说法正确的是( )

A. 语义规则中的属性有两种:综合属性与继承属性

B. 终结符只有继承属性,它由词法分析器提供

C. 非终结符可以有综合属性,但不能有继承属性

D. 属性值在分析过程中可以进行计算,但不能传递

 

7终结符具有( )属性。

A.抽象

B.传递

C.综合

D.继承


 语法制导翻译_2


1 关于将L-SDD转换为SDT的规则,以下选项中,正确的是( )

A. 将计算某个非终结符号A的继承属性的动作放在产生式的最后

B. 将计算一个产生式左部符号的继承属性的动作放置在产生式的最后

C. 将计算某个非终结符号A的继承属性的动作插入到产生式右部中紧靠在A的本次出现

之前的位置上

D. 将每个语义动作都放在产生式的最后

 

2 以下说法不正确的是( )

A. 如果一个S-SDD的基本文法可以使用LR分析技术,那么它的SDT可以在LL语法分析

过程中实现

B. 如果一个S-SDD的基本文法可以使用LR分析技术,那么它的SDT可以在LR语法分析

过程中实现

C. 如果一个L-SDD的基本文法可以使用LL分析技术,那么它的SDT可以在LL语法分析

过程中实现

D. 如果一个L-SDD的基本文法可以使用LL分析技术,那么它的SDT可以在LR语法分析

过程中实现

 

3 以下说法不正确的是( )

A. 使用语法制导翻译方案的编译程序能同时进行语法分析和语义分析

B. 语法制导翻译方案( SDT )是在产生式右部中嵌入了程序片段( 称为语义动作)CFG

C. SDD可以看作是SDT的具体实施方案

D. 将一个S-SDD转换为SDT的方法是:将每个语义动作都放在产生式的最后

 

4 在非递归的预测分析过程中进行翻译,以下说法不正确的是( )

A. 要想在非递归的预测分析过程中进行翻译,需要扩展语法分析栈

B. 非终结符A的继承属性和综合属性的计算时机不同

C. 将非终结符A的继承属性和综合属性存放在不同的记录中

D. 综合属性在A出现之前就可以计算

 

5 在非递归的预测分析过程中进行翻译,以下说法不正确的是( )

A. 要想在非递归的预测分析过程中进行翻译,需要扩展语法分析栈

B. 综合记录用于存放非终结符综合属性值

C. 动作记录,用来存放指向将被执行的语义动作代码的指针

D. 综合属性存放在A本身的记录中

 

6 在非递归的预测分析过程中进行翻译,以下说法不正确的是( )

A. 分析栈中的每一个记录都对应着一段执行代码

B. 综合记录出栈时,要将综合属性值复制给后面特定的语义动作

C. 变量展开时( 即变量本身的记录出栈时),如果其含有继承属性,则要将继承属性值

复制给后面特定的语义动作

D. 继承属性在A的儿子们都分析完毕之后才能计算

 

 语法制导翻译_3


1 在递归的预测分析过程中进行翻译,以下说法不正确的是( )

A. 可以将一个递归的预测分析器扩展为一个翻译器

B. 在语法分析器中,每个非终结符A对应一个过程,在做语义分析时,要将过程扩展成

一个函数

C. 以继承属性作为函数的参数,以综合属性作为函数的返回值

D. 以综合属性作为函数的参数,以继承属性作为函数的返回值

 

2 在递归的预测分析过程中进行翻译,以下说法不正确的是( )

A. 在语法分析器中,每个非终结符A对应一个过程,在做语义分析时,要将过程扩展成

一个函数

B. 对出现在A产生式右部中的每个文法符号的每个属性都设置一个局部变量

C. 如果非终结符含有继承属性,需要将函数调用的返回值赋给相应的局部变量

D. 对于产生式右部的每个动作,将其代码复制到语法分析器,并把对属性的引用改为对

相应变量的引用

 

3 以下说法不正确的是( )

A. 语法制导翻译方案只限自底向上的分析方法

B. 给定一个以LL文法为基础的L-SDD,可以修改这个文法,并在LR语法分析过程中计

算这个新文法之上的SDD

C. 对于这个内嵌的语义动作,向文法中引入一个标记非终结符M来替换它

D. 每个标记非终结符M对应着一个空产生式M→ ε,该产生式对应着一段语义子程序,

它的任务就是完成M所替换的那个语义动作要完成的工作

 

4 给定一个以LL文法为基础的L-属性定义,可以修改这个文法,并在LR语法分析过程中计算这个新

文法之上的SDD

A.

B. 错

 

5 在各个非终结符之前放置语义动作来计算它的继承属性, 并在产生式后端放置语义动作计算综合属性。

A.

B. 错

 

6 在各个非终结符之前放置语义动作来计算它的综合属性, 并在产生式后端放置语义动作计算继承属性。

A. 对

B.

 

7 对每个内嵌的语义动作,向文法中引入一个标记非终结符来替换它。每个这样的位置都有一个不

同的标记,并且对于任意一个标记M都有一个产生式M→ε

A.

B. 错