永发信息网

编译原理:令文法G为DL->DL;D;|D D->Tid T->int|real 写一个翻译模式,打印每个id的数据类型。

答案:1  悬赏:80  手机版
解决时间 2021-11-24 20:53
编译原理:令文法G为DL->DL;D;|D D->Tid T->int|real 写一个翻译模式,打印每个id的数据类型。
最佳答案
我来帮你解答,这是一个综合属性,其翻译方案比较简单,这样打印出来的 类似于int id1 int id2 int id3这样的形式。
DL->DL;D;
DL->D
D->T {print T.type} id {print id}
T->int {T.type =int}
T->real {T.type = real}追问用综合属性翻译。而且是打印id的类型,你上面的两个也没写、。追答不需要了,这样就可以完成你的要求了。你的语法属性传递只要一层就够了。打印的就是ID的类型啊。前一个print打类型,第2个print打ID名称。
你可以试一下,例如,int id1; real id2; int id3,构造一个语法树,把花括号里的内容当一个节点,遍历一遍,看看输出的是不是就是你要的。追问这样对吗?
DL->DL1;D; {addtype(DL1.type,D.type)}
DL->D {DL.type:=D.type}
D->Tid {D.type:=T.type}
T->int {T.type: =int}
T->real {T.type: = real}
print(id);追答不对。首先题目有没有要求你将id的属性加入符号表,如果有,才会有addtype,其次addtype不可能将非终结符的属性存入属性表,这样做没有意义。另外,你print (id)放在外面,没有放在花括号里,不符合翻译方案的要求。我给你的是正确的,你要仔细去理解一下翻译方案的含义。追问前两个产生式,不要写什么属性的传递吗?追答你需要用到DL和D传递属性吗?如果没有,就不用了。如果你想打印“;”可以在
DL->DL1;{print ';‘}D;{print ';'}这样,不过纯属美观。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我明天早上想坐汽车从陕西得商州到湖北的襄阳
元泰驾校(泉州丰泽)地址在什么地方,想过去办
为什么我的魅族MX4pro在把系统更新到Flymen4.
高一数学 函数fx=3x/(x-3),x∈[2,4]的
我要卖轮椅
萱萱字意是什么意思
如何正确操作阀门
99乘73和101乘62的简便方法怎么做
科技制作小发明简便材料少
中百随州购物中心停车场地址在哪,我要去那里
跪求 欧阳修的别滁 赏析
歌词里有从无人的巷口到繁华的街边是什么歌
吃面条打卤怎么做好吃
北美灰狼是不是可以秒杀任何一只鬣狗,鬣狗在
先收款,后开票的会计分录怎么做?
推荐资讯
晚上吃蕃石榴好吗。?
肯德基豆浆是怎么做的?听说的豆浆粉调整而成
磨床磨陶瓷变形怎么办 在线急求
2月下旬去马尔代夫度蜜月,选哪个岛好
现在骑行的车是什么牌子型号的的
手抽筋了怎么办
“外地生源应符合进京条件”中的进京条件指的
想买个MP4 请问下 纽曼A5 昂达VX777 和蓝魔V8
六寸生活照做什么动作
古人是怎么样把稻谷变成米的
一台2米高的标准型机柜里面的有几个风扇
旭瑞宾馆地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?