词法分析器报告

实验一、词法分析实验

专业 商业软件工程   姓名 陈子翔 学号 201506110223

一、        实验目的

 

编制一个词法分析程序。

二、        实验内容和要求

 

输入:源程序字符串;输出:二元组(种别,单词本身)。

三、        实验方法、步骤及结果测试

 

源程序名:词法分析.c,词法分析.exe

原理分析及流程图

原理主要根据老师给的表格

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

主要程序段及其解释:

  1. 1.      int i;
  2. 2.      char s[100];/*定义一个数组用来存放输入的字符*/
  3. 3.      printf("请输入字符串:");
  4. 4.      scanf("%s",&s);
  5. 5.      for(i=0;i<100;i++)
  6. 6.      {
  7. 7.      if(s[i]==‘b‘&&s[i+1]==‘e‘&&s[i+2]==‘g‘&&s[i+3]==‘i‘&&s[i+4]==‘n‘)/*通过一个个字符来识别是否为我们需要的单词字符*/
  8. 8.      printf("1 , begin\n");/*输出格式主要为种别码,单词字符*/
  9. 9.      else if(s[i]==‘i‘&&s[i+1]==‘f‘)
  10. 10.  printf("2 , if\n");
  11. 11.  else if(s[i]==‘t‘&&s[i+1]==‘h‘&&s[i+2]==‘e‘&&s[i+3]==‘n‘)
  12. 12.  printf("3 , then\n");
  13. 13.  else if(s[i]==‘w‘&&s[i+1]==‘h‘&&s[i+2]==‘i‘&&s[i+3]==‘l‘&&s[i+4]==‘e‘)
  14. 14.  printf("4 , while\n");
  15. 15.  else if(s[i]==‘d‘&&s[i+1]==‘o‘)
  16. 16.  printf("5 , do\n");
  17. 17.  else if(s[i]==‘e‘&&s[i+1]==‘n‘&&s[i+2]==‘d‘)
  18. 18.  printf("6 , end\n");
  19. 19.  else if(s[i]==‘l‘&&s[i+1]==‘(‘&&s[i+2]==‘l‘&&s[i+3]==‘|‘&&s[i+3]==‘d‘&&s[i+3]==‘)‘&&s[i+4]==‘*‘)
  20. 20.  printf("10 , l(l|d)*\n");
  21. 21.  else if(s[i]==‘d‘&&s[i+1]==‘d‘&&s[i+2]==‘*‘)
  22. 22.  printf("11 , dd*\n");
  23. 23.  else if(s[i]==‘-‘)
  24. 24.  printf("14 , -\n");
  25. 25.  else if(s[i]==‘*‘)
  26. 26.  printf("15 , *\n");
  27. 27.  else if(s[i]==‘/‘)
  28. 28.  printf("16 , /\n");
  29. 29.  else if(s[i]==‘:‘&&s[i+1]!=‘=‘)
  30. 30.  printf("17 , :\n");
  31. 31.  else if(s[i]==‘:‘&&s[i+1]==‘=‘)
  32. 32.  printf("18 , :=\n");
  33. 33.  else if(s[i]==‘<‘&&s[i+1]!=‘=‘&&s[i+1]!=‘>‘)
  34. 34.  printf("20 , <\n");
  35. 35.  else if(s[i]==‘<‘&&s[i+1]==‘=‘)
  36. 36.  printf("21 , <=\n");
  37. 37.  else if(s[i]==‘<‘&&s[i+1]==‘>‘)
  38. 38.  printf("22 , <>\n");
  39. 39.  else if(s[i]==‘>‘&&s[i+1]!=‘=‘)
  40. 40.  printf("23 , >\n");
  41. 41.  else if(s[i]==‘>‘&&s[i+1]==‘=‘)
  42. 42.  printf("24 , >=\n");
  43. 43.  else if(s[i]==‘=‘)
  44. 44.  printf("25 , =\n");
  45. 45.  else if(s[i]==‘;‘)
  46. 46.  printf("26 , ;\n");
  47. 47.  else if(s[i]==‘(‘)
  48. 48.  printf("27 , (\n");
  49. 49.  else if(s[i]==‘)‘)
  50. 50.  printf("28 , )\n");
  51. 51.  else if(s[i]==‘#‘)
  52. 52.  printf("0 , #\n");

运行结果及分析

四、        实验总结

这一次的实验依然是没有很好的做完整,其中一个很大的问题是,我输入了字符串能够正常识别但总会多出(((;这四个字符,目前问题尚未得到很好的解决。这是我第一次接触词法分析,虽然不是很理解词法分析的作用,但希望日后能够用好它。

时间: 2024-08-29 00:31:41

词法分析器报告的相关文章

构造可配置词法语法分析器生成器(上)

本文为笔者原创,转载请注明出处 http://blog.csdn.net/xinghongduo 前言 源程序在被编译为目标程序需要经过如下6个过程:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成.词法分析和语法分析是编译过程的初始阶段,是编译器的重要组成部分,早期相关理论和工具缺乏的环境下,编写词法语法分析器是很繁琐的事情.上世纪70年代,贝尔实验室的M. E. Lesk,E. Schmidt和Stephen C. Johnson分别为Unix系统编写了词法分析器生成器Le

词法分析器实验报告

一.        实验目的 编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节. 二.        实验内容和要求 实验内容: 对字符串表示的源程序,从左到右进行扫描和分解.根据词法规则,识别出一个一个具有独立意义的单词符号,以供语法分析之用,若发现词法错误,则返回出错信息. 实验要求: 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三.        实验方法.步骤及结果测试  1.      源程序名:cffx.cpp 可执

词法分析实验报告

词法分析实验报告 一.        实验目的 编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节. 二.        实验内容和要求 实验内容: 对字符串表示的源程序,从左到右进行扫描和分解.根据词法规则,识别出一个一个具有独立意义的单词符号,以供语法分析之用,若发现词法错误,则返回出错信息. 实验要求: 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三. 实验方法.步骤及结果测试 源程序名:压缩包文件(rar或zip)中源程序

词法分析器代码复审

1.任务要求 ??·对同伴的作品进行代码复审,将对伙伴审查的结果以表格的形式博客中. 2.代码简介 ??·此次博客审查的代码由李云辉同学编写,项目名称为:词法分析器,代码目的是将计算机科学中字符序列转换为单词序列,供语法分析器调用. 3.代码地址 coding.net可运行完整代码地址 4.项目代码 // // main.cpp // cffxq // // Created by LiYuNhUi on 2018/4/8. // Copyright ? 2018年 LiYuNhUi. All r

爱奇艺、优酷、腾讯视频竞品分析报告2016(一)

1 背景 1.1 行业背景 1.1.1 移动端网民规模过半,使用时长份额超PC端 2016年1月22日,中国互联网络信息中心 (CNNIC)发布第37次<中国互联网络发展状况统计报告>,报告显示,网民的上网设备正在向手机端集中,手机成为拉动网民规模增长的主要因素.截至2015年12月,我国手机网民规模达6.20亿,有90.1%的网民通过手机上网. 图 1  2013Q1~2015Q3在线视频移动端和PC端有效使用时长份额对比 根据艾瑞网民行为监测系统iUserTracker及mUserTrac

广外第二周的实验报告来这里分享一下

虽然有很多还不知道怎么改,可能也有很多测试不到的地方,但是通过这个星期我好歹了解了好多东西啊 实验报告 通过本次学习,能了解到VC6.0.是用于将已生成的C++语言源程序代码转换为计算机能读懂的目标代码,计算机用的均是二进制代码.编辑完成后它首先生成扩展名为obj的文件(程序编译后的二进制文件),若想进行之后的链接.运行过程,必须不断修改源程序文件至完全正确. 在文件→新建→源代码这里可以新建源代码:新建→打开项目或文件中可以打开以前写过的源代码或者程序:运行→编译中即把所打源文件转换为二进制代

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

2017全国两会政府工作报告(全文)

2017全国两会政府工作报告(全文) "两会"并不是一个特定的机构名称,而是对自1959年以来历年召开的"中华人民共和国全国人民代表大会"和"中国人民政治协商会议"的统称.由于两场会议会期基本重合,而且对于国家运作的重要程度都非常的高,故简称做"两会".下面一起来阅读2017年政府两会工作报告! 2017年两会政府工作报告 --2017年3月5日在第十二届全国人民代表大会第五次会议上 国务院总理 李克强 各位代表,现在,我代表

jmeter+ant+jenkins+mac报告优化

一.在上篇博客中生成的报告有两个问题: 1.date not defined 2.Min Time和Max Time显示成了NaN 二.Jmeter+Ant报告生成原理: 在解决问题之前,让我们先弄清楚Jmeter+Ant是生成报告的原理,知道原理后我们就可以很从容的解决问题了.另外,如果后续我们想定制报告也就很容易了. 1.在Jmeter的extras目录下,官方已经为我们提供了一个现成的实例,我们只需要在该目录下执行ant命令就可以生成一个数据文件Test.jtl和一个报告Test.html