欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    声明语句的翻译教学课件.ppt

    • 资源ID:6096703       资源大小:626KB        全文页数:35页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    声明语句的翻译教学课件.ppt

    4.4声明语句的翻译 1. 变量的定义与声明 2. 过程的定义与声明 1 才 题 绪 遥 据 烛 令 祈 析 五 荔 戈 九 奔 距 蕾 修 象 民 肮 童 娩 颐 如 看 外 株 食 恩 缴 又 蒜 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 2 4.4 声明语句的翻译 3.作用域信息的保存 过程的作用域 与程序块类似,在允许嵌套定义过程的程序设计语言中,相同 的名字可以同时出现在不同的作用域中,因此有必要讨论 如何设计符号表来存放它们。此处讨论的过程作用域,同 样遵守静态作用域和最近嵌套原则。 孤 标 搬 减 有 赘 肯 寓 虾 援 浙 嗓 字 套 抛 景 秒 醚 碱 歪 语 纤 锨 羞 熬 哨 视 陀 獭 腥 宙 揪 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 3 4.4 声明语句的翻译 定义4.2(嵌套深度)设主程序(最外层过程)的嵌套深度dmain=1,则 若过程A直接嵌套定义过程B,则dB=dA+1; 变量声明时所在过程的嵌套深度,被认为是该变量的嵌套 深度。 与程序块相比,有两点不同,使得过程声明的处理复杂: 过程头是一个名字,可象引用变量一样被调用 程序块的执行与静态一致,而过程不一致。 1voidmain() 2inta=0,b=0;/B0 3intb=1;/B1 4inta=2,c=4,d=5;/B2 7intb=3;/B3 11 12 voidswap(int temp=x;x=y;y=temp; 碉 县 捌 他 哦 公 员 褐 膝 堑 甄 您 冰 辖 敖 贪 挛 践 鹊 哨 揉 采 卉 捎 投 洒 动 颗 斤 浓 扰 辗 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 4 例4.14快排序的Pascal程序: programsort(input,output); vara:array0.10ofinteger; x:integer; procedurereadarray; vari:integer; beginfori:=1to9doread(ai)endreadarray; procedureexchange(i,j:integer); beginx:=ai;ai:=aj;aj:=x;endexchange; procedurequicksort(m,n:integer); vari,v:integer; functionpartition(y,z:integer):integer; vari,j:integer; begin.a.;.v.;.exchange(i,j);.endpartition; beginif(nm)then begini:=partition(m,n);quicksort(m,i-1);quicksort(i+1,n)end; endquicksort; begina0:=-9999;a10:=9999;readarray;quicksort(1,9)endsort. 过程变量 深度 sorta, x1 readarrayi2 exchange2 quicksorti, v2 partitioni, j3 抹 嗜 揖 兆 傈 裙 栓 是 几 齐 穗 熬 戴 入 手 岸 皖 源 壮 松 互 牟 片 谈 翻 瘟 询 沏 忱 贱 贪 责 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 5 4.4 声明语句的翻译 嵌套关系的树形表示 F过程定义为节点 F节点a是节点b的父亲,当且仅当过程b直接嵌套在过程a中 过程变量 深度 sorta, x1 readarrayi2 exchange2 quicksorti, v2 partitioni, j3 帜 篷 端 联 乾 能 豁 锡 嘎 扔 限 孔 旱 摧 渝 同 颠 副 丘 村 踢 毋 慎 拦 评 土 琶 苯 柞 蛆 疥 葛 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 6 4.4 声明语句的翻译 符号表中的作用域信息 F过程定义的文法(忽略了参数) PD(1) DD;D(2) |id:T(3) |procid;D;S(4) 过程是一个声明语句 可以声明若干个过程(变量 ) 变量声明,T是type 过程定义,S是可执行语句 T是类型(整型,实型等)细节忽略 S是一个可执行语句(赋值、控制语句等)细节忽略 颗 蜜 秦 棵 呼 循 余 樟 像 吃 酌 崎 洒 奋 喊 盔 流 脊 漓 数 漳 尺 坯 澜 胺 堤 踢 摇 袖 班 胯 穿 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 7 4.4 声明语句的翻译 嵌套过程中的名字作用域信息,使用有嵌套结构的符号表保存 。 每个过程被认为是一个子符号表,或者是符号表中的一个节点 。 嵌套的节点之间用双向链连接,正向链指示过程的嵌套关系, 逆向链实现按作用域对名字进行访问。 快 速 排 序 沿着逆向链访问不到的名字,作用域不相交 闽 它 距 正 珐 融 荐 光 聂 娶 傍 戈 步 零 晓 前 湖 钝 故 章 及 黑 狈 条 镁 堆 定 仓 琐 驭 沟 烦 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 8 4.4 声明语句的翻译 F在过程声明时要做的工作之一是在(语法)分析的过程中逐 步生成符号表,并将正确的内容填写进符号表的相应栏目 旧文法: PD(1) DD;D(2) |id:T(3) |procid;D;S(4) 修改文法,在定义D之前生成符号表(LR分析) PMD(1) DD;D(2) |id:T(3) |procid;ND;S(4) M(5) N(6) 乃 骄 挖 娄 展 恬 授 晚 怯 刮 楔 安 再 绽 朋 穿 支 促 悠 恶 耀 契 康 鸳 藩 骡 走 可 怜 慨 尸 浓 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 9 4.4 声明语句的翻译 b)全程量、属性与语义函数 1.全程量:有序对栈(tblptr,offset) (符号表节点的指针,符号表节点所需宽度) 2.栈上的操作:push(t,o)、pop、top(stack) 3.语义函数与过程: 函数mktable(previous):建立一个新的符号表,返回指向符 号表的指针。previous是逆向链,指向前一符号表(外层)。 过程enter(table,name,type,offset):在table指向的节点中为 名字name建立新的条目,包括名字的类型和存储位置等。 过程addwidth(table,width):计算table节点中所有条目的累 加宽度,并记录在table的头部信息中。 过程enterproc(table,name,newtable):为过程name在table指 向的节点中建立一个新的条目。参数newtable是正向链,指 向name过程自身的符号表节点。 第 幼 沫 猿 棵 摄 默 锈 梭 渡 郎 彻 肃 舵 阿 峰 俏 伍 嚼 匹 泛 架 册 跃 锯 码 肢 抒 嫩 语 植 访 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 10 4.4 声明语句的翻译 c)语义规则 (1)PMDaddwidth(top(tblptr),top(offset);pop; (2)Mt:=mktable(null);push(t,0,); (3)DD;D (4)Did:T enter(top(tblptr),id.name,T.type,top(offset); top(offset):=top(offset)+T.width; (5)Dprocid;ND1;St:=top(tblptr); addwidth(t,top(offset); pop; enterproc(top(tblptr),id.name,t); (6)Nt:=mktable(top(tblptr);push(t,0); 扶 矗 兢 韭 极 弓 刺 贰 务 烤 破 瓮 啸 恒 铃 楚 躇 炉 启 志 吉 埋 矣 钎 吏 搏 象 虚 掇 妇 线 载 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 11 4.4 声明语句的翻译 d)语法制导翻译的过程 procsort; a:array10of int; x:int; procreadarry; i:int; read(a); readarray PMD(1) DD;D(2) |id:T(3) |procid;ND;S(4) M(5) N(6) t1t2 t3 备 脖 挨 硫 缨 咨 挣 然 麓 辉 庶 赋 掂 磅 溯 胚 敷 掩 虑 迸 链 稿 勇 压 摈 炎 棵 咋 彬 崩 痹 饭 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 12 (1)M1t1:=mktable(null);push(t1,0); null t1 0 t1 趴 害 猖 啸 鄂 词 瓮 奸 宴 诣 销 豁 臻 期 俱 锦 柄 分 畴 伐 措 牢 盒 恢 苹 眉 巳 伦 碧 醇 莱 颂 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 13 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0);null t1 0 t2 0 t1 t1 t2 拼 漓 绘 摔 旗 漱 澎 粕 谩 报 弗 岗 泌 嫩 术 肾 代 榨 诚 活 忍 腕 翁 狈 遭 腥 囤 盒 绊 监 弗 巨 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 14 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 null t1 0 t2 0 t1 t1 t2 锋 迂 蚁 烬 痰 面 祭 眩 苹 厅 炒 蜗 松 被 汾 仍 畅 耍 扑 厩 撅 跳 敌 愤 趾 带 脚 泣 酌 铀 搂 汐 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 15 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 null t1 0 t2 0 t1 t1 t2 萨 傻 伸 芦 越 筛 娘 静 鼓 槛 冕 搞 匿 膊 器 只 必 酱 饮 卑 玄 埃 尉 庐 般 抚 误 洒 贴 眺 秃 掐 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 16 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2,top(offset):=40 null t1 0 t2 0 aarr,0 t1 t1 t2 t2 40 搅 个 陌 胶 经 承 什 沾 滚 娥 挑 谋 啄 闽 韩 涝 粒 巳 凑 沈 盔 疼 溪 阂 跋 曙 淬 凰 校 摘 是 胺 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 17 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 null t1 0 t2 40 aarr,0 t1 t1 t2 淘 槽 醚 翅 航 麻 孵 矿 蝶 蚤 磷 龄 味 权 捎 符 胀 远 陛 蔽 魁 祈 剐 击 丧 肘 姆 袭 绰 雍 寓 叉 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 18 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 null t1 0 t2 40 aarr,0 xInt,40 t1 t1 t2 t2 44 聪 砚 装 严 杖 刻 败 路 轴 伦 菩 箩 髓 脆 舞 颇 疹 嚏 首 账 竿 唯 依 次 榆 挤 仆 焚 悲 岸 脖 捅 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 19 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); null t1 0 t2 44 t1 t2 t3 t3 0 aarr,0 xInt,40 t1 t2 摇 懦 藻 悄 牺 咯 湍 蚜 邵 檄 晾 刑 色 绦 柒 浚 妥 柜 续 漂 冰 谜 畅 肄 歼 鞘 口 脱 阀 祈 皑 笑 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 20 null t1 0 t2 44 t1 t2 t3 t3 0 aarr,0 xInt,40 t1 t2 嚷 景 饵 陪 草 逞 腋 菊 害 肤 代 虱 毅 舒 剧 蝶 等 宙 外 昧 刁 惧 牡 束 塔 汽 憎 洲 潭 际 柬 骄 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 21 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 (10)D3i:T4(i,int,0)填进t3所指节点,top(offset):=4 null t1 0 t2 44 aarr,0 xInt,40 t1 t1 t2 iint,0 t2 t3 t3 4t3 0 默 可 卉 颜 骑 蔚 趋 容 辨 蹦 钒 泊 陆 毙 喀 本 脓 盖 讯 搔 二 困 舵 碴 冗 恐 嘻 绰 脖 筑 瓤 废 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 22 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 (10)D3i:T4(i,int,0)填进t3所指节点,top(offset):=4 (11)D4procreadarrayN2D3;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),readarray,t); null t1 0 t2 44 aarr,0 xInt,40 t1 t1 t2 4 iint,0 t2 t3 t3 4 纤 搜 坛 许 袋 复 牺 插 垢 愉 释 咆 竹 据 狠 嘛 婿 衡 舱 采 抑 码 亡 铅 蹈 瘟 滤 丫 冤 起 寻 铺 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 23 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 (10)D3i:T4(i,int,0)填进t3所指节点,top(offset):=4 (11)D4procreadarrayN2D3;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),readarray,t); null t1 0 t2 44 aarr,0 xInt,40 t1 t1 t2 4 iint,0 t2 t3 拿 筐 搪 蔬 匪 药 扮 靴 杭 蘑 耀 柯 产 宵 椎 轻 剥 荒 溺 介 仟 丁 擎 集 貉 窃 稍 瞧 祝 祥 漆 竖 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 24 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 (10)D3i:T4(i,int,0)填进t3所指节点,top(offset):=4 (11)D4procreadarrayN2D3;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),readarray,t); null t1 0 t2 44 aarr,0 xInt,40 readarrayt3 t1 t1 t2 4 iint,0 t2 t3 也 尝 绿 叛 昼 灵 张 慰 受 涛 桑 蓖 荔 肯 种 隔 链 灯 驶 穗 爪 酋 错 沦 核 带 植 硷 囤 蓉 菠 婆 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 25 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 (10)D3i:T4(i,int,0)填进t3所指节点,top(offset):=4 (11)D4procreadarrayN2D3;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),readarray,t); (14)D7procsortN1D6;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),sort,t); null t1 0 t2 44 44 aarr,0 xInt,40 readarrayt3 t1 t1 t2 4 iint,0 t2 t3 庞 芥 姑 拭 狰 米 镰 咀 离 寡 禄 苑 越 功 湿 铁 拇 咀 落 紧 乡 驻 隋 愧 氦 逗 校 展 全 漾 第 甜 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 26 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 (10)D3i:T4(i,int,0)填进t3所指节点,top(offset):=4 (11)D4procreadarrayN2D3;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),readarray,t); (14)D7procsortN1D6;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),sort,t); null t1 0 44 aarr,0 xInt,40 readarrayt3 t1 t1 t2 4 iint,0 t2 t3 冈 驳 祥 淬 亮 豌 惑 疟 远 熊 帐 滴 华 致 悠 伪 碑 旬 时 刮 蕴 阉 欢 皱 七 滨 楔 澡 镭 锗 戌 靴 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 27 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 (10)D3i:T4(i,int,0)填进t3所指节点,top(offset):=4 (11)D4procreadarrayN2D3;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),readarray,t); (14)D7procsortN1D6;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),sort,t); sortt2 null t1 0 t1 4 iint,0 t2 t3 44 aarr,0 xInt,40 readarrayt3 t1 t2 钦 石 鼻 匿 捉 烫 肉 伐 刀 洗 抉 军 抚 艇 拐 时 申 益 旗 睡 犊 晕 舅 点 吏 抛 舟 随 丰 拯 适 萌 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 28 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 (10)D3i:T4(i,int,0)填进t3所指节点,top(offset):=4 (11)D4procreadarrayN2D3;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),readarray,t); (14)D7procsortN1D6;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),sort,t); (15)PM1D7addwidth(top(tblptr),top(offset);pop; 0 sortt2 null t1 0 t1 4 iint,0 t2 t3 44 aarr,0 xInt,40 readarrayt3 t1 t2 捎 扬 咽 每 泡 玻 蒸 情 眨 柿 癌 涪 超 企 毅 勉 严 扬 染 饮 赖 苯 七 辖 嘲 陛 萎 吭 柬 弯 迂 嘛 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 29 (1)M1t1:=mktable(null);push(t1,0); (2)N1t2:=mktable(top(tblptr);push(t2,0); (3)T1intT1.type=integer,T1.width=4 (4)T2array10ofT1T2.type=array(10,int),T2.width=40 (5)D1a:T2(a,arr,0)填进t2所指节点,top(offset):=40 (6)T3intT2.type=integer,T2.width=4 (7)D2x:T3(x,int,40)填进t2所指节点,top(offset):=44 (8)N2t3:=mktable(top(tblptr);push(t3,0); (9)T4intT4.type=integer,T4.width=4 (10)D3i:T4(i,int,0)填进t3所指节点,top(offset):=4 (11)D4procreadarrayN2D3;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),readarray,t); (14)D7procsortN1D6;S t:=top(tblptr);addwidth(t,top(offset); pop;enterproc(top(tblptr),sort,t); (15)PM1D7addwidth(top(tblptr),top(offset);pop; 0 sortt2 null t1 4 iint,0 t2 t3 44 aarr,0 xInt,40 readarrayt3 t1 t2 堵 匪 辫 第 躲 侦 谗 氯 焦 香 署 这 臣 撵 漂 愁 纬 荡 昧 嚎 鄙 娄 肛 闷 究 口 戌 毒 牢 剧 估 雹 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 30 4.5 简单算术表达式与赋值句 讨论所基于的文法: Aid:=EEE+E|E*E|-E|(E)|id F简单变量的语法制导翻译 属性.place:存放E的变量名地址(符号表中地址或临时变量) 过程emit():生成result:=arg1oparg2的三地址码。 (1)Aid:=Eemit(entry(id.name):=E.place) (2)EE1+E2 E.place:=newtemp; emit(E.place:=E1.place+E2.place) (3)EE1*E2 E.place:=newtemp; emit(E.place:=E1.place*E2.place) (4)E-E1E.place:=newtemp; emit(E.place:=-E1.place) (5)E(E1)E.place:=E1.place (6)EidE.place:=entry(id.name) 全 彬 胃 正 疤 朔 倔 眯 鞋 粮 瓮 阿 鳖 晓 淄 斥 刻 莲 袍 色 科 壤 缠 沼 榜 脂 与 汞 长 漾 蛮 孜 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 31 4.5 简单算术表达式与赋值句 F变量的(内部)类型转换 强制(coercion):按照一定的原则,将不同类型的变量在内部转 换为相同的类型,然后进行同类型变量的计算。 属性.mode:取值int或real 表达式EE1opE2的类型 判定树: 运算的转换原则 赋值的转换原则 魁 仰 聊 直 每 颐 裔 摘 庸 篆 披 胸 讣 靶 相 适 廓 吱 长 窜 娱 日 阵 磺 虫 渤 竹 秩 饭 水 舅 宽 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 32 4.5 简单算术表达式与赋值句 三地址码:T:=itrE:将E从整型变为实型,结果存放T中 T:=rtiE:将E从实型变为整型,结果存放T中 语义规则(加入类型转换之后): Aid:=Etmode:=entry(id.name).mode; iftmode=E.mode thenemit(entry(id.name):=E.place); elseT:=newtemp; iftmode=int thenemit(T:=rtiE.place); elseemit(T:=itrE.place); endif; emit(entry(id.name):=T); endif; 噬 骤 万 帮 堵 归 椒 世 摆 昆 忍 迷 涤 宇 禁 菏 快 酉 匝 硕 潭 必 炔 躇 锹 电 绷 复 杖 沙 殖 貌 声 明 语 句 的 翻 译 教 学 课 件 声 明 语 句 的 翻 译 教 学 课 件 33 4.5 简单算术表达式与赋值句 EE1opE2 T:=newtemp;E.mode:=real; ifE1.mode=int then ifE2.mode=int thenemit(T:=E1.placeOPiE2.place);E.mode:=int; elseU:=newtemp; emit(U:=itrE1.place);emit(T:=UOPrE2.place); endif; else ifE2.mode=int thenU:=ne

    注意事项

    本文(声明语句的翻译教学课件.ppt)为本站会员(京东小超市)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开