📜  门| GATE CS 2019 |第 45 题

📅  最后修改于: 2021-09-27 05:55:00             🧑  作者: Mango

考虑以下语法和语义操作以支持继承的类型声明属性。设 X 1 、X 2 、X 3 、X 4 、X 5和 X 6为下表中非终结符 D、T、L 或 L 1的占位符: 以下哪一项是 X 1 、X 2 、X 3和 X 4的合适选择?

(A) X 1 = L, X 2 = T, X 3 = L 1 , X 4 = L
(B) X 1 = L, X 2 = L, X 3 = L 1 , X 4 = T
(C) X 1 = T, X 2 = L, X 3 = L 1 , X 4 = T
(D) X 1 = T,X 2 = L,X 3 = T,X 4 = L 1答案:(一)
解释:根据继承属性定义,如果解析树节点的属性值是由其父节点和兄弟节点的属性值确定的,则该属性被继承。

因此,语义规则应如下所示:

D → TL {L.idtype = T.stype}
T → int {T.stype = int}
T → float {T.stype = float}
L → L1, id {L1.itype = L.itype}
           addtype(id.entry, L.itype)
L → id addtype(id.entry, L.itype) 

选项(A)是正确的。
这个问题的测验