PLX编译器软件设计说明书.doc
《PLX编译器软件设计说明书.doc》由会员分享,可在线阅读,更多相关《PLX编译器软件设计说明书.doc(17页珍藏版)》请在沃文网上搜索。
1、Subject: Product Internal Specification of Release Date: Rev.0 xxxx Project Page 1 of XProject Name/Model No:XXXXXPL/X编译器软件设计说明书作者:xxx日期:2009/4/301介绍本编译器可以按照PL/X语言语法要求进行词法、语法、语义、出错处理,并最终成生目标代码,通过解释执行得到最终结果。完成了求余、for语句、dowhile语句、read语句、call语句以及自增、自减、常量的定义和使用等扩展功能。2编译器系统结构2.1 编译器2.1.1 PL/X语法图l prog=”p
2、rogram”block”.”.l block=ds”procedure”ident”;”block”;”begin”ss”end”.l ds=d“;”d.l d=”integer”aident“,”aident|”logical”bident“,”bident|const ident”=”number“,”ident”=”number.l ss=s1“;”s1.l s1=aident”:=”ae|bident”:=be|”if”be”then”ss“else”ss”end”|”while”be”do”ss”end”|”repeat”ss”until”be|”write”ae|“do”ss”e
3、nd”while”be|”read”(“aident“,”aident”)”|”call” ident|“for” aident”:=”number”to”number”do”(s1|”begin”ss”end”)|aident”+”|bident”“.l ae=“-“at(“-“|”+”)at l at=af(“*”|”/”|”odd”|”%”)af.l af=aident|number|”(“ae”)”.l be=bt“or”bt.l bt=bf“and”bf.l bf=bident|”true”|false”|”not”bf|”(“be”)”|re.l re=(aident|number
4、)(“=”|”|”=”|”|”=”|”/=”)ae.扩展部分:1.能够进行求余运算;2.能够正确执行read语句;3.能够正确执行dowhile.语句。4.能够正确执行for语句。5.能够正确执行call语句。6.能够正确定义和使用const常量定义。7.能够正确执行自增自减运算。8.能够进行奇偶判断。2.1.2判断是否符合两条限制规则1、找出图中每一个分支点,考察每个分枝点的各个分支的头符号是否相异。2、找出图中每一个透明结构,考察每个透明结构的头符号集合与其跟随符号集合是否相异。2.1.3 过程调用相关图2.1.5 语法出错表定义1源文件缺少program入口.2程序缺少结束符号!3过程定
5、义缺少结束分号!4过程定义缺少开始分号!5不可识别的过程定义标识符!6程序语句缺少begin关键字.7程序缺少end关键字.8不可识别的标识符!9赋值语句不能使用 = 标识符!10左值使用出错!11为过程变量!12if 语句缺乏 end标记符13if 语句缺少 then标识符!14在 while 循环里需要一个 end 标识符15while 语句缺少 do标识符!16repeat 缺乏until标识符!17repeat 缺乏until标识符!18被调用的不是过程!19call 语句无法识别!20应该为赋值21缺少了do22数值类型23应该为to24应该为标识符25运算式中不可使用26缺乏)标识
6、符28不可识别的运算因子29应该为数值或标识符,30错误的运算符号2.2 虚拟机2.2.1 虚拟机组织结构程序存储器 指令存储器 数据存储器 si Code程序地址寄存器 基本地址寄存器 地址寄存器tbP2.2.2 虚拟机指令格式LIT 0,a 把一个常数置入栈顶OPR 0,a 一组算术和关系运算指令LOD l,a 把一个变量置入栈顶 STO l,a 从栈顶把数置入到一个变量单元里INT 0,a 预留数据存储位置JMP 0,a 无条件转移指令JPC 0,a 有条件转移指令WRC0,a 写出一个变量值2.2.3 虚拟机指令系统及其解释switch(i.f)case LIT:t+;st=i.a;b
7、reak;case OPR: switch(i.a)case 0:t=b-1;p=st+3;b=st+2;break;case 1:st=-st;break;case 2:t-;st=st+st+1;break;case 3:t-;st=st-st+1;break;case 4:t-;st=st*st+1;break;case 5:t-;st=st/st+1; break;case 6:st=st%2;break;case 8:t-;st=(st=st+1); break;case 9:t-;st=(st!=st+1); break;case 10:t-;st=(st=st+1); break
8、;case 12:t-;st=(stst+1); break;case 13:t-;st=(st=st+1); break;case 14:t-;st=st%st+1;break;case 15:t+;printf(?);scanf(%d,&(st);break;case 16:if(st!=0)st=0;elsest=1;break;break;case LOD: t+;st=sbase(i.l)+i.a;break;case STO: sbase(i.l)+i.a=st;/printf(%dn,st);t-;break;case CAL: st+1=base(i.l); st+2=b; s
9、t+3=p; b=t+1; p=i.a; break;case INT: t+=i.a;break;case JMP: p=i.a;break;case JPC: if(st=0)p=i.a;t-; break;case WRC:printf(%dn,st);fprintf(fout,%dn,st);t-;break; 3模块架构词法分析语法分析语义分析及目标代码生成目标代码生成表格管理出错处理源程序单词符号语法单位目标代码4模块功能介绍1、词法分析:词法分析子程序名为getsym,功能是从源程序中读出一个单词符号(token),把它的信息放入全局变量sym、id和num中,语法分析器需要单词
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLX 编译器 软件设计 说明书