语法制导翻译习题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
C
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
B
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
B
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
D
5
使用( )可以定义一个程序的意义。
-
A.
语义规则
-
B.
词法规则
-
C.
产生规则
-
D.
词法规则
A
6
以下说法正确的是( )。
-
A.
语义规则中的属性有两种:综合属性与继承属性
-
B.
终结符只有继承属性,它由词法分析器提供
-
C.
非终结符可以有综合属性,但不能有继承属性
-
D.
属性值在分析过程中可以进行计算,但不能传递
A
语法制导翻译习题2
关于将L-SDD转换为SDT的规则,以下选项中,正确的是( )。
-
A.
将计算某个非终结符号A的继承属性的动作放在产生式的最后
-
B.
将计算一个产生式左部符号的继承属性的动作放置在产生式的最后
-
C.
将计算某个非终结符号A的继承属性的动作插入到产生式右部中紧靠在A的本次出现之前的位置上
-
D.
将每个语义动作都放在产生式的最后
以下说法不正确的是( )。
-
A.
如果一个S-SDD的基本文法可以使用LR分析技术,那么它的SDT可以在LL语法分析过程中实现
-
B.
如果一个S-SDD的基本文法可以使用LR分析技术,那么它的SDT可以在LR语法分析过程中实现
-
C.
如果一个L-SDD的基本文法可以使用LL分析技术,那么它的SDT可以在LL语法分析过程中实现
-
D.
如果一个L-SDD的基本文法可以使用LL分析技术,那么它的SDT可以在LR语法分析过程中实现
以下说法不正确的是( )。
-
A.
使用语法制导翻译方案的编译程序能同时进行语法分析和语义分析
-
B.
语法制导翻译方案( SDT )是在产生式右部中嵌入了程序片段( 称为语义动作)的CFG
-
C.
SDD可以看作是SDT的具体实施方案
-
D.
将一个S-SDD转换为SDT的方法是:将每个语义动作都放在产生式的最后
在非递归的预测分析过程中进行翻译,以下说法不正确的是( )。
-
A.
要想在非递归的预测分析过程中进行翻译,需要扩展语法分析栈
-
B.
非终结符A的继承属性和综合属性的计算时机不同
-
C.
将非终结符A的继承属性和综合属性存放在不同的记录中
-
D.
综合属性在A出现之前就可以计算
在非递归的预测分析过程中进行翻译,以下说法不正确的是( )。
-
A.
要想在非递归的预测分析过程中进行翻译,需要扩展语法分析栈
-
B.
综合记录用于存放非终结符综合属性值
-
C.
动作记录,用来存放指向将被执行的语义动作代码的指针
-
D.
综合属性存放在A本身的记录中
在非递归的预测分析过程中进行翻译,以下说法不正确的是( )。
-
A.
分析栈中的每一个记录都对应着一段执行代码
-
B.
综合记录出栈时,要将综合属性值复制给后面特定的语义动作
-
C.
变量展开时( 即变量本身的记录出栈时),如果其含有继承属性,则要将继承属性值复制给后面特定的语义动作
-
D.
继承属性在A的儿子们都分析完毕之后才能计算