属性文法
来源:互联网 发布:linux下怎么查找文件 编辑:程序博客网 时间:2024/05/01 08:09
利用L属性文法自上向下分析,输出四元式的翻译模式:
S->id=E {gen('=',E.place,__,entry(id))}
E->T {R.i = T.place}
R {E.place = R.s}
R->+
T {R1.i= newtemp; gen('+',R.i,T.place,R1.i)}
R1 {R.s =R1.s}
R->@(空串)
{R.s =R.i}
T->F {P.i = F.place}
P {T.place =P.s}
P->*
F {P1.i =newtemp;gen('*',P.i,F.place,P1.i)}
P1 {P.s =P1.s }
P->@ {P.s =P.i}
F->(E) {F.place =E.place}
F->id {F.place = entry(id)}
非终结符R和P的继承属性i用于自上而下传递信息。
根据该翻译模式很容易写出相应的递归下降分析程序,从而实现输出四元式的目的。
for example:
input :a = a+b*(c+d)/f-g/(a+b)/d-g*d*f/g-h;
output:
0: + c d T1
1: * b T1 T2
2: / T2 f T3
3: + a T3 T4
4: + a b T5
5: / g T5 T6
6: / T6 d T7
7: - T4 T7 T8
8: * g d T9
9: * T9 f T10
10: / T10 g T11
11: - T8 T11 T12
12: - T12 h T13
13: = T13 __ a
1: * b T1 T2
2: / T2 f T3
3: + a T3 T4
4: + a b T5
5: / g T5 T6
6: / T6 d T7
7: - T4 T7 T8
8: * g d T9
9: * T9 f T10
10: / T10 g T11
11: - T8 T11 T12
12: - T12 h T13
13: = T13 __ a
- 属性文法
- 属性文法
- 语义分析之一:属性文法
- 文法
- 文法
- 属性文法与中间代码生成
- 【编译原理】语法制导翻译之属性文法(一)
- 编译原理结构框架6语法制导翻译与属性文法
- 乔姆斯基文法
- 乔姆斯基文法
- 简单文法
- 文法分析
- 文法例题
- 文法分析
- SNL文法
- 文法相关
- C++文法
- 文法分类
- rpm包安装之灵异事件
- 回顾2007
- 语音和视频的相关代码(c++builder完整源代码)
- ORACLE下把查询的结果以xml输出
- Maemo Linux手机平台系列分析:12 分析其Platform后,再回头整体看看Maemo
- 属性文法
- Spring获取Bean的几种方式
- C++语言中的内联函数(inline)
- ADempiere Project
- AspNetPager 翻页空间缺少对象的解决方案
- OBJECT_ID(N"表名")疑问(转载)
- Grails 入门: 构建您的第一个 Grails 应用程序
- UltraEdit32 13.20版本注册号
- 英语学习口诀大全be 的用法口诀