【编译原理笔记09】语法制导翻译:语法制导翻译方案,在非递归的预测分析过程中进行翻译

您所在的位置:网站首页 下列翻译 【编译原理笔记09】语法制导翻译:语法制导翻译方案,在非递归的预测分析过程中进行翻译

【编译原理笔记09】语法制导翻译:语法制导翻译方案,在非递归的预测分析过程中进行翻译

2024-07-12 04:09| 来源: 网络整理| 查看: 265

本次笔记内容: 5-5 语法制导翻译方案 5-6 在非递归的预测分析过程中进行翻译

本节课幻灯片,见于我的 GitHub 仓库:第9讲 语法制导翻译_2

文章目录 语法制导翻译方案 语法制导翻译方案 SDT 将S-SDD转换为SDT S-属性定义的SDT 实现 扩展的LR语法分析栈 将语义动作中的抽象定义式改写成具体可执行的栈操作 例:在自底向上语法分析栈中实现桌面计算器 将L-SDD转换为SDT L-属性定义的SDT 实现 在非递归的预测分析过程中进行翻译 扩展语法分析栈 分析栈中的每一个记录都对应着一段执行代码

语法制导翻译方案 语法制导翻译方案 SDT

语法制导翻译方案 (SDT) 是在产生式右部中嵌入了程序片段(称为语义动作)的CFG。

如上,大括号括起的部分就是一些语义动作。

SDT可以看作是SDD的具体实施方案。

本节主要关注如何使用SDT来实现两类重要的SDD,因为在这两种情况下,SDT可在语法分析过程中实现:

基本文法可以使用LR分析技术,且SDD是S属性的 基本文法可以使用LL分析技术,且SDD是L属性的 将S-SDD转换为SDT

将一个S-SDD转换为SDT的方法:将每个语义动作都放在产生式的最后。

S-属性定义的SDT 实现

如果一个S-SDD的基本文法可以使用LR分析技术,那么它的SDT可以在LR语法分析过程中实现。

如上,只有当归约时,才执行相应的语义动作。

扩展的LR语法分析栈

如果一个属性值的大小没有限制,最好将其存在栈外,在栈内存指针。

将语义动作中的抽象定义式改写成具体可执行的栈操作

如上,A的综合属性由其子节点X,Y,Z来定义的。左边为归约前分析栈的格局。

归约后,X、Y、Z出栈,A入栈。

例:在自底向上语法分析栈中实现桌面计算器

如上,语义动作中的抽象定义式,已经被改写成了具体的栈操作。没有给出符号栈和状态栈对



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3