实验报告一一、 实验目的编制一个词法分析程序。二、 实验内容和要求输入:源程序字符串。输出:二元组(种别,单词符号本身)。三、 实验方法、步骤及结果测试2.主要程序段及其解释:for(i=0;ch[i]!='\0';i++){if((ch[i]=='+')||(ch[i]=='=')||(ch[i]=='/')||(ch[i]=='*')||(ch[i]=='>=')||(ch[i]=='<=')||(ch[i]=='<')||(ch[i]=='>'))//判断字符是否为运算符;switch(ch[i]){case '+':printf("(2,%c)",ch[i]);printf("\n");break;case '-':printf("(3,%c)",ch[i]);printf("\n");break;case '*':printf("(4,%c)",ch[i]);printf("\n");break;case'/':printf("(5,%c)",ch[i]);printf("\n");break;                  case '<':printf("(6,%c)",ch[i]);printf("\n");break;case '<=':printf("(7,%c)",ch[i]);printf("\n");break;case'>':printf("(8,%c)",ch[i]);printf("\n");break;                     case '>=':printf("(9,%c)",ch[i]);printf("\n");break;case '=':printf("(11,%c)",ch[i]);printf("\n");break;default:break;}else if((ch[i]>=32)&&(ch[i]<=41)||(ch[i]=='.')||(ch[i]>=91&&ch[i]<=96)||(ch[i]==';')||(ch[i]=='?'))//判断字符是否为界符;switch(ch[i]){case '#':printf("(0,%c)",ch[i]);printf("\n");break;case ';':printf("(12,%c)",ch[i]);printf("\n");break;case '(':printf("(13,%c)",ch[i]);printf("\n");break;case ')':printf("(14,%c)",ch[i]);printf("\n");break;case '?':printf("(15,%c)",ch[i]);printf("\n");break;case '.':printf("(16,%c)",ch[i]);printf("\n");break;case ' ':printf("(17,%c)",ch[i]);printf("\n");break;case '"':printf("(18,%c)",ch[i]);printf("\n");break;case ',':printf("(19,%c)",ch[i]);printf("\n");break;default:printf("(35,%c)",ch[i]);printf("\n");break;}else  if(ch[i]>=48&&ch[i]<=57)//判断字符是否为常数;
{printf("(20,");//常数的种别码为28;for(;(ch[i]>=48&&ch[i]<=57);i++){printf("%c",ch[i]);//printf("%c",a[k]);
}i--;printf(")\n");}//memset(a,0,100);k=0;}else{if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z'))for(;((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z'));i++,j++){str[j]=ch[i];//把一整串字符赋值给str数组}i--;if(strcmp(str,"auto")==0|strcmp(str,"int")==0||strcmp(str,"do")==0||strcmp(str,"while")==0||            strcmp(str,"long")==0||strcmp(str,"short")==0||strcmp(str,"case")==0||(str,"switch")==0||        strcmp(str,"typedef")==0||(str,"const")==0||(str,"static")==0||strcmp(str,"double")==0||strcmp(str,"char")==0||(str,"return")==0)//判断字符是否为关键字
{printf("(1,%s)\n",str);memset(str,0,100); j=0;}else{//printf("(29,%s)\n",str);
printf("(10,%s)\n",str);memset(str,0,100); j=0;}}}}3.运行结果及分析四、 实验总结问题:不知道如何把关键字作为一个整体输出;解决方法:先把单个字符存在一个字符数组里,然后判断是否为关键字,如果是的话,用%s把字符数组里的字符输出;否则的为标识符。体会:通过在编程中不断的发现问题,然后不断的解决,使自己更加熟练的掌握编程的思想。

转载于:https://www.cnblogs.com/YY0302/p/6144269.html

201506110248 ---实验报告相关推荐

  1. 2019春第二次课程设计实验报告

    2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...

  2. JAVA第二次验证设计性实验报告

    [实验任务一]:素数输出 (3)实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 1.   实验内容 (1)计算并输出3~100之间的素数. (2)编程满足下列要 ...

  3. 计算机网络实验报告建立校园网,计算机网络实验报告

    设计性实验报告 一.实验目的 通过对网络设备的连通和对拓扑的分析,加深对常见典型局域网拓扑的理解:通过路由建立起网络之间的连接,熟悉交换机.路由器的基本操作命令,了解网络路由的设计与配置. 二.背景描 ...

  4. c语言链表最高响应比优先,操作系统--最高响应比优先调度算法实验报告..doc

    操作系统--最高响应比优先调度算法实验报告. 进程调度一.实验题目与要求 编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法.实现具体包括:首先确定作业控制块的内容和组成方式:然 ...

  5. 计算机网络实验可变长子网掩码,计算机网络实验3-子网掩码与划分子网实验报告.docx...

    PAGE PAGE # / 5 上机实验报告三 -.实验目的 (1 )掌握子网掩码的算法. 了解网关的作用. 熟悉模拟软件 packet tracer5.3的使用. 二.实验内容 1.( 1) 172 ...

  6. 实验报告Linux操作系统基本命令,linux操作系统实验报告全部.doc

    linux操作系统实验报告全部 计算机操作系统 实验报告 学 号:姓 名:提交日期:2014.12.15成 绩: 东北大学秦皇岛分校 [实验题目]熟悉Linux/UNIX操作系统[实验目的]1.熟悉L ...

  7. 递归下降文法C语言实验报告,递归下降语法分析器实验报告.doc

    递归下降语法分析器实验报告 编译原理实验报告 题目: 递归下降语法分析器 学 院 计算机科学与技术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 宁剑 指导教师 ...

  8. labview简易计算机实验报告,labview实验报告..doc

    学院:电气工程学院 班级:自112班 姓名:何富裕 学号:1112011060 实验一 一.实验目的 熟悉LabVIEW软件的基本编程环境. 二.实验内容 创建并保存一个VI程序.此VI要实现的功能是 ...

  9. c语言实验报告管理系统,C语言实验报告-学生信息资管理系统.doc

    C语言实验报告-学生信息资管理系统 C语言实验报告 院系: 数学与计算科学学院 班级: 信息与计算科学2班 姓名: 学号: 2011年12月21日 一.问题描述 编写一个信息管理系统,包括姓名.性别. ...

最新文章

  1. 不少Java程序员都觉得Lambda表达式很鸡肋,它到底有何用呢?
  2. 构建Chua 混沌电路 - 基本测试
  3. Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API
  4. 【项目管理】PMO-为强大的收益实现演变
  5. QT集成QML和JavaScript
  6. HBase的布隆过滤器详解
  7. 开源数字媒体资产管理系统:Razuna安装方法
  8. Proguard 混淆之乱谈 3 混淆模板
  9. 简单线性回归的应用及画图(一)
  10. “运行时错误‘339‘部件‘flash8.ocx‘或其附件之一不能正确注册:一个文件丢失或无效“的一种解决办法!
  11. android 自定义太阳,第一个AOSP安卓10自定义ROM已经可用,并且非常稳定
  12. 一个电源工程师要学哪些软件?
  13. chua系统matlab代码
  14. 聊聊手机之--小米6
  15. html5移动开发是什么意思,移动端什么意思?
  16. jump label
  17. 珠海横琴凯悦酒店开业
  18. Web网页分享到新浪微博与QQ空间链接
  19. CNN-台大李宏毅学习笔记
  20. 计算机语言学国外排名,美国语言学专业排名

热门文章

  1. 前端市场现在是不是饱和了?
  2. 如何用excle制作黑人拉馆_小编教你如何用装机吧制作u盘启动盘
  3. 三星内存编码_内存条上面的编码的含义
  4. 计算机三级标题,计算机三级考试题目
  5. 两台电脑怎么共享_怎么在电脑上创建共享文件(必须是在同一个网段)
  6. linux 移动一行到指定行,linux – 移动行以跟随文件中的另一行
  7. call需要多大带宽 video_KCP TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的是充分利用带宽。而KCP是为流速设计的(单个数据包从一端发送到一端需要多少时间)...
  8. android viewholder里面不执行控件_ViewHolder的MVVM实现
  9. android o 编译及运行,【转】实践最有效的提高Android Studio运行、编译速度方案
  10. STM32F103基本定时器使用