编译原理词法分析实验C语言实现.docVIP

  • 19
  • 0
  • 约1.46万字
  • 约 8页
  • 2016-06-20 发布于重庆
  • 举报
编译原理词法分析实验C语言实现

编译原理词法分析器实验报告 2009~2010学年 第二学期 2007级 软件工程专业 班级 学号 姓名:应慧杰 实验目的: 结合课堂上学习的理论知识,通过C++实现词法分析器,更加深入的掌握词法分析;同时也可以更加了解词法分析的原理。 实验过程: 1、主程序分析: 程序一开始要求读入一个文本文件,然后判定该文本文件是否成功打开和读入,然后进行词法分析; 2、词法分析过程: 根据输入单词的第一个有效字符(有时还需读第二个字符),判断单词类,产生类号。对于标识符和常数,需分别与标识符表和常数表中已登记的元素相比较,比较之后输出结果。 3、实验过程中的问题: 一开始实验很生疏,很难把理论知识融汇到编程上,后来通过多次看PPT和书本内容,渐渐把握到诀窍; 不明确输入输出;这个也是通过PPT解决; 和以前编其他东西很不一样,一开始不知道如何下手;通过网上的成熟代码学习了下。 4、实验代码: #include stdio.h #include stdlib.h #include string.h #include ctype.h #include malloc.h #include conio.h #define NULL 0 FILE *fp; char ch; char *keyword[34]={auto,break,case,char,const,continue,default,do,double, else,enum,extern,float,for,goto,if,int,long,register, return,short,signed,sizeof,static,struct,switch,typedef, printf, union,unsigned,void,volatile,while,main}; char *operatornum[6]={+,-,*,/,++,--}; char *comparison[8]={,=,=,,=,,==,!=}; char *interpunction[8]={,,;,:=,.,(,),{,}}; char *biaoshifu[6]={%,$,^,,_,#};//特殊标识符 char *zhushifu[3]={//,/*,*/};//注释符 char *luoji[3]={,||,!};//逻辑运算符 ////////////////////////////////////////////////////////////////////////////////////////// bool search(char searchstr[],int wordtype) { int i; switch (wordtype) { case 1:for(i=0;i=33;i++) { if(strcmp(keyword[i],searchstr)==0) return(true); } case 2:{ for(i=0;i=5;i++) { if(strcmp(operatornum[i],searchstr)==0) return(true); } break; } case 3: { for(i=0;i=7;i++) { if(strcmp(comparison[i],searchstr)==0) return(true); } break; } case 4: for(i=0;i=7;i++) { if(strcmp(interpunction[i],searchstr)==0) return(true); } break; case 5: for(i=0;i=5;i++) { if(strcmp(biaoshifu[i],searchstr)==0) return(true); }break; case 6: for(i=0;i=2;i++) { if(strcmp(zhushifu[i],searchstr)==0) return(true); }break; case 7: for(i=0;i=2;i++) { if(strcmp(luoji[i],searchstr)==0) return(true); }break; } return(false); } ////////////////////////

文档评论(0)

1亿VIP精品文档

相关文档