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.继承
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的儿子们都分析完毕之后才能计算
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. 错