已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 实 验 报 告课程名称: 编译原理 专业班级: 信息安全1302班 学 号: 姓 名: 报告日期: 2015年 11 月 11日 计算机科学与技术学院目录1 实验一21.1 实验目的21.2 实验要求21.3 词法分析的算法思想31.4 词法分析代码41.5 结果验证81.6 实验小结92 实验二102.1 实验目的102.2 实验要求102.3 语法分析的算法思想102.4 语法分析代码122.5 结果验证182.6 实验小结18 实验一 词法分析1.1 实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。1.2 实验要求1.2.1 待分析的简单语言的词法(1) 关键字: begin if then while do end所有的关键字都是小写。(2) 运算符和界符: = + - * / = = = ; ( ) #(3) 其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义:ID=letter(letter|digit)*NUM=digit digit*(4) 空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM、运算符、界符和关键字,词法分析阶段通常被忽略。1.2.2 各种单词符合对应的种别码 表1.各种单词符号对应的种别码单词符号 种别码单词符号种别码 begin1:17if2:=18then320while421do523lettet(letter|digit)*10=24dight dight* 11=25+13;26-14(27*15)28/16#01.2.3 词法分析程序的功能输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码; token为存放的单词自身字符串; sum为整形常数。1.3 词法分析程序的算法思想算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。1. 主程序示意图(1) 关键字表的初值。关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下。char *rwtab6=begin,if,then,while,do,end;置初值调用扫描子程序输出单词二元组输入串结束?结束YN(2) 程序中需要用到的主要变量为syn,token,sum。2. 扫描子程序的算法思想首先设置3个变量:token用来存放构成单词符号的字符串;sum用来存放整型单词;syn用来存放单词符号的种别码。扫描子程序的流程图如下图所示。1.4 词法分析代码#include#includechar prog80,token8,ch;int syn,p,m,n,sum;char *rwtab6=begin,if,then,while,do,end;scaner();main()FILE *fp;fp=fopen(1.txt,r);doch=fgetc(fp);progp+=ch;while(ch!=#);p=0;doscaner();switch(syn)case 11:printf(%-10d%5d)n,sum,syn);break;case -1:printf(you have input a wrong stringn);break;default:printf(%-10s%5d)n,token,syn);break;while(syn!=0);scaner();词法分析程序scaner()sum=0;for(m=0;m8;m+)tokenm+=NULL;ch=progp+;m=0;while(ch= )|(ch=n)ch=progp+;if(ch=a)|(ch=A)while(ch=a)|(ch=A)|(ch=0)tokenm+=ch;ch=progp+;p-;syn=10;for(n=0;n6;n+)if(strcmp(token,rwtabn)=0)syn=n+1;break;else if(ch=0)while(ch=0)sum=sum*10+ch-0;ch=progp+;p-;syn=11;else switch(ch)case :tokenm+=ch; ch=progp+; if(ch=) syn=24; tokenm+=ch; else syn=23; p-; break; case +:tokenm+=ch; ch=progp+;if(ch=+)syn=17;tokenm+=ch;elsesyn=13;p-;break;case -:tokenm+=ch; ch=progp+;if(ch=-)syn=29;tokenm+=ch;elsesyn=14;p-;break;case !:ch=progp+;if(ch=)syn=21;tokenm+=ch;elsesyn=31;p-;break;case =:tokenm+=ch; ch=progp+;if(ch=)syn=25;tokenm+=ch;elsesyn=18;p-;break;case *:syn=15; tokenm+=ch; break;case /:syn=16; tokenm+=ch; break;case (:syn=27; tokenm+=ch; break;case ):syn=28; tokenm+=ch; break;case :syn=5; tokenm+=ch; break;case :syn=6; tokenm+=ch; break;case ;:syn=26; tokenm+=ch; break;case #:syn=0; tokenm+=ch; break;case :syn=17; tokenm+=ch; break;default:syn=-1; break;tokenm+=0;1.5 结果验证对源程序begin x:=9; if x 0 then x:= 2* x + 1/3;end#的源文件,经词法分析后的结果为:1.6 实验小结词法分析的任务是对字符串表示的源程序从左到右地进行扫描和分解,根据语言的词法规则识别出一个一个具有独立意义的单词符号。通过实验,让我更加深刻地体会到了词法分析的原理和过程,通过编写C语言程序,也让我把词法分析的流程自己走了一遍,有了更加清晰的印象。 实验二 语法分析2.1实验目的编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。2.2实验要求利用C语言编制递归下降分析程序,并对简单语言进行语言分析。2.2.1 待分析的简单语言的语法用扩充的BNF表示如下:(1) :=beginend(2) :=;(3) :=(4) :=ID:=(5) :=+|-(6) :=*|/(7) :=ID|NUM|()2.2.2 实验要求说明输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”。2.3 语法分析程序的算法思想(1) 主程序示意图(2) 递归下降分析程序示意图 (3) 语句串分析过程示意图 (4) statement语句分析函数流程 Statement语句分析函数示意图 expression表达式分析函数示意图 term分析函数示意图 factor分析过程示意图2.4 语法分析的代码#include #include char prog100,token8,ch;char *rwtab6=begin,if,then,while,do,end;int syn,p,m,n,sum;int kk;factor();expression();yucu();term();statement();parser();scaner();main() p=kk=0; FILE *fp; fp=fopen(1.txt,r); do ch=fgetc(fp); progp+=ch; while(ch!=#); p=0; scaner(); parser();parser() if(syn=1) scaner(); yucu(); if(syn=6) scaner(); if(syn=0)&(kk=0) printf(successn); else if(kk!=1)printf(the string havent got a end!n); kk=1; else printf(havent got a begin!n); kk=1; return;yucu() statement(); while(syn=26) scaner(); if(syn!=6) statement(); return;statement() if(syn=10) scaner(); if(syn=18) scaner(); expression(); else printf(the sing:=is wrong!n); kk=1; else printf(wrong sentence!n); kk=1; return;expression() term(); while(syn=13)|(syn=14) scaner(); term(); return;term() factor(); while(syn=15)|(syn=16) scaner(); factor(); return;factor() if(syn=10)|(syn=11) scaner(); else if(syn=27) scaner(); expression(); 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;ch=progp+;m=0;while(ch= )ch=progp+;if(ch=a)|(ch=A)while(ch=a)|(ch=A)|(ch=0)tokenm+=ch;ch=progp+;p-;syn=10;tokenm+=0;for(n=0;n6;n+)if(strcmp(token,rwtabn)=0)syn=n+1;break;else if(ch=0)while(ch=0)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+; 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; case if:syn=2;break; case then:syn=3;break; case while:syn=4;break; case do:syn=5;break; case end:syn=6;break; case :=:syn=18;break;case :syn=21;break;case =:syn=24;break;default:syn=-1;break;2.5 结果验证在文件中输入begin a:=9;x:=2*3;b:=a+x end #在文件中输入x:=a+b*c end #在文件中输入begin x:=(a+b)*c #2.6 实验小结通过做了递归下降分析法的实验,我也走了一遍语法分析器的流程,我明白了递归下降分析法的基本思想是对文法中的每个非终结符编写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 溶剂蒸煮工安全知识竞赛能力考核试卷含答案
- 重介质制备回收工岗位改进考核试卷含答案
- 汽车装调工岗位晋升竞赛考核试卷含答案
- 高压水射流清洗工岗位环保知识考核试卷含答案
- 石油开采工岗位安全宣教考核试卷含答案
- 采油平台水手安全知识宣贯强化考核试卷含答案
- 电子电气产品环境试验检验员岗位综合专业考核试卷含答案
- 2026年小学三年级语文上册《滥竽充数》完整课时教案
- 2026年小学成语故事《负荆请罪》品格教育教学教案
- 2026年小学成语故事《痴人呓语》空想反思教学教案
- 2025鄂尔多斯市城市建设投资集团招聘92人笔试历年参考题库附带答案详解(3卷合一)
- 中职会计统计讲解
- 《家务劳动与管理》职业教育现代家政服务与管理专业全套教学课件
- 性别与社会政策的性别平等-洞察及研究
- 《休闲食品加工技术》 课件 9 糖果类休闲食品加工技术
- 高三月考总结主题班会通用课件
- 新的《道路交通安全法》及《实施条例》图解
- 云南大学呈贡校区学生退宿申请表(外住)
- 第一课我们爱劳动(课件)苏科版劳动一年级上册
- 机械制图识图培训资料课件
- 垃圾清运服务实施方案投标文件(技术方案)
评论
0/150
提交评论