《编译原理》课程设计报告.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:11 大小:303KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

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

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

预览

免费试读已结束,剩余 1 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《编译原理》课程设计报告学院:信息与机电工程学院班级:计算机(2)班姓名:郭艳婕学号:090400106指导教师:程晓锦设计题目:pl0编译器设计一、PL0程序的文法及,指令及属性翻译简化c语言文法定义(LL(1)文法)C程序::=voidmain(){函数体}函数体::=变量定义部分语句列变量定义部分::=变量定义变量定义部分|ɛ变量定义::=int变量表变量表::=标识符|标识符,变量表语句列::=语句语句列|ɛ语句::=条件语句|循环语句|读语句|写语句|复合语句|表达式语句|空语句条件语句::=if(表达式)语句循环语句::=while(表达式)语句读语句::=read(变量表);写语句::=write(表达式表);复合语句::={语句列};表达式语句::=表达式;空语句::=;表达式定义(算符优先文法)表达式::=变量=表达式|变量+=表达式|变量-=表达式|变量*=表达式|变量/=表达式|变量%=表达式|表达式1表达式1::=表达式1||表达式2|表达式2表达式2::=表达式2&&表达式3|表达式3表达式3::=表达式3==表达式4|表达式3!=表达式4|表达式3>=表达式4|表达式3>表达式4|表达式3<=表达式4|表达式3<表达式4|表达式4表达式4::=表达式4+表达式5|表达式4-表达式5|表达式5表达式5::=表达式5*表达式6|表达式5/表达式6|表达式5/表达式6|表达式6表达式6::=!表达式7表达式7::=(表达式)|变量|常量PL0文法定义《程序》::=《分程序》.《分程序》::=《常量定义》;《常后分程序》|《常后分程序》《常后分程序》::=《变量定义》;《变后分程序》|《变后分程序》《变后分程序》::=《过程定义》;《变后分程序》|《语句》《常量定义》::=const《常量定义表》《常量定义表》::=id=number|id=number,《常量定义表》《变量定义》::=var《变量表》《变量表》::=id|id,《变量表》《过程定义》::=procedureid;《分程序》《语句》::=《赋值语句》|《条件语句》|《循环语句》|《读语句》|《写语名》|《复合语句》|《过程调用语句》|ε《赋值语句》::=id:=《表达式》《读语句》::=read(《变量表》)《写语句》::=write(《表达式表》)《表达式表》::=《表达式》|《表达式》,《表达式表》《条件语句》::=if《条件表达式》then《语句》《循环语句》::=while《条件表达式》do《语句》《复合语句》::=begin《语句列》end《过程调用语句》::=callid《参量表》::=《有参表》|ε《有参表》::=《表达式》,《有参表》|《表达式》《表达式》::=+《表达式1》|-《表达式1》|《表达式1》《表达式1》::=《表达式1》+《表达式2》|《表达式1》-《表达式2》|《表达式2》《表达式2》::=《表达式2》*《表达式3》|《表达式2》/《表达式3》|《表达式2》mod《表达式3》|《表达式3》《表达式3》::=id|number|(《表达式》)《条件表达式》::=《条件表达式》or《条件表达式1》|《条件表达式1》《条件表达式1》::=《条件表达式1》and《条件表达式2》|《条件表达式2》《条件表达式2》::=not《条件表达式3》|《条件表达式3》《条件表达式3》::=(《条件表达式》)|《关系表达式》《关系表达式》::=《表达式》>《表达式》《关系表达式》::=《表达式》>=《表达式》《关系表达式》::=《表达式》<《表达式》《关系表达式》::=《表达式》<=《表达式》《关系表达式》::=《表达式》=《表达式》《关系表达式》::=《表达式》#《表达式》PL0栈式机指令指令格式:指令码(f)所在层数差(l),操作数(a)PL0栈式机指令:LIT:将常数a取到栈顶LOD:将位于(当前层-l)层处的变量a取到栈顶STO:将栈顶处值存储到指定位置,l,a同上CALL调用当前-l层处的过程aINT:为调用过程在栈中开辟数据区,a为单元个数JMP:无条件转移指令,a目标地址JPC:条件转移指令,栈顶值的布尔值为非真时转移到a处,否则执行下面语句OPR:关系运算或算术运算PL0属性翻译MCONST(const:常量定义开始),VAR(var:变量定义开始),PROCEDURE(procedure:过程定义开始),CALL(call:过程调用语句),BEGIN(begon:复合语句开