1)(4分)为下列变量声明语句文法设计一个SDD,为标识符id确定数据类型,并将数据类型 填入其对应符号表项中(调用过程addType)。 D→TV V→id,V|id T→ float (2)(4分)修改文法如下,再为其设计一个只有综合属性的SDD,完成相同的语义分析(同样 调用过程addType填写符号表)。 D→V id V→V id, V→T T→ float (3)(4分)分别利用(1)(2)的SDD对句子float a,b,c进行语义分析,画出对应的注释语法分析树 和依赖图。
时间: 2023-06-18 19:07:18 浏览: 63
(1) SDD:
D → T{addType(T.type)} V{id.type=T.type; addType(id.type)}
V → id{id.type=lookupType(id.name)}
| V{id.type=V1.type} , id{id.type=lookupType(id.name)}
T → float{T.type=float}
(2) SDD:
D → V{id.type=lookupType(id.name)}
id{id.type=V.type; addType(id.type)}
V → V{id.type=V1.type} , id{id.type=lookupType(id.name)}
| T{V.type=T.type}
T → float{T.type=float; addType(float)}
(3) 对句子float a,b,c进行语义分析的注释语法分析树和依赖图如下:
注释语法分析树:
![image.png](attachment:image.png)
依赖图:
![image-2.png](attachment:image-2.png)
相关问题
为下列变量声明语句文法设计一个SDD,为标识符id确定数据类型,并将数据类型填入其对应符号表项中(调用过程addType)。 D→TV V→id,V| id T→float
为了实现该SDD,需要在语法树的每个D节点上执行以下操作:
1. 在子节点V上执行SDD,获取标识符id的名称。
2. 将标识符id的类型设置为T中指定的类型(即float)。
3. 调用过程addType,将标识符id及其类型添加到符号表中。
因此,SDD的规则如下所示:
D → TV {
// 获取类型T
T.type = float;
// 获取变量名id
string idName = V.name;
// 将变量类型添加到符号表中
addType(idName, T.type);
}
V → id {
// 返回标识符名称
$$ = id.name;
}
V → V1 | id {
// 返回标识符名称
$$ = id.name;
}
T → float {
// 设置类型为float
$$ = float;
}
5、再添加一块磁盘/dev/sdd。划分为4个主分区。
好的,以下是在 Linux 系统下添加磁盘并进行分区的具体步骤:
1. 首先,确认磁盘已经连接到系统上,可以使用以下命令查看:
```
sudo fdisk -l
```
如果磁盘未显示,需要检查连接线是否正常,以及磁盘电源是否打开。
2. 然后,使用以下命令进入磁盘分区工具:
```
sudo fdisk /dev/sdd
```
3. 在 fdisk 工具下,使用以下命令创建分区:
```
n # 创建新分区
p # 创建主分区
1 # 分区号,第一个主分区
(默认) # 起始扇区,从第一个可用扇区开始
+5G # 分区大小,这里设置为5GB
n # 创建新分区
p # 创建主分区
2 # 分区号,第二个主分区
(默认) # 起始扇区,从第一个可用扇区开始
+10G # 分区大小,这里设置为10GB
n # 创建新分区
p # 创建主分区
3 # 分区号,第三个主分区
(默认) # 起始扇区,从第一个可用扇区开始
+15G # 分区大小,这里设置为15GB
n # 创建新分区
p # 创建主分区
4 # 分区号,第四个主分区
(默认) # 起始扇区,从第一个可用扇区开始
(默认) # 结束扇区,使用默认值,即使用整个剩余磁盘空间
```
4. 使用以下命令保存并退出 fdisk 工具:
```
w
```
5. 格式化分区,例如,格式化第一个主分区:
```
sudo mkfs.ext4 /dev/sdd1
```
格式化其他分区的命令与此类似。
现在,您已经成功地将磁盘 /dev/sdd 进行了分区,并且创建了4个主分区。