欢迎来到天天文库
浏览记录
ID:21037800
大小:259.58 KB
页数:17页
时间:2018-10-19
《编译原理c语法分析器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告课程名称:课程设计题目:姓名:系:专业:年级:学号:指导教师:职称:编译原理语法分析器计算机计算机科学与技术2009级2010〜2011学年第一学期评语:成缋:指导教师签字:任务下达円期:评定日期:1正则表达式11.1正则表达式11.2确定化(化简)后的状态转挽图11.3分析程序代码11.4程序运行截图41.5/J、@42LL(1)分析52.1I丄(1)文法52.2LL(1)预测分析表52.3分析程序代码52.4程序运行截图72.5吉73算符优先分析83.1算符优先文法83.2算符优先关系表83.3分
2、析程序代码83.4程序运行截图103.5/J、@114LR射斤124.1LR文法124.2LR分析表124.3分析程序代码124.4程序运行截图112小结114参考文献:114//返回c状态的在邻接表中的序号//向字母表集合巾添加表中没有的新元素//初始化Visited集合//求单一状态c的e-闭包//重载的状态集合的e-闭包//单一状态I的a弧转换//重载的状态集合的a弧转换//Visited转换为集合//向状态集合屮添加新元素//状态矩阵T中加入新状态集合1正则表达式1.1正则表达式(a
3、b”(aa
4、bb)(
5、a
6、b)*(注:该正规式为示例,可更改)1.2确定化(化简)后的状态转换图^include〈iostream〉^include〈string〉usingnamespacestd;constintMax=20;typedefstructArcNode{intadjvex;//该弧所指向的顶点的位置charinfo;//权structArcNode*nextare;//指向下一条弧的指针}ArcNode;typedefstructVNode{chardata;//顶点信息ArcNode*firstarc;//指向第一
7、条依附该顶点的弧的指针}VNode;classNfa(1public:Nfa();//构造函数,初始化nfaintFindAdj(charc);voidAlpAdd(charc);voidInitVisit();voideclosure(intindex);voide_closure(inta[]);voidmove(intI,chara);voidmove(intT[],chara);voidNfa::Visit_I(int本Temp);voidInsert(int1[],inta);intTAdd(intI口
8、);voidResault(inti);voidNfaDfa();//状态数//状态子集矩阵//nfa,邻接表的数据结构存储//dfa//存闭包结果//字母表,0号单元用于存放个数private:intK;intT[Max][Max];VNodeAdjList[Max];VNodeDfa[Max];boolVisited[Max];charAlp[Max];};Nfa::Nfa(){K=Alp[0]=0;charc;stringline;ArcNode*p;while(cin〉〉c&&c!=’#’){AdjLis
9、t[K].data=c;AdjList[K].firstarc=ncwArcNode;AdjList[K].firstarc->nextarc=NULL;K++;}getline(cin,line);while(getline(cin,1ino)&&line!=〃#〃){intindex=FindAdj(line[0]);if(index!=-l){p=AdjList[index].firstare;while(p-〉nextarc)p二p-〉nextarc;p->nextarc=newArcNode;p-〉ne
10、xtarc-〉nextarc=NULL;p->nextarc->adjvex=EindAdj(line[4]);p->nextarc~>info=line[2];AlpAdd(p-〉nextarc-〉info);}}cout<〈〃〃<〈endl;cout<11、out〈<〃L={";for(inti=l;i<(int)Alp[0];i++)cout〈〈Alp[i]<<〃,’';cout〈〈Alp[Alp[0]]〈<"}.〃〈
11、out〈<〃L={";for(inti=l;i<(int)Alp[0];i++)cout〈〈Alp[i]<<〃,’';cout〈〈Alp[Alp[0]]〈<"}.〃〈
此文档下载收益归作者所有