编译原理pL0实验报告.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理pL0实验报告

课程设计要求 基本内容: (1)扩充赋值运算:*= 和 /= (2)扩充语句(Pascal的FOR语句): ①FOR 变量:=表达式 TO 表达式 DO 语句 ②FOR 变量:=表达式 DOWNTO 表达式 DO 语句 其中,语句①的循环变量的步长为2, 语句②的循环变量的步长为-2。 二.设计思路 在课内实验的基础上,额外增加*=和/=运算符和关键字的语义动作,以下是设计思路: 1. 扩充单词 在头文件pl0.h中的enum symbol中增加关键字forsym, tosym, downtosym, timeseqlsym, slasheqlsym,并修改关键字数#define symnum 46。 /*初始化*/ // ssym[*=]=timeseql; // ssym[/=]=slasheql; /*设置保留字名字,按照字母顺序,便于折半查找*/ strcpy((word[14][0]),to); /*增加后需要按序排列*/ strcpy((word[7][0]),for); strcpy((word[4][0]),downto); strcpy((word[3][0]),do); /*设置保留字符号*/ wsym[7]=forsym; wsym[14]=tosym; /*语法分析,获取一个符号*/ 在getsym()部分添加: else if(ch==*){ /** “*=” **/ getchdo; if(ch===){ sym=timeseql; getchdo; printf(check *= success!); } else sym=times; } else if(ch==/){ /* “/=” */ getchdo; if(ch===){sym=slasheql; getchdo; printf(check /= success!); } else sym=slash; } /*其中printf部分均为识别成功后用作返回的信息而设*/ 扩充赋值运算符:*=和/=,关键字For EBNF范式的书写: 变量*=|/=表达式 for 语句::=for变量:=表达式 to 表达式 do 语句 for 语句::=for变量:=表达式 downto 表达式 do 语句 语法描述图: a.*=和/=: 递归下降子程序 a.增加+=,/=; 找到statement部分的becomes部分作为修改: /以下为连接become语句后的修改部分*/ else if(sym==timeseql) { getsymdo; memcpy(nxtlev,fsys,sizeof(bool)* symnum); expressiondo(nxtlev,ptx,lev); gendo(lod,lev-table[i].level,table[i].adr); gendo(opr,0,4); gendo(sto,lev-table[i].level,table[i].adr); } else if(sym==slasheql) { getsymdo; memcpy(nxtlev,fsys,sizeof(bool)* symnum); gendo(lod,lev-table[i].level,table[i].adr); expressiondo(nxtlev,ptx,lev); gendo(opr,0,5); gendo(sto,lev-table[i].level,table[i].adr); } } } } b.增加for: 找到statement部分的calsym部分后作为增加: /以下为连接callsym语句后的增加部分*/ else if(sym==forsym) { getsymdo; if(sym==ident) { i=pos

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档