语法分析程序递归下降法.DOC

上传人:天*** 文档编号:1558701 上传时间:2019-03-05 格式:DOC 页数:5 大小:39.50KB
下载 相关 举报
语法分析程序递归下降法.DOC_第1页
第1页 / 共5页
语法分析程序递归下降法.DOC_第2页
第2页 / 共5页
语法分析程序递归下降法.DOC_第3页
第3页 / 共5页
语法分析程序递归下降法.DOC_第4页
第4页 / 共5页
语法分析程序递归下降法.DOC_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1语法分析程序(递归下降法)班级 学号 姓名: 指导老师: 一. 实验目的:1、 学习语法分析的主要方法;2、 熟悉复习词法分析的方法;3、 判断表达式的正确性;4、 熟悉 C 语言并提高动手能力;二. 实验内容:用递归下降分析法编写一个用于判断数学表达式是否正确的语法分析三. 实验硬件和软件平台:INTEL C433MHz Cpu128Mb SDRAMTurbo C 2.0Microsoft Windows XP SP1四. 步骤和算法描述:1 调用词法分析程序,转换表达式成为内号;2 调用语法分析程序,判断表达式正确与否;五. 源程序:#include #include #include

2、#define yy swy=adv()FILE *fp1;char ch;int swy;main()void CS();int chz(char str15);int adv();void CT();void E();void EB();void ERROR();void ET();void F();void IT();void T();void sentence();clrscr();ch= ;fp1=fopen(“pas.txt“,“r“);if(!fp1)printf(“Can not open ljx.txt!n”); exit(0);/* while(!feof(fp1) */2

3、yy;sentence();fclose(fp1);void ERROR()printf(“%d ERROR!n “,swy);void E()T();while(swy=34|swy=35)yy;T();void T()F();while(swy=36|swy=37)yy;F();void F()if(swy=21|swy=22) yy;else if(swy=27)yy;E();if(swy=28) yy;else ERROR();else ERROR();void sentence()switch(swy)case 21 :yy;if(swy=44)yy;E();else ERROR()

4、;break;case 1:CS();break;case 8:yy;EB();if(swy!=4)ERROR();yy;sentence();break;case 19:yy;EB();if(swy!=4)ERROR();yy;sentence();break;case 14:yy;if(swy!=27) ERROR();yy;IT();if(swy!=28)ERROR();yy;break;case 20:yy;if(swy!=27) ERROR();yy;ET();if(swy!=28)ERROR();3yy;break;void CS()yy;sentence();while(swy=

5、24)yy;sentence();if(swy=6)yy;else ERROR();void CT()if(swy=5)yy;sentence();void EB()E();if(swy=38)yy;E();else ERROR();void IT()if(swy!=21)ERROR();yy;while(swy=23)yy;if(swy!=21)ERROR();else ERROR();void ET()E();while(swy=23)yy;E();int chz(char str115)char str2115=“and“,“begin“,“const“,“div“,“do“,“else

6、“,“end“,“function“,“if“,“integer“,“not“,“or“,“procdure“,“program“,“read“,“real“,“then“,“type“,“var“,“while“,“write“;int i,max,min,mid;for(i=0;i=A)str1i=str1i+a-A;max=20;min=0;mid=10;while(min0)min=mid+1;mid=(max+min)/2;else max=mid-1;mid=(max+min)/2;return 0;int adv()char str115;int t,i=0,sk=0;4float num,xs;if(ch= |swy=24)fscanf(fp1,“%c“,printf(“%c“,ch);while(!feof(fp1)printf(“%c“,ch);sk=1;5if(ch)=)ch= ;return 44;else return 40;default:break;if(sk=0)fscanf(fp1,“%c“,printf(“%c“,ch);else sk=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。