北邮 编译原理 语法分析.docx

北邮 编译原理 语法分析.docx

ID:28510368

大小:92.25 KB

页数:12页

时间:2018-12-10

北邮 编译原理 语法分析.docx_第1页
北邮 编译原理 语法分析.docx_第2页
北邮 编译原理 语法分析.docx_第3页
北邮 编译原理 语法分析.docx_第4页
北邮 编译原理 语法分析.docx_第5页
资源描述:

《北邮 编译原理 语法分析.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、编译原理语法分析班级:学号:姓名:ytinrete程序设计2题目:语法分析程序的设计与实现。实验内容:编写语法分析程序,实现对算术表达式的语法分析。要求所分析算术表达式由如下的文法产生。实验要求:在对输入表达式进行分析的过程中,输出所采用的产生式。方法1:编写递归调用程序实现自顶向下的分析。方法2:编写LL(1)语法分析程序,要求如下。(1)编程实现算法4.2,为给定文法自动构造预测分析表。(2)编程实现算法4.1,构造LL(1)预测分析程序。方法3:编写语法分析程序实现自底向上的分析,要求如下。(1

2、)构造识别所有活前缀的DFA。(2)构造LR分析表。(3)编程实现算法4.3,构造LR分析程序。方法4:利用YACC自动生成语法分析程序,调用LEX自动生成的词法分析程序。方法2:编写LL(1)语法分析程序首先对文法进行处理,预存文法的拓广文法,非终结符的FIRST集和FOLLOW集。其次编程实现算法4.2,为给定文法自动构造分析表。最后输入待处理字符串,通过实现的算法4.1,利用分析表分析出字符串,能够接受则返回接受,否则返回错误。源代码:#include#include

3、dio>#include#include#include#include#includeusingnamespacestd;stringoriginal[9]={//保存原文法"E->E+T","E->E-T","E->T","T->T*F","T->T/F","T->F","F->i","F->(E)","F->n"};stringG[11]={//拓广文法"E->TA","A->+TA","A->-TA","A

4、->e","T->FB","B->*FB","B->/FB","B->e","F->(E)","F->i","F->n"};stringFIRST[5]={//first集"E:(in",//E"A:+-e",//A"T:(in",//T"B:*/e",//B"F:(in"//F};stringFOLLOW[5]={//follow集"E:)$",//E"A:)$",//A"T:+-)$",//T"B:+-)$",//B"F:+-*/)$",//F};charVN[5]={'E','A','T','B

5、','F'};//存储非终结符charVT[9]={'i','n','+','-','*','/','(',')','$'};//存储终结符typedefstructBlock{charvn;//非终结符charvt;//终结符strings;//产生式}block;//存储分析预测表每个位置对应的终结符,非终结符,产生式blocktable[45];//5*9=45charis_vt(chara)//是否为非终结符,不是返回'x'{for(inti=0;i<5;i++){if(a==VN[i])re

6、turn'x';}if(isalpha(a))//是字母return'i';if(isdigit(a))//是数字return'n';for(inti=0+2;i<9;i++){if(a==VT[i])returna;}}intfind_table(charX,chara)//查找是否存在符合的产生式{for(inti=0;i<45;i++){if(table[i].vn==X&&table[i].vt==is_vt(a))if(0!=table[i].s.size())returni;elseret

7、urn999;//error项}return999;}voidLL_one(stringtemp){stackST;//栈ST.push('$');//初始化压入栈ST.push('E');cout<<"栈"<<"输入"<<"输出"<99)cout<<":";elseif(j>9)cout<<":";elsecout<<":";//输出stackt_ST;//栈cha

8、rt_char;inti2=ST.size();for(inti1=0;i1

9、";for(int

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。