编译原理课程设计 - 算符优先分析法研究 - 附源程序(4)

2025-06-24

课程设计报告

{ 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


编译原理课程设计 - 算符优先分析法研究 - 附源程序(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大班语言活动《相反词聚会》

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219