资源描述:
《广工编译原理实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、<<编译原理>>课内实验报告项目名称PL/0编译器学院____计算机学院_______专业__年级班别________学号_学生姓名__________辅导教师_______成绩______________17目录一、课内实验的内容------------------------------------------4二、实验修改部分--------------------------------------------4三、概述-------------------------------------------------1
2、1四、结构设计说明-------------------------------------------11五、各功能模块描述-----------------------------------------14六、主要成份描述------------------------------------------14七、测试用例----------------------------------------------16八、开发过程和完成情况--------------------------------------21一、课
3、内实验的内容对PL/0作以下修改扩充:(1)增加单词:保留字ELSE,FOR,STEP,RETURN运算符+=,-=,++,--,&,
4、,~(2)修改单词:不等号#改为<>(3)增加条件语句的ELSE子句二、实验修改部分:1、增加四个保留字和七个运算符,共十一个单词。修改部分:#definesymnum43//保留字从32增加到43个2、增加五个保留字:ELSE,FOR,STEP,RETURN头文件pl0.henumsymbol{新增加单词:elsesym,forsym,stepsym,returnsym,pluseq/*+=
5、*/,plusone/*++*/,plus/*+*/,minuseq/*-=*/,minusone/*--*/,minus/*-*/,and,or,not}头文件pl0.h#definenorw24//关键字从13增加到24个PL0.cppinit();新增加:(增加后数组的内容要再次根据字母顺序重新排列)strcpy(&(word[0][0]),"begin");strcpy(&(word[1][0]),"call");strcpy(&(word[2][0]),"const");strcpy(&(word[3][0]),"d
6、o");strcpy(&(word[4][0]),"else");/*增加单词:保留字else*/strcpy(&(word[5][0]),"end");strcpy(&(word[6][0]),"for");/*增加单词:保留字for*/strcpy(&(word[7][0]),"if");strcpy(&(word[8][0]),"odd");17strcpy(&(word[9][0]),"procedure");strcpy(&(word[10][0]),"read");strcpy(&(word[11][0]),"re
7、turn");/*增加单词:保留字return*/strcpy(&(word[12][0]),"step");/*增加单词:保留字step*/strcpy(&(word[13][0]),"then");strcpy(&(word[14][0]),"while");strcpy(&(word[15][0]),"write");wsym[0]=beginsym;wsym[1]=callsym;wsym[2]=constsym;wsym[3]=dosym;wsym[4]=elsesym;/*else*/wsym[5]=endsym;
8、wsym[6]=forsym;/*for*/wsym[7]=ifsym;wsym[8]=oddsym;wsym[9]=procsym;wsym[10]=readsym;wsym[11]=returnsym;/*return*/wsym[12]=stepsym;/*step*/wsym[13]=thensym;wsym[14]=whilesym;wsym[15]=writesym;3、增加四个运算符:+=,-=,++,--,∧,∨,┓lPL0.cppgetsym();增加对+,-,++,--,+=,-=的识别;Statement
9、();增加对+,-,++,--,-=的语句的处理;Init()中改动:ssym[‘&’]=and;ssym[‘
10、’]=or;ssym[‘~’]=not;facbegsys[plusone]=true;//添加前自加运算facbegsys[minusone]=true;//添加