首页 > 试题广场 >

针对以下文法 G3 ,写一个翻译方案,输出所接受的二进制串的

[问答题]
针对以下文法 G3 ,写一个翻译方案,输出所接受的二进制串的十进制值。
当输入串为空时,则输出的值为 0。如需要,可添加新的开始符号 S 及产生式 S →D ,但不得修改其他产生式。 D 是开始符号。
D → 注:此为空产生式!
D → 0 D D → 1 E
E → 0 F E → 1 D
F → 0 E F → 1 F
为 为 D 、E 和 和 F 引入继承属性 i ,表示 (在读新串前) 已读入二进制串的值;
引入综合属性 s ,表示 (读入新串后)所有读入的 二进制串的值
翻译方案如下:
S → { D.i := 0; } D {print(D.s);}
D → { D.s := D.i; } 注:此为空产生式!
D → 0 {D 1 .i := D.i * 2; } D 1 {D.s := D 1 .s;}
D → 1 {E.i := D.i * 2 + 1;} E {D.s := E.s;}
E → 0 {F.i := E.i * 2; } F {E.s := F.s;}
E → 1 {D.i := E.i * 2 + 1;} D {E.s := D.s;}
F → 0 {E.i := F.i * 2; } E {F.s := E.s;}
F → 1 {F 1 .i := F.i * 2 + 1;} F 1 {F.s := F 1 .s;}
发表于 2017-05-02 13:01:40 回复(0)