语法制导方法的组成
* 5 表达式的中间代码生成 简单表达式的LL(1)文法 (1)E →T Es (2)Es →? (3)Es →+ T Es (4)Es →- T Es (5)T → P Ts (6)Ts→? (7)Ts →* P Ts (8)Ts →/ P Ts (9)P →C (10)P →id (11)P →( E ) * 简单表达式的带有动作符的LL(1)文法 (1)E →TEs (2)Es →? (3)Es →+T#GenCode(+)#Es (4)Es →-T#GenCode(-)#Es (5)T → PTs (6)Ts→? (7)Ts →*P#GenCode(*)#Ts (8)Ts →/P#GenCode(/)#Ts (9)P →C#Push(C)# (10)P →id#Push(id)# (11)P →(E) 当遇到常量C和简单变量id时,把它们的语义信息压入语义栈; 当处理完一个运算符(+,-,*,/)的右分量时,该运算符的左、右运算分量已经分别存放在语义栈 Sem 的次栈顶和栈顶的位置,因此可以生成相应的运算符的四元式,并把运算结果的语义信息压入语义栈。 * 简单表达式的LL(1)分析表 C id ( ) + - * / # E 1 1 1 Es 2 3 4 2 T 5 5 5 Ts 6 6 6 7 8 6 P 9 10 11 产生式 Predict集 (1 ) E → T Es C, id , ( (2)Es → ? #, ) (3)Es → + T Es + (4)Es → - T Es - (5)T → P Ts C, id , ( (6)Ts→? #, ),+,- (7)Ts → * P Ts * (8)Ts → / P Ts / (9)P → C C (10)P → id Id (11)P → ( E ) ( * 分析栈S 输入流T 动作 # E x + y * z # LL[ E ,id ] = [1] # EsT x + y * z # LL [ T ,id ] = [5] # EsTs P x + y * z # LL [ P ,id ] = [10] # EsTs #Push ( id )# id x + y * z # Match # EsTs #Push ( id )# + y * z # #Push ( id )# # EsTs + y * z # 表达式 x + y * z 的中间代码生成过程(1) (1)E → T Es { C , id, ( } (2)Es →? { # , ) } (3)Es → + T # GenCode ( + ) # Es { + } (4)Es → - T # GenCode ( - ) # Es { - } (5)T → P Ts {C, id ,( } (6)Ts→? { #, ), +, - } (7)Ts → * P # GenCode ( * ) # Ts {* } (8)Ts → / P # GenCode ( / ) # Ts { / } (9)P → C # Push ( C ) # { C } (10)P → id # Push ( id ) # { id } (11)P → ( E ) { ( } 语义栈Sem intptr (x,level,off, dir) Top Top Type Form * 分析栈S 输入流T
您可能关注的文档
- 西门子PCS7在新钢干熄焦系统中的应用-软件.PDF
- 西部缺水矿区地下水库保水的库容研究-煤炭学报.PDF
- 西风漂流北大西洋暖流.PPT
- 观察澄清石灰水变化情况现象.PPT
- 西风与季风扰动对黑河流域降水影响的数值模拟-冰川冻土.PDF
- 视觉形象识别系统指引AmazonS3.PDF
- 视觉知识培训.PDF
- 视频图像处理技术.PDF
- 要求真情实感.PPT
- 解析版-有途高考.DOC
- 4-3.《激活组织的价值链管理机制》.pptx
- 24. 聚焦”一带一路“中的法律与实践V.docx
- 非居民企业股权重组的后顾之忧与破题之术 -.docx
- 从严监管加强合规——《关于药品领域的反垄断指南》深度解析-.docx
- 对日本半导体出口管制新规征求意见稿的思考.docx
- 从249个案例出发,聊聊电商刑事风险“六宗罪”.docx
- 4. 上市公司并购重组三大法律问题要点分析.docx
- 从ESG的前世今生看其价值与重大议题的选择.docx
- 北京互联网法院个人信息及数据纠纷典型案例解读 -.docx
- 《监察法》《监察法实施条例》修改专题(一):限制人身自由监察措施相关规定的理解与适用 -.docx
原创力文档

文档评论(0)