201506110248 ---实验报告

实验报告一

一、 实验目的

编制一个词法分析程序。

二、 实验内容和要求

输入:源程序字符串。

输出:二元组(种别,单词符号本身)。

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

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把字符数组里的字符输出;否则的为标识符。

体会:通过在编程中不断的发现问题,然后不断的解决,使自己更加熟练的掌握编程的思想。
时间: 2024-10-08 17:22:14

201506110248 ---实验报告的相关文章

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

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

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

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

词法分析实验报告

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

DAY01 WINDOWS 实验报告

DAY 01   Windows 实验一 实验名称:虚拟机的安装以及win7系统的安装 实验描述:学习安装虚拟机,以及安装不同的系统,可以满足用户不同时期的不同的需求 实验步骤: 步骤1:点击开始-选择vmware文件夹-点击Vmware Workstation                             步骤2:点击文件-新建虚拟机-下一步-选择客户机操作系统和版本-选择虚拟机安装位置-设置虚拟机的处理器.内存等信息-完成虚拟机裸机的安装 步骤3:点击编辑虚拟器-双击CD/DVD(

DAY02 WINDOWS 实验报告

实验一 实验名称: ghost做系统的备份与还原 实验描述:对系统进行备份,可以使用户在电脑中病毒或出故障后,可以还原到一个比较纯净的系统环境 实验步骤: 步骤1:点击编辑虚拟机设置-CD/DVD-选择镜像文件-选择超级急救箱 步骤2:启动虚拟机-进入资源管理器-运行超级急救箱安装文件 步骤3:重启系统-选择超级急救箱-选择ghost32 for winpe 步骤4:进入PE系统以后,点击ghost32程序-选择local->partition->To image-下一步-选择要备份的分区-选

数据结构与算法 第四次实验报告 图

数据结构与算法 第四次实验报告 姓名:许恺 学号:2014011329 班级:计算机14-1     中国石油大学(北京)计算机科学与技术系 1.图的定义,文件为"Graph.h" #ifndef GRAPH_H//定义头文件 #define GRAPH_H #include<string>//引入标准库中的头文件 using namespace std; const int MaxSize=12; struct ArcNode//定义边表结点 { int adjvex;/

《信息安全系统设计基础》第二次实验实验报告

<信息安全系统设计基础>实验二实验报告 实验报告封面 实验目的与要求 解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux 环境下串行程序设计的基本方法. 掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用.学习使用多线程来完成串口的收发处理. 熟悉linux开发环境,学会基于S3C2410的linux开发环境的配置和使用.使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程 实验步

《信息安全系统设计》第四次实验报告

实验报告:外设驱动设计 小组成员 :20145306张文锦,20145334赵文豪,20145331魏澍琛. 实验仪器:windows xp,arm开发板. 实验内容.步骤与体会 1. 进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器阅读理解源代码. 2. Makefile 中有两种编译方法,可以在本机上使用gcc:也可以使用交叉编译器进行编译. 如果编译的时候出现问题,需要是在/usr/src 下没有建立一个linux 连接,可以使用下面的命令:[[email

20145301《Java程序设计》实验报告一:Java开发环境的熟悉

20145301<Java程序设计>实验报告一:Java开发环境的熟悉 课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验.撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中可以得到什