资源描述:
《编译原理实验6》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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#defineL12#definetempsy15#defin
2、eEA18#defineEO19#defineplus34#definetimes36#definebecomes38#defineop_and39#defineop_or40#defineop_not41#definerop42#definelparent48#definerparent49#defineident56#defineintconst57/******************************************/charch=' ';intcount=0;staticcharspelling[10]={""};staticcharline[81]=
3、{""};char*pline;staticcharntab1[100][10];structntab{inttc;intfc;76}ntab2[200];intlabel=0;structrwords{charsp[10];intsy;};structrwordsreswords[10]={{"if",sy_if},{"do",sy_do},{"else",sy_else},{"while",sy_while},{"then",sy_then},{"begin",sy_begin},{"end",sy_end},{"and",op_and},{"or",op_or},{"no
4、t",op_not}};structaa{intsy1;intpos;}buf[1000],n,n1,E,sstack[100],ibuf[100],stack[1000];structaaoth;structfourexp{charop[10];structaaarg1;structaaarg2;intresult;}fexp[200];intssp=0;structaa*pbuf=buf;intnlength=0;intlnum=0;inttt1=0;FILE*cfile;/**************************************************
5、*******/intnewt=0;intnxq=100;intlr;intlr1;intsp=0;76intstack1[100];intsp1=0;intnum=0;structll{intnxq1;inttc1;intfc1;}labelmark[10];intlabeltemp[10];intpointmark=-1,pointtemp=-1;intsign=0;/*****************程序语句的LR分析表*****************/staticintaction[19][13]=/*0*/{{2,-1,-1,3,4,-1,-1,5,-1,-1,10
6、,1,-1},/*1*/{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ACC,-1,-1},/*2*/{-1,-1,-1,-1,-1,-1,-1,-1,-1,6,-1,-1,-1},/*3*/{-1,-1,-1,-1,-1,-1,-1,-1,-1,7,-1,-1,-1},/*4*/{2,-1,-1,3,4,-1,-1,5,-1,-1,-1,9,8},/*5*/{-1,-1,104,-1,-1,-1,104,-1,104,-1,104,-1,-1},/*6*/{-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},/*7*/{-1,-1,
7、-1,-1,-1,11,-1,-1,-1,-1,-1,-1,-1},/*8*/{-1,-1,-1,-1,-1,-1,12,-1,-1,-1,-1,-1,-1},/*9*/{-1,-1,-1,-1,-1,-1,105,-1,13,-1,-1,-1,-1},/*10*/{2,-1,-1,3,4,-1,-1,5,-1,-1,-1,14,-1},/*11*/{2,-1,-1,3,4,-1,-1,5,-1,-1,-1,15,-1},/*12*/{-1,-1,103,-1,-1,-1,103,-1,10