编译原理-语法分析-实验报告.doc

编译原理-语法分析-实验报告.doc

ID:57381036

大小:688.00 KB

页数:10页

时间:2020-08-14

编译原理-语法分析-实验报告.doc_第1页
编译原理-语法分析-实验报告.doc_第2页
编译原理-语法分析-实验报告.doc_第3页
编译原理-语法分析-实验报告.doc_第4页
编译原理-语法分析-实验报告.doc_第5页
资源描述:

《编译原理-语法分析-实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《编译原理及实践》结课大作业《语法分析》学生姓名艾力娜·托里干依勒斯江·木尔扎合买提克勒曼·沙布勒别克学号所属学院信息工程学院专业计算机科学与技术班级民本15-1班信息工程学院一.LL(1)预测语法分析器[实现目标]简单的算术表达式的LL(1)语法分析器实现工具MicrosoftVisualC++6.0,使用C/C++语言实现代码编程。需求分析与概要设计:编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按

2、该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。详细的算法描述:(1)自顶向下带递归语法分析(这个方法用的是老师给的文法)1、首

3、先对所以的生成式消除左递归、提取公共左因子2、在源程序里建立一个字符串数组,将所有的生成式都存在这个数组中。3、给每个非终结符写一个带递归的匹配函数,其中起始符的函数写在main函数里。这些函数对生成式右边从左向右扫描,若是终结符直接进行匹配,匹配失败,则调用出错函数。如果是非终结符则调用相应的非终结符函数。4、对输入的符号串进行扫描,从起始符的生成式开始。如果匹配成功某个非终结符生成式右边的首个终结符,则将这个生成式输出。匹配过程中,应该出现的非终结符没有出现,则出错处理。[文法]l产生式P:E-

4、>E+TT->T/FE->E-TT->FE->TF->(E)T->T*FF->i提取左因子并消除左递归得产生式P:(0)E→Te(1)e→+Te(2)e→-Te(3)e→ε(4)T→Ft(5)t→*Ft(6)t→/Ft(7)t→ε(8)F→(E)(9)F→i/*表示id*/l开始符号S:El终结符集Vt:{E,e,T,t,F}l非终结符集Vn:{+,-,*,/,(,),i}[构造预测分析表]lFIRST集:first(E)=first(T)=first(F)={﹝,i}first(e)={+,-,ε

5、}first(t)={*,/,ε}lFOLLOW集:follow(E)={$,﹞}follow(e)=follow(E)={$,}}follow(T)={fitsr(e)-ε}+follow(e)={+,_,﹞,$}follow(t)=follow(T)+follow(t)={+,_,﹞,$}follow(F)={follow(t)-ε}+follow(T)+follow(t)={*,/,+,_,﹞,$}[预测分析器模型]i+i…$xy….$预测分析程序输出分析表图1-1非递归的预测语法分析器模型[

6、源代码]#include#include#include#defineVtn8#defineVnn5#definePn10#definePmaxlen20#defineMaxStLength50#defineMaxStackDepth50charVn[Vnn]={'E','e','T','t','F'};charVt[Vtn]={'i','+','-','*','/','(',')','$'};charPstr[Pn][Pmaxlen]=

7、{"E->Te","e->+Te","e->-Te","e->ε","T->Ft","t->*Ft","t->/Ft","t->ε","F->(E)","F->i"};intPrlen[Pn]={2,3,3,1,2,3,3,1,3,1};intPint[Pn][3]={{102,101},{1,102,101},{2,102,101},{-1},{104,103},{3,104,103},{4,104,103},{-1},{5,100,6},{0}};intanalyseTable[Vnn][Vtn

8、+1];intanalyseStack[MaxStackDepth+1];inttopAnalyse;charst[MaxStLength];//要分析的符号串/*----------------------初始化----------------------------*/voidInitanalyseTable(){/*---预测分析表存放各个产生式的编号,-1表示找不到相匹配的产生式---*/for(inti=0;i

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

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

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