资源描述:
《编译原理实验1源代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#include"stdio.h"#include"string.h"#defineACC-2/**************************************/#definesy_if0#definesy_then1#definesy_else2#definesy_while3#definesy_begin4#definesy_do5#definesy_end6#definea7#definesemicolon8#definee9#definejinghao10#defineS11
2、#defineL12#definetempsy15#defineEA18#defineE019#defineplus34#definetimes36#definebecomes38#defineop_and39#defineop_or40#defineop_not41#definerop42#definelparent48#definerparent49#defineident56#defineintconst57/****************************************
3、****/charch=' ';intcount=0;staticcharspelling[10]={""};staticcharline[81]={""};char*pline;staticcharntab1[100][10];structntab{inttc;intfc;}ntab2[200];intlabel=0;structrwords{charsp[10];intsy;};structrwordsreswords[10]={{"if",sy_if},{"do",sy_do},{"el
4、se",sy_else},{"while",sy_while},{"then",sy_then},{"begin",sy_begin},{"end",sy_end},{"and",op_and},{"or",op_or},{"not",op_not}};structaa{intsy1;intpos;}buf[1000],n,n1,E,sstack[100],ibuf[100],stack[1000];structaaoth;structfourexp{charop[10];structaaarg
5、1;structaaarg2;intresult;}fexp[200];intssp=0;structaa*pbuf=buf;intnlength=0;intlnum=0;inttt1=0;FILE*cfile;/********************************************************/intnewt=0;intnxq=100;intlr;intlr1;intsp=0;intstack1[100];intsp1=0;intnum=0;structll{in
6、tnxq1;inttc1;intfc1;}labelmark[10];intlabeltemp[10];intpointmark=-1,pointtemp=-1;intsign=0;/********************³ÌÐòÓï¾äµÄLR·ÖÎö±í********************/staticintaction[19][13]={{2,-1,-1,3,4,-1,-1,5,-1,-1,10,1,-1},{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ACC,-1,
7、-1},{-1,-1,-1,-1,-1,-1,-1,-1,-1,6,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1,-1,-1,7,-1,-1,-1},{2,-1,-1,3,4,-1,-1,5,-1,-1,-1,9,8},{-1,-1,104,-1,-1,-1,104,-1,104,-1,104,-1,-1},{-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1,-1},{-1,
8、-1,-1,-1,-1,-1,12,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,105,-1,13,-1,-1,-1,-1},{2,-1,-1,3,4,-1,-1,5,-1,-1,-1,14,-1},{2,-1,-1,3,4,-1,-1,5,-1,-1,-1,15,-1},{-1,-1,103,-1,-1,-1,103,-1,103,-1,103,-1,-1},{2,-1,-1,3,4,-1,-1,5,-1,-1,-1,9,16},{-1,-1,17,-1,-1,