收藏 分享(赏)

合肥工业大学编译原理实验报告(完整代码版).doc

上传人:春华秋实 文档编号:3677799 上传时间:2018-11-15 格式:DOC 页数:32 大小:227KB
下载 相关 举报
合肥工业大学编译原理实验报告(完整代码版).doc_第1页
第1页 / 共32页
合肥工业大学编译原理实验报告(完整代码版).doc_第2页
第2页 / 共32页
合肥工业大学编译原理实验报告(完整代码版).doc_第3页
第3页 / 共32页
合肥工业大学编译原理实验报告(完整代码版).doc_第4页
第4页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、.计算机与信息学院编译原理 实验报告专 业 班 级信息安全 13-1 班 学生姓名及学号马骏 2013211869 课程教学班号任 课 教 师李宏芒 实验指导教师李宏芒 实验地点实验楼机房 2015 2016 学年第 二 学期.实验 1 词法分析设计一、 实验目的通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用二、 实验要求1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。 2、将标识符填写的相应符号表须提供给编译程序的以后各阶段使用。 3、根据测试数据进行测试。测试

2、实例应包括以下三个部分: 全部合法的输入。 各种组合的非法输入。 由记号组成的句子。 4、词法分析程序设计要求输出形式: 例:输入 VC+语言的实例程序: If i=0 then n+; a= 3b %); 输出形式为: 单词 二元序列 类 型 位置(行,列) (单词种别,单词属性) for (1,for ) 关键字 (1,1) i ( 6,i ) 标识符 (1,2) = ( 4,= ) 关系运算符 (1,3) 12 0 ( 5,0 ) 常数 (1,4) then ( 1,then) 关键字 (1,5) n (6,n ) 标识符 (1,6) + Error Error (1,7) ; ( 2,

3、 ; ) 分界符 (1,8) a (6,a ) 标识符 (2,1) = (4,#include#include#include using namespace std;const char* salaryfile=“salaryfile.txt“;const int max=40;string idmax=“do“,“end“,“for“,“if“,“printf“,“scanf“,“then“,“while“;/关键字表string smax=“,“,“;“,“(“,“)“,“,“,“+“,“-“,“*“,“/“,“,“=“,“ppword)/按照空格分割字符串split(ppword);/

4、*int begin = 0;/去掉字符串的所有空格begin = pp.find(“ “,begin); /查找空格在 str 中第一次出现的位置while(begin != -1) /表示字符串中存在空格pp.replace(begin, 1, “); / 用空串替换 str 中从 begin 开始的 1 个字符begin = pp.find(“ “,begin); /查找空格在替换后的 str 中第一次出现的位置*/./ coutTG (2)G-+TG|TG (3)G- (4)T-FS (5)S-*FS|/FS (6)S- (7)F-(E) (8)F-i 三、实验内容根据某一文法编制调试

5、 LL ( 1 )分析程序,以便对任意输入的符号.串进行分析。 构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序。 分析法的功能是利用 LL(1)控制程序根据显示栈栈顶内容、向前看符号以及 LL(1)分析表,对输入符号串自上而下的分析过程。 四、实验步骤1、根据流程图编写出各个模块的源程序代码上机调试。 2、 编制好源程序后,设计若干用例对系统进行全面的上机测试,并通过所设计的 LL(1)分析程序;直至能够得到完全满意的结果。 3、书写实验报告 ;实验报告正文的内容: 写出 LL(1)分析法的思想及写出符合 LL(1)分析法的文法。 程序结构描述:函数调用格式、参数含义、

6、返回值描述、函数功能;函数之间的调用关系图。 详细的算法描述(程序执行流程图) 。 给出软件的测试方法和测试结果。 实验总结 (设计的特点、不足、收获与体会) 。 五、实验截图6、核心代码#include.#includeusing namespace std;string pp;/输出字符串string hh=“rn“;/换行const int max=50;int endfumax;/终止符序号表int endfupointer=8;char endfurealmax=+,-,*,/,(,i,),#;int unendfumax;int unendfupointer=5;char unen

7、dfurealmax=E,G,T,S,F;string makemathmax=“E-TG“,“G-+TG“,“G-TG“,“G-$“,“T-FS“,“S-*FS“,“S-/FS“,“S-$“,“F-(E)“,“F-i“;/0 E-TG,1 G-+TG,2 G-TG,3 G-$,4 T-FS,5 S-*FS,6 S-/FS,7 S-$,8 F-(E),9 F-i/$代表空串string behaviormax=“初始化“,“POP“;int smarttablemaxmax;/分析表int checkendfu(char fu)/查终结符序号int x;for(x=0;xstr;.int x,

8、y;for(x=0;xenter;/enter=“i+i*i#“;enter=str;/enter=“(i)#“;int count=0;/步骤char buffer1max;sprintf(buffer1,“%d“,count);string s1=buffer1;pp=pp+s1+“ “;/分析栈for(int qq1=0;qq12;y-)pp=pp+readyiny;.pp=pp+“)“+hh;/ cout2;y-)/ cout E+T (2)E-T (3)T- T*F (4)T-F (5)F- (E) (6)F- i 四、实验步骤1、根据流程图编写出各个模块的源程序代码上机调试。 2、

9、编制好源程序后,设计若干用例对系统进行全面的上机测试,并通过所设计的 LR(1)语法分析程序;直至能够得到完全满意的结果。 3、书写实验报告 ;实验报告正文的内容: 描述 LR(1)语法分析程序的设计思想。 程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;函数之间的调用关系图。 详细的算法描述(程序执行流程图) 。 给出软件的测试方法和测试结果。 五、实验截图.6、核心代码#include#includeusing namespace std;int count=1;string pp;/输出字符串string hh=“rn“;/换行const int max=100;char e

10、ndfurealmax=i,+,*,(,),#,E,T,F;int endfupointer=8;string creatwordmax=“E-E+T“,“E-T“,“T-T*F“,“T-F“,“F-(E)“,“F-i“;/(0)E- E+T(1)E-T (2)T- T*F (3)T-F (4)F- (E) (5)F- i /注意 rj 时 j 应对应数组下标int checkendfu(char fu)/查终结符序号int x;for(x=0;xstr;/0=i 1=+ 2=* 3=( 4=) 5=# 6=E 7=T 8=Fsmarttable00.action(0,5);smarttabl

11、e03.action(0,4);smarttable06.action(3,1);smarttable07.action(3,2);smarttable08.action(3,3);smarttable11.action(0,6);smarttable15.action(2,0);smarttable21.action(1,1);smarttable22.action(0,7);smarttable24.action(1,1);smarttable25.action(1,1);smarttable31.action(1,3);smarttable32.action(1,3);smarttabl

12、e34.action(1,3);smarttable35.action(1,3);smarttable40.action(0,5);smarttable43.action(0,4);smarttable46.action(3,8);smarttable47.action(3,2);smarttable48.action(3,3);smarttable51.action(1,5);smarttable52.action(1,5);smarttable54.action(1,5);smarttable55.action(1,5);smarttable60.action(0,5);smarttable63.action(0,4);smarttable67.action(3,9);smarttable68.action(3,3);smarttable70.action(0,5);smarttable73.action(0,4);smarttable78.action(3,10);smarttable81.action(0,6);smarttable84.action(0,11);smarttable91.action(1,0);smarttable92.action(0,7);smarttable94.action(1,0);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 规范标准 > 实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报