PL0编译原理课程设计PL0 + 理课程设计报告.docxVIP

  • 3
  • 0
  • 约2.7万字
  • 约 35页
  • 2019-08-17 发布于江西
  • 举报

PL0编译原理课程设计PL0 + 理课程设计报告.docx

PAGE 2 PAGE 1 ‘PL0.cpp’ #include pl0.h /************************************************************************** * PL/0 语言编译程序,由江汉石油学院计算机系周云才根据清华大学出版社出版, * 吕映芝,张素琴,蒋维杜编写的教材《编译原理》中第二章(PL/0编译程序的实现) * 以及附录A中的代码改编而成。 * 代码版权由周云才拥有,使用者必须遵循以下约定: * 可以免费使用此文件,但必须包含此声明。 * 可以修改、传播、打印、出版这里的源代码。 * 可以在任何软件工程中使用这里的源代码。 ********************************************************************************************* */ // 错误字符串数组 string PL0::errStr[]={ ,error 0001: 常数说明中“=”写成“:=”, error 0002: 常数说明中的“=”后应为数字, error 0003: 常数说明中的标识符后应是“=”, error 0004: const,var,procedure后应为标识符, error 0005: 漏掉了‘,’或‘;’, error 0006: 过程说明后的符号不正确(应是语句开始符或过程开始符), error 0007: 应是语句开始符, error 0008: 过程体内语句部分的后跟符不正确, error 0009: 程序皆为丢了句号‘.’, error 0010: 语句之间漏了‘;’, error 0011: 标识符没说明, error 0012: 赋值语句中,赋值号左部标识符属性应是变量, error 0013: 赋值语句左部标识符应是赋值号:=, error 0014: call后应为标识符, error 0015: call后标识符属性应为过程, error 0016: 条件语句中丢了then, error 0017: 丢了end或;, error 0018: while型循环语句中丢了do, error 0019: 语句后的标识符不正确, error 0020: 应为关系运算符, error 0021: 表达式内标识符属性不能是过程, error 0022: 表达式中漏掉了右括号‘)’, error 0023: 因子后的非法符号, error 0024: 表达式开始符不能是此符号, error 0025: 文件在不该结束的地方结束了, error 0026: 结束符出现在不该结束的地方, error 0027: ,error 0028: ,error 0029: ,error 0030: , error 0031: 数越界, error 0032: read语句括号中标识符不是变量, error 0033: else附近错误 , error 0034: repeat附近错误}; // PL0构造函数 PL0::PL0(char* source,char*destination) { listswitch=true,sourceEnd=false; strcpy(word[1],begin); // 初始化存储保留字 strcpy(word[2],call); strcpy(word[3],const); strcpy(word[4],do); strcpy(word[5],else); strcpy(word[6],end); strcpy(word[7],if); strcpy(word[8],odd); strcpy(word[9],procedure); strcpy(word[10],read); strcpy(word[11],repeat); strcpy(word[12],then); strcpy(word[13],until); strcpy(word[14],var); strcpy(word[15],while); strcpy(word[16],write); wsym[1]= BEGINSYM; wsym[2]= CALLSYM; // 初始化保留字表中每一个保留字对应的symbol类型 wsym[3]= CONSTSYM; wsym[4]= DOSYM; wsym[5]= ELSESYM;

文档评论(0)

1亿VIP精品文档

相关文档