算符分析程序

算符分析程序

ID:40281331

大小:549.83 KB

页数:4页

时间:2019-07-30

算符分析程序_第1页
算符分析程序_第2页
算符分析程序_第3页
算符分析程序_第4页
资源描述:

《算符分析程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理:算符分析的实现实验报告姓名:胡峰学号:20127366班级:计算机2班指导老师:何大德日期:2014.12.83一. 实验目的 加深对语法分析器工作过程的理解;加强对算符优先分析法实现语法分析程序的掌握;能够采用一种编程语言实现简单的语法分析程序;能够使用自己编写的分析程序对简单的程序段进行语法翻译。二. 实验要求 1.对语法规则有明确的定义; 2.编写的分析程序能够对实验二的结果进行正确的语法分析;3.对于遇到的语法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成语法分析过程: 4.实验报告要求用文法的形式对语法定义做出详细说明,说明语法分析程序的工作过

2、程,说明错误处理的实现.三. 实验原理①:对文法G进行语法分析,文法G如下所示:1:E→E+T2:E→T3:T→T*F4:T→F5:F→i6:F→(E)③:表达式优先关系表(“>”表示优先高于,“<”表示优先低于,“=”表示同等优先)i+*()#i><<<>>+>><<>>*>>>>(<<<<=)>>>>#<<<<=3四.C语言实现①:流程图算符分析的流程图②:程序实现#include#includecharVt_Vecter[6]={'+','*','i','(',')','#'};//终结符数组charInString[10];//输入串

3、intx_In_Vt(charx){//判x是否终结符函数inti;for(i=0;i<6;i++)if(x==Vt_Vecter[i])return1;return0;}charYouXianBiao[6][6]={//优先关系表数组,'*'表空白'>','<','<','<','>','>','>','>','<','<','>','>','>','>','*','*','>','>','<','<','<','<','=','*','>','>','*','*','>','>','<','<','<','<','*','='};//以下是终结符转换为行列号函数intVt_T

4、rans(charx){inti;for(i=0;i<6;i++)if(x==Vt_Vecter[i])returni;}voiderror(){printf("error!");return;}//错误处理函数main(){3chara,Q,*pc;charstack[20]={'*','#'};intk=1,j,hh,lh;scanf("%s",InString);pc=InString;a=*pc++;while(a!='#'){if(x_In_Vt(stack[k]))j=k;elsej=k-1;hh=Vt_Trans(stack[j]);lh=Vt_Trans(a);w

5、hile(YouXianBiao[hh][lh]=='>'){do{Q=stack[j];if(x_In_Vt(stack[j-1]))j=j-1;elsej=j-2;}while(YouXianBiao[Vt_Trans(stack[j])][Vt_Trans(Q)]=='=');k=j+1;stack[k]='N';hh=Vt_Trans(stack[k-1]);}hh=Vt_Trans(stack[j]);lh=Vt_Trans(a);if(YouXianBiao[hh][lh]=='<'

6、

7、YouXianBiao[hh][lh]=='='){k=k+1;stack[k]=

8、a;}else{error();gotoL;}a=*pc++;}printf("分析成功");L:;}五:程序调试①:以输入串i*(i+i)#进行调试,结果如下:②:以输入串i(i+i)#进行调试,结果如下:3

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

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

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