编译原理—pl0实验报告 - 图文 联系客服

发布时间 : 星期日 文章编译原理—pl0实验报告 - 图文更新完毕开始阅读

PL/0源程序的扩充 (1)扩充赋值运算:+=,-=.此功能扩充只需在语句分析里面进行增加如下程序: if(SYM==BECOMES||SYM==PLUSBECOMES||SYM==MINUSBECOMES){ if (SYM==BECOMES) { GetSym(); EXPRESSION(FSYS,LEV,TX); } else if(SYM==PLUSBECOMES||SYM==MINUSBECOMES) { GEN(LOD,LEV-TABLE[i].,TABLE[i].; if(SYM==PLUSBECOMES){ GetSym(); FACTOR(FSYS,LEV,TX); GEN(OPR,0,2); } else if(SYM==MINUSBECOMES){ GetSym(); FACTOR(FSYS,LEV,TX); GEN(OPR,0,3); } } if (i!=0) GEN(STO,LEV-TABLE[i].,TABLE[i].; } (2)增加条件语句的ELSE子ELSE语句的语法语义分析程序: case IFSYM: GetSym(); CONDITION(SymSetUnion(SymSetNew(THENSYM,DOSYM),FSYS),LEV,TX); if (SYM==THENSYM) GetSym(); else Error(16); CX1=CX; GEN(JPC,0,0); STATEMENT(FSYS,LEV,TX); CX2=CX; GEN(JMP,0,CX+1); CODE[CX1].A=CX; if (SYM==SEMICOLON) GetSym(); if(SYM==ELSESYM) { GetSym(); STATEMENT(FSYS,LEV,TX); CODE[CX2].A=CX; } //add the statement of ELSE else STATEMENT(FSYS,LEV,TX); break; (实验结论及问题讨论) 这次实验给我们带来的收获都是受益匪浅的,它让我对编译原理的词法分析、语法语义分析等都有了更进一步的了解。一个算法的好坏决定了一段程序的好坏,它会影响它的运行时间及效率,而一种思想对一个程序来讲也起着至关重要的作用,那一行行代码不仅仅只是一些简单的字符,它还包含了设计者的理念。我觉得我们学习就是要把原理搞清楚,这样才能把思想与理念运用到更大的层面上去,通过实验我也深深体会到了这门课的重要性,也体会到了杨老师对我们的良苦用心和寄予的厚望。过程是艰辛的,但结果又是喜人的,相信这门课会对我的将来起到至关重要的作用。