E+T","E->T","T->T*F","T->F","F->(E)","F->i"};//产生式集合intcount=0;//记录当前进行处理的输入" /> E+T","E->T","T->T*F","T->F","F->(E)","F->i"};//产生式集合intcount=0;//记录当前进行处理的输入" />

全文预览

LR(1)实验报告(附代码)

上传者:学习一点 |  格式:doc  |  页数:14 |  大小:393KB

文档介绍
0, 0,0,0, 0,0,0, 0,0,0};charvt[6]={'i','+','*','(',')','#'};//存放终结符charvn[3]={'E','T','F'};//存放非终结符stringProduction[6]={"E->E+T","E->T","T->T*F","T->F","F->(E)","F->i"};//产生式集合intcount=0;//记录当前进行处理的输入字符串字符位置intline=1;//记录处理的步骤数boolflag=false;intStatusNumber=1;//栈中状态数stringstacktd="#";//记录符号栈中内容intStatus[50]={0};//记录状态栈stack<char>Stack;//创建一个符号栈stack<int>status;//创建一个状态栈voidJudge(int&i,intj,chararr[],charch,strings){//判断输入串是否由文法终结符组成?flag=false;?for(intl=0;l<j;l++){ if(ch==arr[l]){ flag=true; i=l; break; }?}?if(flag==false){ cout<<"\tError"<<endl; count=s.size();?}}voidOutputstatus(){//输出状态集?for(inti=0;i<StatusNumber;i++) cout<<Status[i];}voidOutputstring(strings){//输出未处理的字符串?for(inti=count;i<s.size();i++) cout<<s.at(i);}voidOutput(strings){//输出步骤、状态集、符号集、输入串cout<<line<<"\t";Outputstatus();

收藏

分享

举报
下载此文档