《编译原理》课程设计报告

上传人:桔**** 文档编号:490010986 上传时间:2023-12-06 格式:DOC 页数:11 大小:301.50KB
返回 下载 相关 举报
《编译原理》课程设计报告_第1页
第1页 / 共11页
《编译原理》课程设计报告_第2页
第2页 / 共11页
《编译原理》课程设计报告_第3页
第3页 / 共11页
《编译原理》课程设计报告_第4页
第4页 / 共11页
《编译原理》课程设计报告_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《《编译原理》课程设计报告》由会员分享,可在线阅读,更多相关《《编译原理》课程设计报告(11页珍藏版)》请在金锄头文库上搜索。

1、编译原理课程设计报告设计题目:pl0编译器设计一、PL0程序的文法及,指令及属性翻译简化c语言文法定义(LL(1)文法)C程序:=void main()函数体函数体:=变量定义部分 语句列变量定义部分:=变量定义 变量定义部分| 变量定义:=int 变量表变量表:=标识符|标识符,变量表语句列:=语句 语句列| 语句:=条件语句| 循环语句 | 读语句 | 写语句 | 复合语句 | 表达式语句 | 空语句条件语句:=if(表达式)语句循环语句:=while(表达式)语句读语句:=read(变量表);写语句:=write(表达式表);复合语句:=语句列;表达式语句:=表达式;空语句:=;表达式定

2、义(算符优先文法)表达式:=变量=表达式 | 变量+=表达式 | 变量-=表达式 | 变量*=表达式 | 变量/=表达式 | 变量%=表达式 | 表达式1表达式1:=表达式1 | 表达式2 | 表达式2表达式2:=表达式2&表达式3 | 表达式3表达式3:=表达式3=表达式4 | 表达式3!=表达式4 | 表达式3=表达式4 | 表达式3表达式4 | 表达式3=表达式4 | 表达式3表达式关系表达式:=表达式=表达式关系表达式:=表达式表达式关系表达式:=表达式),GE(大于等于:=),LT(小于:),LE(小于等于:=、=等标识符: 用户定义的变量名、常数名、过程名常数: 如:10、25、1

3、00等整数界符: 如:,、. 、; 、( 、)等在编译程序中,单词的表示方式:(sym, id/num)四、语法分析的设计1、语法分析子程序分析语法分析子程序采用了自顶向下的递归子程序法,语法分析同时也根据程序的语意生成相应的代码,并提供了出错处理的机制。语法分析主要由分程序分析过程(block)、常量定义分析过程(constdeclaration)、变量定义分析过程(vardeclaration)、语句分析过程(statement)、表达式处理过程(expression)、项处理过程(term)、因子处理过程(factor)和条件处理过程(condition)构成。这些过程在结构上构成一个嵌

4、套的层次结构。除此之外,还有出错报告过程(error)、代码生成过程(gen)、测试单词合法性及出错恢复过程(test)、登录名字表过程(enter)、查询名字表函数(position)以及列出类PCODE代码过程(listcode)作过语法分析的辅助过程。2、语法分析的设计与实现 递归子程序法(递归下降分析器recursive-descent parser): 对应每个非终结符(语法成分),编一个独立的处理子程序。由开始,按规则右部(语法描述图箭头方向)进行分析:遇到非终结符,则调用相应的处理过程;遇到终结符,则判断当前读入的单词是否与该终结符相匹配,若匹配,再读取下一个单词继续分析。图1

5、语法调用关系图五、代码生成和分配变量PL/0 编译程序不仅完成通常的词法分析、语法分析,而且还产生中间代码和“目标”代码。PL/0 处理机有两类存贮,目标代码放在一个固定的存贮数组code 中,而所需数据组织成一个栈形式存放。PL/0 处理机的指令集根据PL/0 语言的要求而设计,它包括以下的指令:(1)LIT /* 将常数置于栈顶 */(2)LOD /* 将变量值置于栈顶 */(3)STO /* 将栈顶的值赋与某变量 */(4)CAL /* 用于过程调用的指令 */(5)INT /* 在数据栈中分配存贮空间 */(6)JMP, JPC /* 用于if, while 语句的条件或无条件控制转移指令 */(7)OPR /* 一组算术或逻辑运算指令 */上述指令的格式由三部分组成:F L

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号