




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章属性文法和语法制导翻译 6 1属性文法6 2基于属性文法的处理方法6 3S 属性文法的自下而上计算6 4L 属性文法和自顶向下翻译6 5自下而上计算继承属性 6 2基于属性文法的处理方法 6 2 1依赖图6 2 2树遍历的属性计算方法6 2 3一遍扫描的处理方法6 2 4抽象语法树 语法制导翻译法 syntax directedtranslation 由源程序的语法结构驱动翻译过程 输入串 语法树 依赖图 语义规则计算次序 图6 3语法制导翻译概观 描述一棵语法树中结点的属性之间的相互依赖关系 也可在语法分析的同时完成语义规则的计算 一遍扫描 语义规则的形式b f c1 c2 ck 可以为每一个包含过程调用的语义规则引入一个虚综合属性b 依赖图中为每一个属性设置一个结点 如果属性b依赖于属性c 则从属性c的结点有一条有向边连到属性b的结点 6 2 1依赖图 b c1 ck for语法树中每一结点ndofor结点n的文法符号的每一个属性ado为a在依赖图中建立一个结点 for语法树中每一个结点ndofor结点n所用产生式对应的每一个语义规则b f c1 c2 ck dofori 1tokdo从ci结点到b结点构造一条有向边 依赖图的构造步骤 val val val 虚线表示语法树 实线表示依赖图 realid1 id2 id3的语法分析树的依赖图 D real T id3 L L L id2 id1 1entry 10 2entry 3entry in9 8 in7 6 in5 4type 图6 5图6 2中语法分析树的依赖图 虚结点 属性的计算次序 一个依赖图的任何拓扑排序都给出一个语法树中结点的语义规则计算的有效顺序 例6 5在 图6 5的依赖图中 依赖图的一个拓扑排序可以从低序号到高序号顺序写出 用an来代表依赖图中与序号n的结点有关的属性 a4 real a5 a4 addtype id3 entry a5 a7 a5 addtype id2 entry a7 a9 a7 addtype id1 entry a9 6 2 2树遍历的属性计算方法 以某种次序遍历语法树 直至计算出所有属性 最常用的遍历方法是深度优先 从左到右的遍历方法 如果需要的话 可使用多次遍历 下面算法可对任何无循环的属性文法进行计算 While还有未被计算的属性doVisitNode S S是开始符号 procedureVisitNode N Node beginifN VNthen 假设它的产生式为N X1X2 Xm fori 1tomdoifXi VNthen 即Xi是非终结符 begin计算Xi的所有能够计算的继承属性 VisitNode Xi end 计算N的所有能够计算的综合属性end a 初始状态 b VisitNode S 第一次调用后 c VisitNode S 第二次调用后 d VisitNode S 第三次调用后的最终状态 初值S a 0 输入串xyz的语法树如下 例6 6 S有继承属性a 综合属性bX有继承属性c 综合属性dY有继承属性e 综合属性fZ有继承属性h 综合属性g h 0 g 1 c 1 d 2 e 0 f 0 b 0 6 2 3一遍扫描的处理方法 一遍扫描的处理方法 在语法分析的同时计算属性值 而不是语法分析构造语法树之后进行属性的计算 而且无需构造实际的语法树 如果采用一遍扫描的编译程序模型 语法制导翻译就是为文法中每个产生式配上一组语义规则 并且在语法分析的同时执行这些语义规则 一遍扫描处理方法与两个因素有关语法分析方法属性的计算次序在什么时候计算一个产生式的语义规则在自上而下分析中 当一个产生式匹配输入串成功在自下而上分析中 当一个产生式被用于进行归约时L 属性文法可用于一遍扫描的自上而下分析S 属性文法适合于一遍扫描的自下而上分析 6 2 4抽象语法树 在抽象语法树中 操作符和关键字都不作为叶结点出现 而是把它们作为内部结点 S ifBthenS1elseS2 抽象语法树 语法分析树 语法制导翻译可以基于语法分析树 也可以基于抽象语法树 a b c b c 抽象语法树 语法分析树 如何建立表达式的抽象语法树 抽象语法树中的每一个结点可以由包含几个域的记录来实现的 运算符号 结点标号 运算分量的指针 标识符在符号表中的入口 用一些函数来建立表达式的抽象语法树中的结点 1 mknode op left right 建立一个运算符号结点 标号是op 两个域left和right分别指向左子树和右子树 2 mkleaf id entry 建立一个标识符结点 标号为id 一个域entry指向标识符在符号表中的入口 3 mkleaf num val 建立一个数结点 标号为num 一个域val用于存放数的值 每一个函数都返回一个指向新建立结点的指针 toentryfora toentryforc 图6 7a 4 c的抽象语法树 建立表达式a 4 c的抽象语法树 1 P1 mkleaf id entrya 2 P2 mkleaf num 4 3 P3 mknode P1 P2 4 P4 mkleaf id entryc 5 P5 mknode P3 P4 P1 P2 P3 P4 P5 建立抽象语法树的语义规则 表6 4为表达式建立抽象语法树的属性文法 nptr 函数调用返回的指针 虚线 带注释的语法分析树
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网站服务协议
- 2025年安全生产安全员安全培训题及答案
- 2025年机械设计制造自动化专业模拟题及解析
- 机电运输理论知识培训课件
- 2025年教育品质检验师专业素质考核试卷及答案解析
- 2025年建筑装饰设计师技能等级认证考核试卷及答案解析
- 2025年建筑房屋维修员执业资格考试试题及答案解析
- 2025年家具设计师职业技能等级考试试题及答案解析
- 2025年环境影响评价工程师专业技能测评试题及答案解析
- 课件与导学案模式
- 2025年学历类自考专业(学前教育)学前儿童发展-学前教育原理参考题库含答案解析(5套)
- 日本设备销售合同范本
- (2024)大学生宪法知识竞赛题库及答案
- 2025年芜湖市鸠江区医院招聘16名工作人员笔试参考题库附答案解析
- T-CBDA 86-2025 建筑幕墙、采光顶及金属屋面工程质量验收标准
- 厨房消防安全培训
- 小陈 税务风险应对常见指标与答复思路
- 2025云南昭通昭阳区住房和城乡建设局招聘编外工作人员5人笔试备考题库及答案解析
- 2025年《中华人民共和国档案法》知识培训试题及答案
- 新高一数学暑假检测卷(学生版)-2025年新高一数学暑假衔接讲练 (人教A版)
- 2025至2030年中国建筑膜行业市场调查研究及发展趋势预测报告
评论
0/150
提交评论