《合肥工业大学编译原理实验报告(完整代码版)》由会员分享,可在线阅读,更多相关《合肥工业大学编译原理实验报告(完整代码版)(58页珍藏版)》请在人人文库网上搜索。

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

2、种组合的非法输入。由记号组成的句子。4、词法分析程序设计要求输出形式:例:输入VC+语言的实例程序:If i=0 the nn+;a#in clude#in clude#i nclude using n amespace std;const char* salaryfile=salaryfile.txt;const int max=40;关键字stri ng idmax=do,e nd,for,if,pri ntf,sca nf,the n,while;表stri ngsmax=界符表算数运算符表关系运算符表string kmax;/ 标识符string cimax;/ 常数int fjfpo。

3、int=5;/ 分界符表尾int mathpoint=9;/ 算数运算符表尾int cipointer=0;/ 常数表尾int idpointer=0;/ 关键字表尾int kpointer=0;/ 标识符表尾int fjf;/0 不是分界符 1 是int rowy=1;/ 识别输入行位置int rowx=1;/ 识别输入列位置int outkey=0;/ 打印控制 0 为数字后有字母 其他可以void searcht(int i,string m)/ 根据已识别的首字母识别字符串 / cout5&x9&x=48&t64&t96&t64&sx96&sx=48&sx0&sx=46&sign=1)。

4、/ 判断数字后跟字母还是字母后有数字if(i=0)if(sx=48&sx=48&sx0)/ cout0&(sx-164&sx-196&sx-1=48&sx-10)/ cout64&sx+196&sx+1=48&sx+164&sx-196&sx-1=48&sx-10)sn=s.substr(x-i,i);/ cout=48&t64&t96&tnoskipws;if(!inputfile)coutppword)/ 按照空格分割字符串 split(ppword);/*int begin = 0;/ 去掉字符串的所有空格begin = pp.find( ,begin);/ 查找空格在 str 中第一次。

5、出现的位置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三、实验容根据某一文法编制调试 LL (1 )分析程序,以便对任意输入的符号串进行分析。构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的 分析程序。分析。

6、法的功能是利用LL (1)控制程序根据显示栈栈顶容、向前看符号 以及LL( 1)分析表,对输入符号串自上而下的分析过程。四、实验步骤1、根据流程图编写出各个模块的源程序代码上机调试。2、编制好源程序后,设计若干用例对系统进行全面的上机测试, 并通过所设计 的LL(1分析程序;直至能够得到完全满意的结果。3、书写实验报告;实验报告正文的容:写出LL( 1)分析法的思想及写出符合 LL( 1)分析法的文法。程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;函数之间的调用关系图。详细的算法描述(程序执行流程图)。给出软件的测试方法和测试结果。实验总结(设计的特点、不足、收获与体会)。五、实。

7、验截图Word文档 | * D c - -k docum ents5TZJtDeoLjgb i s nyi22.eze叵1却hel+i*irtHEi+i*i4E-TGPOP,PUSH(GrnciT-FSpop,push(spHN38FF-iPOP,PUSH(i41*1GETNEXT(l)ttGSs-$POP,PUSHC$UGG-+TGPOP,PUSH(Gr+BGI +GETNEXTCIflGIi*ittT-JFSPOP,PUSHCGFttCSFi*ittF-1POP,PUSHCi19ttGSiGETNEXTCI11GS*ittS-*FSPOP,PUll12#GSF*ittGETNEXTCI13。

8、#GSFiUF-iPOPFPUSH14ttGSimGETNEXTCI祐SOSts-5FOP. PUSHttGtG-$POP.PUSH17tttsuces?ed! f!?over!f!?匚to cvntiiu?六、核心代码#in clude#in cludeusing n amespace std;string pp;输出字符串stri ng hh=rn;换行const int max=50;int en dfumax; 终止符序号表int en dfupo in ter=8;char e ndfurealmax=+,-,*,7,(,i,),#;int unen dfumax;int unen 。

9、dfupo in ter=5;char unen dfurealmax=E,G,T,S,F;Word文档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-$,8F-(E),9 F-i/$ 代表空串string behaviormax= 初始化 ,POP;int smarttablemaxmax;/ 分析表int checkendfu(char fu)/ 查终结符序号int x;for(x=0;x。

10、str;int x,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。

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

12、ax=i,+,*,(,),#,E,T,F;int en dfupo in ter=8;Word文档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);smarttable03.actio。

13、n(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);smarttable34.actio。

14、n(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.actio。

15、n(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);smarttable95.action(1,0);smarttable101.ac。

16、tion(1,2);smarttable102.action(1,2);smarttable104.action(1,2);smarttable105.action(1,2);smarttable111.action(1,4);smarttable112.action(1,4);smarttable114.action(1,4);smarttable115.action(1,4);string enter=str;int i;int x;stylebox st;readybox ready;for(i=0;ienter.length();)/ coutenter: enteriendl;x=program(st,ready,enteri,i,enter,1);if(x=1)i+;if(x=2)/ coutAcc: 分析成功 endl;pp=pp+Acc: 分析成功 +hh;break;if(x=4。

编译原理上机实习c语言小子集编译程序的实现报告,合肥工业大学编译原理实验报告(完整代码版)...相关推荐

  1. 编译原理上机实习c语言小子集编译程序的实现报告,编译原理上机实习指导书(2015-11修改).pdf...

    <编译原理上机实习>指导书 一.上机实习目的 理解编译程序的构造原理,掌握编译程序的构造方法与技术.通过实习,使学生既加深对 编译原理基础理论的理解,又提高动手能力,特别是提高软件设计能力 ...

  2. c语言小子集,C语言小子集的词法分析程序

    <C语言小子集的词法分析程序>由会员分享,可在线阅读,更多相关<C语言小子集的词法分析程序(10页珍藏版)>请在人人文库网上搜索. 1.沈阳航空航天大学上 机 实 验 报 告实 ...

  3. 微型计算机原理实验指导书,微机原理实验实验指导书2015.pdf

    微机原理实验实验指导书2015 微型计算机原理与应用 实验指导书 上 海 大 学 通 信 学 院 2015 年 3 月 实验一 8051 单片机简单编程与调试 一.实验目的 通过简单小程序的输入和调试 ...

  4. c语言设计匀速直线运动,C语言课程设计指导书2015版(试用版)201506.doc

    C语言课程设计指导书2015版(试用版)201506精选 C语言课程设计 指导书 信息技术教学与实验中心 2015-04 目 录 第1章 C语言课程设计基本要求-------------- 1 §1. ...

  5. c语言函数与编译预处理教学视频,C语言课程第6章 函数及编译预处理.ppt

    C语言课程第6章 函数及编译预处理 6.1模块化程序设计与函数 在设计较复杂的程序时,我们一般采用的方法是:把问题分成几个部分,每部分又可分成更细的若干小部分,逐步细化,直至分解成很容易求解的小问题. ...

  6. c语言程序设计书实验电子版,C语言程序设计实验指导书(学生用书)-修订版.pdf

    C语言程序设计 实验指导书 (试用版) 华中科技大学计算机学院 2004年3月 编写说明 C语言程序设计的上机实验是进一步深刻了解C语言的语法.语义,掌握用 C语言进行初步程序设计所需要的方法和技能的 ...

  7. C语言中单引号 39 97 39,C語言程序设计实验指导书.doc

    C語言程序设计实验指导书 C语言程序设计 实验指导书 ? ? ? ? ? ? ? 计算机学院计算机科学教研室 武汉科技大学 2005年 ? ? 实验一 Turbo C编译环境的使用 [实验目的] 1. ...

  8. c语言 运行经过八个翻译阶段,GitHub - BUAA-SE-Compiling/miniplc0-handbook: miniplc0 指导书...

    miniplc0 实验指导书 1. 概述 本指导书为 miniplc0 指导书. 由于本指导书还只是一个 beta 版本,因此很可能存在一些错误,如果你发现本书中有以下问题 逻辑性/知识性错误 表意模 ...

  9. 三极管工作原理_「硬见小百科」半导体三极管的工作原理

    PNP型半导体三极管和NPN型半导体三极管的基本工作原理完全一样,下面以NPN型半导体三极管为例来说明其内部的电流传输过程,进而介绍它的工作原理.半导体三极管常用的连接电路如图15-3(a)所示.半导 ...

最新文章

  1. 一小段jQuery代码的分析与优化
  2. TThread深入分析
  3. 刷题总结——魔法森林(bzoj3669)
  4. 使用JBoss Modules来模块化Java
  5. lintcode: 把排序数组转换为高度最小的二叉搜索树
  6. html里table的scope,HTML表格的运用
  7. Spring Cloud 学习笔记(一) 之服务治理模块Spring Cloud Eureka 搭建注册中心
  8. 折半查找(非递归与递归实现)
  9. MacBook运行C++,不用安装任何软件
  10. 智能指针变量做函数参数的一个值得注意的地方
  11. Go:表驱动单元测试
  12. Andrew Ng机器学习公开课笔记 -- 朴素贝叶斯算法
  13. 启动 AXD 配置开发板
  14. 【牛客】3002 G-eli和字符串
  15. 运动酒店,如何“奇袭”文旅产业精准蓝海赛道——缤跃酒店
  16. 基于云开发的微信小程序:个人相册ByUestcXiye
  17. Java笔记--基础篇
  18. eve虚拟机服务器如何配置,EVE-NG在VMware Workstations环境部署 | IT运维网
  19. 研究生英语复习(一)
  20. albus就是要第一个出场

热门文章

  1. 软件测试文档结课论文,软件测试课程论文设计报告.docx
  2. centos安装php zip,如何使用CentOS 7在PHP 7.2上安装zipArchive?
  3. 哈工大计算机学院计算机组成原理,哈工大威海计算机学院计算机组成原理.ppt...
  4. 安装facebook/wdt备忘
  5. C# 实现对接钉钉回调事件(语言不重要,主要是思路)
  6. vulnhub symfonos: 3.1
  7. 关于emoji表情在Qt
  8. Python中的标准库函数(内置函数)print()输出(打印出)字符串的常见用法
  9. CSS3咖啡制作全过程动画
  10. 奈何本人没文化,一句卧槽行天下