CH6.属性文法语法制导翻译 《程序设计语言编译原理》 陈火旺等编著 2000年第3版

Slides:



Advertisements
Similar presentations
1 基北區 103 學年度免試入學志願選填、 超額比序項目、共同就學區規劃說明 臺北市政府教育局 新北市政府教育局 基隆市政府教育處.
Advertisements

1 人事資料考核作業待遇資料報送說明. 2 待遇資料報送情形 ( 一 ) 非主管機關成績:機關人數報送率 機關已報送現職人數 / 機關應報送數* 100% ( 二 ) 主管機關成績分二部份:報送情形、線上抽查 1. 報送情形 (1) 人數報送率=主管機關及其所屬機關人數報送率總和/機關數 (2) 機關報送率=已報送機關數/應報送機關數*
组长:倪运超 小组成员:徐悦、曹吕卿、孙浩、徐圣尧.  上海的历史 上海的历史  上海的历史 上海的历史  上海的文化 —— 建筑 上海的文化 —— 建筑  上海的文化 —— 美食 上海的文化 —— 美食  香港的历史 香港的历史  香港的历史 香港的历史  香港的文化 —— 建筑 香港的文化.
一、 突出解析几何复习中的重点问题的通法通解 解析几何中的重点问题 一、 突出解析几何复习中的重点问题的通法通解 直线与圆锥曲线的位置关系 重点一.
全民國防教育宣導 暨國防教育影片欣賞與討論.
德 国 鼓 励 生 育 的 宣 传 画.
第四章:长期股权投资 长期股权投资效果 1、控制:50%以上 有权决定对方财务和经营.
關於「中華民國國民健保卡」 (健保 IC 卡內容)
第十三章 中国的传统科学技术 中国古代的科技曾经长期处于世界领先地位,对人类文明的进步作出过重要贡献,并形成了富有特色的科技文化。在今天,源自中国古代科技文化的中医学仍然在现实生活中发挥着积极的作用。
人生格言: 天道酬勤 学院:自动化与电气工程学院 班级: 自师1201 姓名:刘 威.
第6章 应收应付款管理.
第二章 遺傳 2‧4 突變.
民國88年至99年期間,下列何種空氣品質指標污染物有逐年升高的趨勢?
高考地理复习应注意的问题 构建知识网络 培养读图技能 掌握答题规律.
第七章 认识大洲 第一讲 亚洲及欧洲.
第五章 语法制导的翻译 赵建华 南京大学计算机系 2010年3月.
江苏省2008年普通高校 招生录取办法 常熟理工学院学生处
主要内容 1. 利用估值对债券组合估价的优势 2. 如何评估债券估值的合理性 3. 产业债的定价与估值.
物理3-5选修模块.
第23课 美术的辉煌 米勒:《拾穗者》(法国).
9 有理数的乘方.
国王赏麦的故事.
不会宽容人的人, 是不配受到别人的宽容的。 贝尔奈.
复习回顾 a a×a a×a×a a a×a×a= a×a= 1.如图,边长为a厘米的正方形的面积 为 平方厘米。
2011年广西高考政治质量分析 广西师范大学附属外国语学校 蒋 楠.
第一单元 生活与消费 目 录 课时1 神奇的货币  课时2 多变的价格 课时3 多彩的消费.
雄伟的金字塔.
知识回顾 1、通过仔细观察酒精灯的火焰,你可以发现火焰可以分为 、 、 。 外焰 内焰 焰心 外焰 2、温度最高的是 。
中華民國空軍34中隊進行夜間偵察任務情形與畫伏夜出的蝙蝠相同,因此以「蝙蝠中隊」命名,而所屬偵察機均漆成黑色,而又稱作「黑蝙蝠」。隊徽是一隻展翅的黑蝙蝠,在北斗七星上飛翔於深藍的夜空中,翅膀穿透外圍的紅圈,象徵潛入赤色鐵幕。
唐五代兩宋詞 方舟p.69.
歌仔戲 與 歌舞伎 4a 張淇惠 4a11b025 許巧嬑 4a 倪曼凌 4a1c0004 楊長梵
岳阳市教学竞赛课件 勾股定理 授课者 赵真金.
请同学们思考下列问题:.
小儿营养不良 第四篇第二章第二节小儿营养不良.
1 实验目的 观察单缝夫琅和费衍射现象,加深对夫琅和费衍射理论的理解。
2016年莱芜市乡村医生在岗培训 启动会.
命题与四种命题 高二数学 选修2-1 第一章 常用逻辑用语.
单元 SD 5 菜鸟学飞 附件二 想学飞的职场菜鸟.
面向海洋的开放地区——珠江三角洲 山东省高青县实验中学:郑宝田.
第五章 电流和电路 制作人 魏海军
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
阪神大地震 四服一A黃婕媺 四服一A游雅鈞.
第1节 光的干涉 (第2课时).
勾股定理 说课人:钱丹.
开 学 第 一 课 六年级3班.
证券投资基金 投资121 06号余煜欢 09号陈秋婷 33号陈柔韵 08号潘晓峰 10号曾杰 34号谭锐权.
狂賀!妝品系同學美容乙級通過 妝品系三甲 學號 姓名 AB 陳柔諺 AB 陳思妤 AB 張蔡婷安
2-2 比例線段與相似三角形 一.比例線段 二.相似三角形.
属性文法和语法制导翻译 授课:胡静.
如何寫工程計畫書 臺北市童軍會考驗委員會 高級考驗營 版.
人教版数学四年级(下) 乘法分配律 单击页面即可演示.
4.8 平行线 海南华侨中学 王应寿.
青眼究極龍 之 賓果連線 簡豪天、宋華敏製作.
第3章 组合逻辑电路.
乘法公式 (1) 乘法分配律 (2) 和的平方公式 (3) 差的平方公式 (4) 平方差公式.
苏 教 版 五 年 级 数 学(上) 用字母表示数 青阳体仁小学 胡春雅.
第十二讲 电路初探.
106年度 南科智慧製造產業聚落推動計畫 場域型計畫結案報告簡報格式 (簡報時請將此頁刪除).
第六章 语法制导的翻译 本章内容 介绍一种语义描述方法:语法制导的翻译,介绍语法制导的翻译的实现方法。
電子白板百萬小學堂 本活動建議搭配電子白板 學生最多可分成2~6組(請按組別按鈕) 老師可以視時間多少,來進行活動 每一組要回答十個問題。
颱風與防災 颱風知多少.
Welcome 实验:筷子提米.
第一部分 数字电路 第4章 组合逻辑电路 主讲教师:喻红.
线段 射线 直线.
9.1.2不等式的性质 周村实验中学 许伟伟.
美丽的旋转.
§12-5 同方向同频率两个简谐振动的合成 一. 同方向同频率的简谐振动的合成 1. 分振动 : 2. 合振动 : 解析法
單選題 1. 2. 3. 4. Q1:下列何者能作為商標樣式?
第十章 常用时序逻辑电路及其应用 10.1 寄存器 寄存器是数字系统常用的逻辑部件,它用来存放数码或指令等。它由触发器和门电路组成。一个触发器只能存放一位二进制数,存放 n 位二进制时,要 n个触发器。 按功能分 数码寄存器 移位寄存器.
第8章 语法制导翻译与中间代码生成.
Presentation transcript:

CH6.属性文法语法制导翻译 《程序设计语言编译原理》 陈火旺等编著 2000年第3版 程 序 设 计 语 言 编译原理参考答案 CH6.属性文法语法制导翻译 《程序设计语言编译原理》 陈火旺等编著 2000年第3版

CH.6.练习题1(P164.) 1.按照表6.1 (P137.)所示的属性文法, 构造表达式(4*7+1)*2的附注语法树。 L Eval=58 n 1.按照表6.1 (P137.)所示的属性文法, 构造表达式(4*7+1)*2的附注语法树。 Tval=58 Tval=29 * Fval=2 Fval=29 digitlexval=2 ( Eval=29 ) Eval=28 + Tval=1 Tval=28 Fval=1 Tval=4 * Fval=7 digitlexval=1 Fval=4 digitlexval=7 digitlexval=4

CH.6.练习题2(P164.) 2(1). 对表达式 ((a)+(b)) 按照表6.4 (P146.) E.nptr 2(1). 对表达式 ((a)+(b)) 按照表6.4 (P146.) 所示的属性文法, 构造该表达式的抽象语法树。 T.nptr ( E.nptr ) E.nptr T.nptr + T.nptr ( E.nptr ) ( E.nptr ) T.nptr T.nptr id + id id id to entry a to entry b

CH.6.练习题5(P164.) 5.下列文法对整型常数和实型常数施用加法运算符+生成表达式; 当两个整型数相加时, 结果仍为整型数, 否则结果为实型数: E→E+T|T T→num.num|num (1) 给出确定每个子表达式结果类型的属性文法。 解: 设置综合属性E.typt,T.type表示E和T的结果类型, 类型值分别用int和real表示整型和实型。 属性文法如下:

CH.6.练习题5(P164.) 解5. (1) 给出确定每个子表达式结果类型的属性文法(翻译模式)。 E→E1+T { if E1.type=int and T.type=int then E.type:=int else E.type:=real; } E→T { E.type:=T.type; } T→num.num { T.type:=real; } T→num { T.type:=int; }

CH.6.练习题7(P164.) 7. 下列文法由开始符号S产生一个二进制数, 令综合属性val给出该数的值, 试设计求S.val的属性文法, 其中, 已知B的综合属性c, 它给出由B产生的二进制位的结果值。例如, 输入101.101时, S.val=5.625, 其中第一个二进制位的值是4, 最后一个二进制位的值是0.125。。 S→L . L | L S 表示可带小数点的二进制 数串 L→LB | B L 表示二进制数串 B→0 | 1 B 表示二进制位

CH.6.练习题7(P164.) 解7: 题意是要求把二进制数串(可以带小数点)翻译为等值的十进制数值。 用综合属性S.val, L.val, B.c表示S, L和B的十进制值。 整数部分的转换规则是:从最高位开始往低位, 开始时val:=最高位值; 以后val:=val*2+下一位的值。 小数部分的转换规则是:从末位开始到十分位, 开始时val:=末位值; 以后val:=val/2+下一位值。 解法1 考虑结合自下而上的语法分析, 只使用综合属性, 可以改写文法。

CH.6.练习题7(P164.) 解法1. 属性文法,M表示小数部分的二进制数串: S→L . M S.val:=L.val+M.val S→L S.val:=L.val L→L1B L.val:=L1.val*2+B.c L→B L.val:=B.c B→0 B.c:=0 B→1 B.c:=1 M→AM1 M.val:=A.c+M1.val/2 M→A M.val:=A.c A→0 A.c:=0 A→1 A.c:=0.5

CH.6.练习题7(P164.) 解法1.二进制数串101.101的语法树及自下而上翻译过程,归约时执行语义规则。 S.v= 5.625 L.v= 5 . M.v= 0.625 L.v=2 B.c=1 A.c=0.5 M.v=0.25 L.v= 1 B.c=0 1 1 A.c=0 M.v=0.5 B.c=1 A.c= 0.5 1 1

CH.6.练习题7(P164.) 解法2. 综合属性S.val, L.val, B.c表示S, L和B的十进制值, 综合属性L.length计二进制数串的位数, 用L2.val/2L2.length得到小数部分的十进制值。属性文法: S→L1 . L2 S.val:=L1.val+L2.val /2L2.length S→L S.val:=L.val L→L1B L.val:=L1.val*2+B.c; L.length:=L1.length+1 L→B L.val:=B.c; L.length:=1 B→0 B.c:=0 B→1 B.c:=1

CH.6.练习题7(P164.) 解法2.二进制数串101.101的语法树及自下而上翻译过程,归约时执行语义规则。 S.v= 5.625(=5+5/8) L.v= 5 ; L.l=3 . L.v=5; L.l=3 L.v=2 ; L.l=2 B.c=1 L.v=2; L.l=2 B.c=1 L.v= 1 ; L.l=1 B.c=0 1 L.v=1; L.l=1 B.c=0 1 B.c=1 B.c=1 1 1

CH.6.练习题11(P165.) 11. 设下列文法生成变量的类型说明: 文法的句子如 a, b, c : integer 解(1). 翻译模式如下: D → id L { addtype(id.entry, L.type) } L → , id L1 { L.type:=L1.type addtype(id.entry, L.type) } L → :T { L.type:=T.type } T → integer { T.type:=int } T → real { T.type:=real }

CH.6.练习题(补充题) 设下列文法生成配对的圆括号: S → (L) S → a L → L , S L → S (1) 建立一个属性文法, 输出配对括号的个数, 例如符号串 (a,(a,a)) 将输出2; (2) 构造一个翻译模式, 打印每个a的嵌套深度, 例如符号串 ((a),a) 将打印2, 1。

CH.6.练习题(补充题) 解(1). 设综合属性S.n, L.n计配对括号的个数, 属性文法如下: S’ → S print( S.n) S → (L) S.n :=L.n+1 S → a S.n :=0 L → L1,S L.n :=L1.n+S.n L → S L.n :=S.n 符号串 (a,(a,a))的分析和翻译, 见图 ⑩ S.n=2 ⑨ ( L.n=1 ) ⑧ , S.n=1 L.n=0 ⑦ ② S.n=0 ( L.n=0 ) ⑥ ① L.n=0 , S.n=0 a ④ ⑤ S.n=0 a ③ a

CH.6.练习题(补充题) 符号串((a),a)的分析和翻译, 见图: S’ 解(2). 设继承属性S.d, L.d计a的嵌套深度, 遍历到a结点时打印S.d值, 翻译模式如下: S’ → { S.d :=0 } S S → ( { L.d :=S.d+1 } L ) S → a { print( S.d) } L → {L1.d :=L.d } L1 , { S.d :=L.d } S L → { S.d :=L.d } S {S.d=0} S ( {L.d=1} L ) {L1.d=1} L1 , {S.d=1} S a {pt(S.d=1)} {S.d=1} S ( {L.d=2} L ) {S.d=2} S a {pt(S.d=2)}