版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PL/0语言的编译程序是用高级语言PASCAL语言编写的。程序由嵌套、过程和函数构成,采用一趟扫描方法。采用自顶向下的递归子程序法。所产生的目标程序为假想栈式计算机的汇编语言。
PL/0语言编译程序是适合教学用的,它的数据类型只有整形数,数据运算只有四则运算。语句有赋值语句、条件语句、WHILE循环语句、输出、输入语句和不带参数允许递归调用的过程语句及复合语句。第二章PL/0编译程序的实现
2.1.1PL/0语言的语法描述图下面借用语法图来描述语法规则。其中:英文表示终结符,中文表示非终结符。终结符:构成语言文法的单词,是语法成分 的最小单位。非终结符:是个语法成分,还没有进行分析。
程序2.1PL/0语言描述
分程序
语句条件:
表达式
项
因子:2.12PL/0语言文法的EBNF表示EBNF:扩充的巴科斯-瑙尔范式,是对文法的一种描述形式。其符号说明如下:<>:括号的中文表示语法成分,为非终结符
=:表示定义为
|:表示“或”关系
{}:括号内的语法成分可以重复
[]:括号内的成分为任选项
():括号内的成分优先2.2PL/0编译程序的结构编译过程采用一遍扫描方式。以语法分析程序为核心。词法分析程序语法分析程序代码生成程序表格管理程序出错处理程序
源程序
目标程序PL/0编译程序的过程或函数的功能表见表2.1过程或函数的嵌套定义层次结构如图2.3所示语法分析程序图2.4PL/0编译程序总体流程图词法分析程序是为语法分析提供单词用的,是语法分析的基础。它把输入的字符串形式的源程序分割成一个个单词符号。编译器为此设置了3个全程量的公用单元为:SYM:存放每个单词的类别ID:存放用户所定义的标识符的值NUM:存放用户定义的数2.3PL/0编译程序的词法分析单词的种类有五种:1.
基本字:也称保留字,如END、IF等2.
运算符:如+、—、*、/、>=、#等等3.
标识符:用户定义的变量名、常数名、 过程名4.
常数:如100等整数5.
界符:如‘,’、‘.’、‘(’‘;’等词法分析程序完成下列任务:1.滤空格:语法分析时没用2.识别保留字:对应的类别放在SYM中,若查不到,认为是用户定义的标识符3.识别标识符:对用户定义的标识符放在SMY中,标识符本身的值放在ID中4.拼数:所取单词是数字时,将数的类别放在SYM中,数值本身的值存放在NUM中5.拼复合词:对两个字符组成的算符进行识别(<=)6.输出源程序:边读入字符边输出取字符过程
GETCH所用单元说明:CH:存放当前读取的字符,初字为空LINE:一维数组,数组元素是字符,界对为1:80.用于输入一行字符的缓冲区LL和CC为计数器,初值为02.4PL/0语言的语法语义分析语法分析的任务,是识别由词法分析给出的单词符号序列在结构上是否符合给定的文法规则。语法分析从读入第一个单词由非终极符“程序”即开始符出发,沿语法描述图箭头所指出的方向进行分析。如果一个PL/0语言的单词系列在整个语法分析中,每个单词都能逐个得到匹配,直到程序结束符“.”,这时就说所输入的程序是正确的,对于正确的语法分析做相应的语义翻译,最终得出目标程序。程序→分
程
序
→·表2.2TABLE表中信息2.5PL/0编译程序目标代码结构和代码生成代码指令有8条:LIT:将常量值取到运行栈顶LOD:将变量放到栈顶STO:将栈顶内容送入变量单元CAL:调用过程的指令INT:为被调用的过程在运行栈中开辟数据区JMP:无条件转移指令JPC:条件转移指令OPR:关系运算和算术运算指令指令格式如下:f:功能码l:层次差a:针对不同指令flaPL/0源程序与目标程序例:2.6语法错误处理:
PL/0编译程序对语法错误的处理采用两种方法:1.对于有些易于校正的错误如丢了逗号、分号等,则指出出错位置,并加以校正。校正的方式就是补上逗号或分号。2.有些错误编译程序难于确定校正的措施。为了使当前的错误不致影响整个程序的崩溃,把错误尽量局限在一个局部的语法单位中。这样就需要跳过一些后面输入的单词符号,直到读入一个能使编译程序恢复正常语法分析工作的单词为止。
2.7PL/0语言目标程序解释执行时的存储分配当源程序经过语法分析,如果未发现错误时,由编译程序调用解释程序,对存放在CODE中的目标程序代码进行解释执行。当编译结束后,记录源程序中标识符的TABLE表已退出内存。因此存储区只剩以数组CODE存放的只读目标程序和运行时的数据区S。S是由解释程序定义的一维整形数组。PL/0语言的目标程序是一种假想的栈式计算机的汇编语言,解释执行时的数据空间S为栈式计算机的存储空间,遵循后进先出规则。对每个过程当被调用,才分配数据空间,退出过程时,所分配的数据空间被释放。
2.7PL/0语言目标程序解释执行时的存储分配解释程序定义了四个寄存器:I:指令寄存器,存放当前正在解释的一条目标指令P:程序地址寄存器,指向下一条要执行的目标程序的地址T:栈顶寄存器,每个过程被运行时,给它分配的数据区空间分为静态和动态两个部分,栈顶寄存器指出了当前栈中最新分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省-2024年-社区网格员-下半年笔试真题卷
- 全市禽流感防治工作实施方案范例(2篇)
- 汽车行业电车时间机器论2:新能源汽车结构性繁荣背后2025年如何演绎
- 托儿所服务的室外环境考核试卷
- 宠物主题旅馆和民宿的设计和营销经验考核试卷
- 铁路建设施工合同协议
- 纺织厂生产车间LED灯具招标
- 职业规划咨询费用协议
- 市政道路新建路基施工合同
- 水电站改造简易施工合同
- 本科生毕业论文写作指导93590课件
- JC/T 547-2017 陶瓷砖胶粘剂
- 网络安全 100mw光伏并网电站电气系统设计
- 《国际中文教育概论》课件全套 第1-12章 从对外汉语教学到国际中文教育- 国际中文教育前瞻
- 招标投标从业人员知识竞赛试题(试题及答案1-200题)
- 第18课《善待同学》课件
- 《住房社会救助》课件
- 软件招标方案技术方案
- 飞花令题库完整
- 社团活动未来规划
- 行政查房内容及行政查房标准
评论
0/150
提交评论