语法制导翻译_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 使用( )