资源描述:
《编译原理课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理课程设计报告PartC//源程序:/***PL0COMPILERWITHCODEGENERATION***///---------------------------------------------------------------------------#include#pragmahdrstop#include"Unit1.h"//---------------------------------------------------------------------
2、------#pragmapackage(smart_init)#pragmaresource"*.dfm"TForm1*Form1;//---------------------------------------------------------------------------constAL=10;/*LENGTHOFIDENTIFIERS*/constNORW=28;/*#OFRESERVEDWORDS*/constTXMAX=100;/*LENGTHOFIDENTIFIERTABLE*
3、/constNMAX=14;/*MAXNUMBEROFDEGITSINNUMBERS*/constAMAX=2047;/*MAXIMUMADDRESS*/constRMAX=32767;constLEVMAX=3;/*MAXDEPTHOFBLOCKNESTING*/constCXMAX=200;/*SIZEOFCODEARRAY*///..............intUPARR;//数组上界的全局变量intDOWNARR;//数组下界的全局变量intWNUMK=0;//实数与整型区别的全局变量//
4、..............typedefenum{NUL,IDENT,PLUS,MINUS,TIMES,PP,MM,PE,ME,OO,SLASH,ODDSYM,EQL,NEQ,LSS,LEQ,GTR,GEQ,SQLPAREN,SQRPAREN,LPAREN,RPAREN,COMMA,SEMICOLON,PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM,ELSESYM,REPEATSYM,WHILESYM,WRITESYM,READSYM,DOSYM,CALL
5、SYM,UNTILSYM,ARRAYSYM,OFSYM,CONSTSYM,VARSYM,PROCSYM,PROGSYM,FUNCSYM,FORSYM,TOSYM,DOWNTOSYM,INTEGERSYM,REALSYM,CHARSYM,DIVSYM,MODSYM}SYMBOL;char*SYMOUT[]={"NUL","IDENT","PLUS","MINUS","TIMES","PP","MM","OO","SLASH","ODDSYM","EQL","NEQ","LSS","LEQ","GTR"
6、,"PE","LPAREN","RPAREN","COMMA","SEMICOLON","PERIOD","GEQ","SQLPAREN","SQRPAREN","BECOMES","BEGINSYM","ENDSYM","IFSYM","THENSYM","ELSESYM","REPEATSYM","ME","WHILESYM","WRITESYM","READSYM","DOSYM","CALLSYM","UNTILSYM","FORSYM","TOSYM","DOWNTOSYM""CONSTS
7、YM","VARSYM","PROCSYM","PROGSYM","FUNCSYM""ARRAYSYM","OFSYM","INTEGERSYM","REALSYM","CHARSYM","DIVSYM","MODSYM"};typedefint*SYMSET;//SETOFSYMBOL;typedefcharALFA[11];typedefenum{CONSTANT,PROCEDUR,ARR,VARIABLE,FUNCTION,VAR}OBJECTS;typedefenum{LIT,OPR,LOD
8、,STO,STOARR,LODARR,CAL,INI,JMP,JPC}FCT;//加入对数组的运算STOARR和LODARRtypedefstruct{FCTF;/*FUNCTIONCODE*/intL;/*0..LEVMAXLEVEL*/floatA;/*0..AMAXDISPLACEMENTADDR*/}INSTRUCTION;/*LITOA--LOADCONSTANTA*//*OPR0A--EXECUTEOPRA*//*LODLA--LOADVARIABLEL,