




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 PL 0 编译程序流程图编译程序流程图 2009 年 11 月 主程序 main N Y Y N 输入 pl 0 源程序文件名 打开源程序文件 正确 用户回答 是否列出虚拟机代码 是否列出符号表 打开输出文件 fa1 tmp 并输出源程序文件名 初始化 初始化目标代码指针 cx 为 0 ch 为 读入一个单词 打开文件 fa tmp fas tmp 设置分程序后跟符号集 nextlev 声明开始单词 语句开始单词 分程序处理 分程序处理出错 解释执行虚拟机代码 关闭文件并返回 关闭文件并返回 返回 2 解释程序 interpret lit opr 0 1 2 3 4 5 6 置栈顶指针 t 为 0 置数据段起始地址 b 为 0 置当前指令指针 p 为 0 置栈 s 的前三个单元为 0 取当前指令到 i 指令指针 p 指向下一条指令 指令 i 的功能码 将常量值 i a 入栈顶 s t 该运算指令的 a 域 过程调用结束返回调用点 释放被调用过程 占用的栈空间 指令指针指向返回地址 恢 复调用者数据段起始地址 栈顶 栈顶 次栈顶 栈顶 次栈顶 次栈顶 栈顶 次栈顶 次栈顶 栈顶 次栈顶 次栈顶 栈顶 次栈顶 栈顶为奇数 栈顶 3 8 9 10 11 12 13 14 15 16 lod sto cal 次栈顶 栈顶 次栈顶 次栈顶 栈顶 次栈顶 次栈顶 栈顶 次栈顶 次栈顶 栈顶 次栈顶 次栈顶0 根据静态链 取外层过 程的基址到 b1 l l 1 返回 b1 即 l 外层基址 6 分程序 block Y 常量说明部分处理 N N Y N Y N Y 本过程的初始化 置本过程变量分配的相对地址 dx 为 3 保存当前 符号表表尾指针 tx 到 tx0 即本层符号的开始位置 登记首条目标代码 JMP 0 0 的地址到符号表中该过程名的 adr 域 生成指令 jmp 0 0 当前单词是 const 读入下一个单词 登记常量名到符号表 当前单词是 读入下一个单词 登记常量名到符号表 当前单词是 读入下一个单词报错 当前单词是 标识符 7 变量说明部分处理 Y N N Y N Y N Y 当前单词是 var 读入下一个单词 登记变量名到符号表 当前单词是 读入下一个单词 登记变量名到符号表 当前单词是 报错读入下一个单词 当前单词是 标识符 8 过程说明部分处理 Y N N Y N Y Y N N Y Y N 当前单词是 procedure 读入下一个单词 单词是标识符 在符号表登记过程名字 读入下一个单词 报错 当前单词是 报错读入下一个单词 生成下一级分程序后跟符号集 本分程序后 跟符号集及 调用分程序 block 处理 层次加 1 Block 返回 1 返回 返回值 1 当前单词为 读入下一个单词 生成后跟符号集 nextlev 语句 开始单词 标识符 procedure 滤去过程说明部分非法的后跟单词 只允许 nextlev 的单词及本分程序 的后跟符号 报错 生成后跟符号集 nextlev 语句开 始单词 标识符 滤去非法后跟单词 只允许 nextlev 单词及声明开始单词 当前单词是声明 开始符号 9 语句处理 Y N 用当前目标指令地址 cx 对本过程的首条指令 jmp 0 0 的目标 地址回填 更正符号表本过程名的信息 入口地址为当前目标指令地 址 过程数据区大小为当前变量分配的相对地址 保存过程入口地址到 CX0 生成本过程的入口指令 分配数据区空间的指令 INT 0 a 要输出本过程符号表 从符号表 tx0 位置开始输出所 有常量名 变量名 过程名 生成语句的后跟符号集 nextlev 本分程序后跟符号集 end 语句处理 生成调用过程结束指令 OPR 0 0 置 nextlev 为空 过滤非法后跟单词 只允许本分程序的后跟符号 输出目标代码清单 返回 返回值 0 10 初始化 init 设置单字符符号 ssym 设置保留字名字 word begin call const do end if odd procedure read then var while write 设置保留字符号 wsym 放入保留字名字对应的编号 设置指令名称 mnemonic lit opr lod sto cal int jmp jpc 设置声明开始符号集 declbegsys const var procedure 设置语句开始符号集 statbegsys begin call if while 设置因子开始符号集 facbegsys 标识符 数字 结束 11 语句处理 statement Y 赋值语句处理 N N Y Y N N Y 当前单词是标识符 在符号表中查该标 识符 查到 该符号不是变量 读入下一单词 当前单词是 读入下一单词 将当前语句的后跟符号集作 为表达式的后跟符号集 处理赋值符号右边的表达式 生成保存栈顶结果的 目标指令 sto l a 报错 报错 报错 12 读入语句处理 Y N N Y N Y Y N Y N N Y 当前单词是 read 读入一个单词 当前单词是 读入一个单词 单词是标识符 报错 生成输入数据到栈顶 的输入指令 opr 0 16 生成保存栈顶值到输入 变量的指令 sto l a 读入下一单词 当前单词是 报错 在符号表查找该 单词 找不到 当前单词是 过滤输入单词直 到出现后跟符号 读入一个单词 13 输出语句处理 Y N Y N N Y 当前单词是 write 读入一个单词 读入一个单词 生成表达式的后跟符号 语句的后跟符号 输出表达式处理 生成输出栈顶值的输 出指令 opr 0 14 当前单词是 当前单词是 报错读入一个单词 生成换行指令 opr 0 15 14 调用语句处理 Y N N Y N Y N Y 当前单词是 call 读入一个单词 当前单词是标 识符 在符号表查找该 单词 找到 单词是过程名 生成调用指令 opr l f 报错 读入下一个单词 报错 15 If then 语句处理 Y N N Y 当前单词是 if 读入下一个单词 生成条件的后跟符号集 语句 后跟符号集 then do 条件处理 当前单词是 then 报错读入下一个单词 保存当前目标指令地址到 cx1 以便回填 生成条件跳转指令 jpc 0 0 Then 后面的语句处理 用当前目标指令地址回填前面的 条件跳转指令 成为 jpc 0 a 16 复合语句处理 Y N N Y Y N N Y 当前单词是 begin 读入下一个单词 生成语句处理的后跟符号集 本 层语句处理的后跟符号 end 语句处理 当前单词是语句开 始单词或 读入一个单词 当前单词是 报错 语句处理 当前单词是 end 报错读入下一个单词 17 While 语句处理 Y N Y N 当前单词是 while 保留当前目标指令地址 循环条件 判断指令地址 到 cx1 读入下一个单词 生成条件的后跟符号集 本层语 句的后跟符号集 do 条件处理 保存当前指令目标指令地址 跳出 循环的指令地址 以便回填 生成跳出循环的目标指令 jpc 0 0 当前单词是 do 读入下一个单词报错 循环体语句处理 生成跳回判断循环条件的跳转指令 jmp 0 a 用当前指令地址 循环语句外指令 回填跳出 循环的目标指令 滤去非语句后跟符号 返回 0 18 表达式处理 expression 表达式由项组成 例 项 项 项 项 N Y N Y 当前单词是 或者 保存第一个正负号 读入下一个单词 生成表达式的后跟符号集 当前的后跟符号集 项处理 第一个正负号为负 生成表达式的后跟符号集 当 前的后跟符号集 项处理 生成取负指令 opr 0 1 19 当前单词是 或者 生成表达式的后跟符号集 当前 的后跟符号集 项处理 保存正负号 读入下一个单词 生成加法指令 opr 0 2 生成减法指令 opr 0 3 正负号是正号 20 返回 21 22 已经完成的函数 init main int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025教师资格试题含答案详解(综合题)
- 法院司法辅助人员题库试题(各地真题)附答案详解
- 危重患者交接班制度
- 2026届淮安市重点中学九年级英语第一学期期末学业水平测试试题含解析
- 用餐接待礼仪培训
- 中国政治制度讲解
- 2026届云南省腾冲市十五所学校英语九年级第一学期期末预测试题含解析
- 江苏省句容市华阳片区2026届九年级化学第一学期期中考试试题含解析
- 机关科室工作总结
- 教育学新闻汇报
- 先天性甲状腺功能减退症诊治指南(2025)解读
- 二级建造师b证考试题库及答案
- 劳务公司安全管理规章制度
- 车辆保密协议书
- 蔚来主品牌视觉识别系统(完整版)
- 2024北森图形推理题
- 《生物科技与食品安全:转基因食品课件》
- 《新时代群众工作方法及其应用》课件
- 《城市规划管理与法规系列讲座课件-城市规划依法行政案例解析》
- 2025年全国特种设备(电梯)安全管理人员A证考试试题(300题)含答案
- 2024秋新人教版小学一年级艺术唱游·音乐上册《第一单元 奇妙的声音世界》教案设计
评论
0/150
提交评论