




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、山东科技大学学生课程设计词法分析程序一、设计目的编制一个递归下降分析程序, 实现对词法分析程序所提供的单词序列的 语法检查和结构分析。二、设计要求利用 C 语言编制递归下降分析程序,并对简单语言进行语法分析。2.1 待分析的简单语言的语法用扩充的 BNF 表示如下:程序:=begin语句串 end语句串 :=语句 ;语句 语句 :=赋值语句 赋值语句 : =ID :=表达式 表达式:=项+项 | -项项:=因子* 因子 | /因子因子:=ID | NUM | (表达式)2.2 实验要求说明输入单词串,以“ #”结束,如果是文法正确的句子,则输出成功信息, 打印“ success”,否则输出“
2、error”。例如:输入begin a:=9; x:=2*3; b:=a+x end #输出success!输入x:=a+b*c end #输出error1山东科技大学学生课程设计三、设计说明 (含主要算法的流程图)1、主程序示意图如图 2-1 所示图 2-1 语法分析主程序示意图2、递归下降分析程序示意图如图 2-2 所示3、语句串分析过程示意图如图 2-3 所示山东科技大学学生课程设计图 2-2 递归下降分析程序示意图图 2-3 语句串分山东科技大学学生课程设计4、statement语句分析程序流程如图2-4、2-5、2-6、2-7 所示。图 2-5 expression表达式图 2-4
3、statement语句分析函数示意图 分析函数示意图山东科技大学学生课程设计图 2-7 factor 分析过程示意图5、实验源代码#include stdio.h#include string.hchar prog100,token8,ch;char *rwtab6=begin,if,then,while,do,end;int syn,p,m,n,sum;int kk;factor();expression();yucu();山东科技大学学生课程设计term();statement();lrparser();scaner();main()p=kk=0;printf(nplease input
4、a string (end with #): n);do scanf(%c,&ch);progp+=ch;while(ch!=#);p=0;scaner();lrparser();getch();lrparser()if(syn=1)scaner();/* 读下一个单词符号 */yucu();/*调用 yucu()函数; */if (syn=6) scaner();if (syn=0)&(kk=0)printf(success!n);else if(kk!=1) printf(the string havent got a end!n); kk=1;else printf(havent got
5、 a begin!n);kk=1;return;yucu()山东科技大学学生课程设计 statement();/* 调用函数 statement();*/while(syn=26)scaner();/* 读下一个单词符号 */if(syn!=6)statement();/* 调用函数 statement();*/ return; statement() if(syn=10)scaner(); /* 读下一个单词符号 */ if(syn=18) scaner();/* 读下一个单词符号 */expression();/* 调用函数 statement();*/else printf(the si
6、ng := is wrong!n); kk=1;else printf(wrong sentence!n); kk=1; return; expression() term(); while(syn=13)|(syn=14) scaner();/* 读下一个单词符号 */term();/* 调用函数 term();*/ return; term() factor(); while(syn=15)|(syn=16)山东科技大学学生课程设计 scaner();factor();/* 读下一个单词符号 */* 调用函数 factor(); */return;factor() if(syn=10)|(
7、syn=11) scaner();else if(syn=27) scaner();/* 读下一个单词符号 */expression();/* 调用函数 statement();*/if(syn=28)scaner();/* 读下一个单词符号 */else printf(the error on (n);kk=1;else printf(the expression error!n);kk=1; return;scaner() sum=0; for(m=0;m8;m+)tokenm+=NULL; m=0;ch=progp+; while(ch= )ch=progp+;if(ch=a)|(ch=
8、A) while(ch=a)|(ch=A)|(ch=0)&(ch =9)tokenm+=ch;ch=progp+;p-;syn=10;tokenm+=0;for(n=0;n=0)&(ch=0)&(ch=9) sum=sum*10+ch-0; ch=progp+;p-;syn=11;else switch(ch) case ) syn=21;else if(ch=) syn=22;else syn=20;p-;break;case :m=0;ch=progp+; if(ch=) syn=24;else syn=23;p-;break;case :m=0;ch=progp+;山东科技大学学生课程设
9、计if(ch=) syn=18;else syn=17;p-;break;case +: syn=13; break; case -: syn=14; break; case *: syn=15;break; case /: syn=16;break; case (: syn=27;break; case ): syn=28;break; case =: syn=25;break; case ;: syn=26;break; case #: syn=0;break; default: syn=-1;break;四、运行结果及分析输入 begin a:=9; x:=2*3; b:=a+x end # 后输出 success! 如图 4-1 所示:10山东科技大学学生课程设计图 4-1输入 x:=a+b*c end # 后输出 error 如图 4-2 所示:图 4-2五、总结通过本次试验,了解了语法分析的运行过程, 主程序大致流程为: “置初值” 调用 scaner函数读下一个单词符号 调用 IrParse 结束。递归下降分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老旧街区节能减排改造技术方案
- 2024年临床执业医师试题预测试卷完美版附答案详解
- 2024年临床执业医师试题(全优)附答案详解
- 2024年火电电力职业鉴定试卷及参考答案详解【培优A卷】
- 2024年中医执业医师试题预测试卷附答案详解(预热题)
- 2024年自考专业(汉语言文学)考试历年机考真题集含答案详解(新)
- 2023年度粮油食品检验人员每日一练试卷及参考答案详解(典型题)
- 2025自考专业(护理)试题附参考答案详解【预热题】
- 2024-2025学年遵义医药高等专科学校妇产护理期末模拟试题含答案详解【考试直接用】
- 浙江绍兴市卫生健康委员会选调事业单位工作人员笔试备考题库参考答案详解
- GB 14930.2-2025食品安全国家标准消毒剂
- 《食品专业英语》课件-1 Food+Processing-+An+Overview
- 生产计划与调度操作手册
- 食品防欺诈培训课件
- 全过程跟踪审计实施方案
- 2025年下半年教师资格证考试《小学教育教学知识与能力》密押真题卷
- 职业技术学院《农业生态与环境保护》课专业课程标准
- 室内墙体拆除合同全文
- 食品保质期验证报告范文
- 院士专家工作站合作建站协议书范本
- 江苏苏州历年中考语文现代文之散文阅读13篇(截至2024年)
评论
0/150
提交评论