文档详情

c词法分析器实验报告.doc

发布:2017-05-06约7.72千字共19页下载文档
文本预览下载声明
PAGE  PAGE 19 c词法分析器实验报告 篇一:词法分析器实验报告 实验报告 实验题目:词法分析器 院系班级:计科系0901班 姓名学号: 2009210603 实验时间:2011-10-21 设计。编制并调试一个词法分析程序,加深对词法分析原理的理解。 实验要求 设计出一个简单的词法分析程序,能够识别关键字(包含begin、if、end、 while、else、 then)、标识符、数字及数种符号(+、-、*、/、(、)、:、=、:=、#、gt;、lt;、lt;gt;、lt;=、gt;=、;)。返回并打印各类字符所对应的种类编码及该字符所组成的二元组。 算法设计流程图 # include lt;stdio.hgt; # include lt;string.hgt; # include lt;stdlib.hgt; # include lt;ctype.hgt; typedef struct { int num; char *word; }WORD; char token[255]=quot;quot;; char input[255]; int t=0; int i=0; char gjz[6][10]={quot;beginquot;,quot;ifquot;,quot;thenquot;,quot;whilequot;,quot;doquot;,quot;endquot;};char ch; WORD* start() { WORD*myword=new WORD; myword-gt;num=1; myword-gt;word=quot;quot;; t=0; ch=input[i]; i++; while(ch==#39; #39;||ch==10) { ch=input[i]; i++; } if (isalpha(ch)) { while(isalpha(ch)||isdigit(ch)) { token[t]=ch; t++; token[t]=#39;\0#39;; ch=input[i]; i++; } i--; int n=0; while(nlt;=6) { if(!strcmp(token,gjz[n])) { myword-gt;num=n+1;myword-gt;word=token;return myword; } n++; }//关键字 myword-gt;num=10; myword-gt;word=token; return(myword); }//标识符 else if(isdigit(ch)) { while (isdigit(ch)) { token[t]=ch; t++; token[t]=#39;\0#39;; ch=input[i]; i++; } i--; myword-gt;num=11; myword-gt;word=token; return(myword); }//数字 else switch(ch) { case#39;+#39;:myword-gt;num=13;myword-gt;word=quot;+quot;;return(myword);break; case#39;-#39;:myword-gt;num=14;myword-gt;word=quot;-quot;; return(myword);break; case#39;*#39;:myword-gt;num=15;myword-gt;word=quot;*quot;;return(myword);break; case#39;/#39;:myword-gt;num=16;myword-gt;word=quot;/quot;;return(myword);break; case#39;lt;#39;:ch=input[i]; i++; if(ch==#39;gt;#39;) { myword-gt;num=21; myword-gt;word=quot;lt;gt;quot;; return(myword);} else if (ch==#39;=#39;){ myword-gt;num=22; myword-gt;word=quot;lt;=quot;; return(myword);} i--; myword-gt;num=20;myword-gt;word=quot;lt;quot;;return(myword);break; case#39;gt;#39;:ch=input[i]; i++; if(ch==#39;=#39;) { myword-gt;num=24; myword-gt;word=quot;gt;=quot;; return(myword);} i-
显示全部
相似文档