课程设计报告
{ for(int i=0;i return false; } //读文件函数 int readfile(char sen[][col]) { char addr[50]; cout<<\请输入要读文件的地址(\\\\用\\\\\\\\表示):\ cin>>addr; ifstream fin; fin.open(addr,ios::in); if(!fin) { cout<<\ } for(int i=0;!fin.eof();i++) { fin>>sen[i]; cout< //FIRSTVT表和LASTVT表中表项(非终结符)的初始化 void ItemInit(char sen[][col],char first[][col],char last[][col],int sen_len,int &frist_len) { int i; frist_len=1; first[0][0]=sen[0][0]; last[0][0]=sen[0][0]; for(i=1;i 15 //k 课程设计报告 last[frist_len][0]=sen[i][0]; frist_len++; } } } void FirstVt(char sen[][col],char first[][col],int sen_len,int frist_len) // frist_len 是 first 表的行数 sen_len是产生式的个数 { StackElement DFS,record[SIZE]; stack Operator; //创建存放(A,a)的栈 InitStack(Operator); int i,j,r=0; for(i=0;i 16 课程设计报告 r++; } break; } } } int location[col]; //辅助数组,用来记录first表中放入终结符的位置 for(i=0;i IDElement.nonterm=sen[j][0]; IDElement.term=DElement.term; //判断将要放进栈里的元素曾经是否出现过,若没有,才压入栈 for(int r0=0;r0 17 课程设计报告 exist=1; break; } } if(exist==0) { Insert(Operator,IDElement); record[r].nonterm=IDElement.nonterm; record[r].term=IDElement.term; r++; } }//if }//for }//while } void LastVt(char sen[][col],char last[][col],int sen_len,int frist_len) //firstvt表与lastvt表行数一样 first_len表示last 表的行数 { int i,j,i1,j1; char c,record[row][col]={'\\0'}; for(i=0;i 18 课程设计报告 FirstVt(record,last,sen_len,frist_len); } //判断非终结符在term表中是否已存在 bool TermTableJud(char term[col],int term_len,char C) { for(int i=0;i return false; } //构造算符优先关系表 bool OpPriotable(char sen[][col],char first[][col],char last[][col],char opTable[][col],int sen_len,int first_len,int &opTable_len) { int i,j,term_len=0; int i2,i3,opr,opc; char c1,c2,c3; char term[SIZE]={'\\0'}; for(i=0;i 19 百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库编译原理课程设计 - 算符优先分析法研究 - 附源程序(4)在线全文阅读。
相关推荐: