C语言词法分析器.doc_第1页
C语言词法分析器.doc_第2页
C语言词法分析器.doc_第3页
C语言词法分析器.doc_第4页
C语言词法分析器.doc_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

b2a3fdebdafb4953e416061301ac9dcc.pdf 2008-06-12周宏C语言词法分析器一,实验目的 1加强对词法分析原理、方法和基本实现技术的理解;2.灵活运用这学期所学的知识对词法分析,语法分析有进一步的理解;3强化对系统软件综合工程实现能力的训练;二实验内容 用C语言(或 C+ )作为宿主语言完成: C语言(win-TC , ANSI C或turbo C 2.0)词法分析器的设计和实现。 三实验要求1. 编写C语言词法分析器的源程序并调试通过; 2. 通过测试程序的验收; 3. 提交简明扼要的书面实验报告,内容包括:属性字设计;源程序主要流程;主要数据结构设计,程序。四,程序流程图(1) main主程序图处理每个字符 开始结束是否结束判断并输出每个单词类型属性。Scan()函数,分析并返回每个单词的属性Run=1?初始化数组Program,words提示输入程序字符串输入并读取程序字符初始化 是(2) Scan()函数流程图初始化数组,标志符判断并标志是否为关键字判断并标志为运算符或标点符号判断并标志为其它类型Return返回sign数值1五,原程序代码#include#includeint i,j,k,sign,number,flag,run,sum,autuor;/*flag which is use to judge the string is keywords or not!*/char ch;char words10 = ;char program500;int Scan(char program) char * keywords39 = auto,default,do, extern,goto, int,short,static,struct,switch, typedef,void,break,case,char, const,continue,double,else, enum, float,for,if,long, register, return,signed,zhouhong,sizeof,union, unsigned,volatile,while,main,printf, scanf,include,define,string ; number = 0; flag = 0; j = 0; ch = programi+; /* To handle the lettle space ands tab*/ while (ch = ) | (ch = t) | (ch = r)|(ch=n) ch=programi+; /* 跳过不理睬 */ /*handle letters*/ if (ch = a) & (ch = a) & (ch = z ) wordsj+=ch; ch=programi+; i-; wordsj+ = 0; for (k = 0; k = 0) & (ch = 0 ) & (ch : if (ch = ) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 403; /* = */ else if(ch=) wordsj+ =ch; wordsj =0; sign =419; /* */ else i-;sign = 404; /* */ break; case: if (ch = ) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 405; else if(ch= 0) & (ch = 0) & (ch = 9) ) wordsj+ = ch; ch = programi+; wordsj = 0; sign = 1000; /* 标志为1000 */ /* 负数 */ i-; break; else i-;sign = 414; break; case*: if (ch = *) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 415; else i-; sign = 416; break;case/: if (ch = /) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 417; else i-; sign = 418; break;case:if(ch=) wordsj+ = ch; wordsj = 0; sign =421; break; case;: wordsj = ch; wordsj+1 = 0; sign = 501; break;case(: wordsj = ch; wordsj+1 = 0; sign = 502; break;case): wordsj = ch; wordsj+1 = 0; sign = 503; break;case: wordsj = ch; wordsj+1 = 0; sign = 504; break;case: wordsj = ch; wordsj+1 = 0; sign = 505; break;case: wordsj = ch; wordsj+1 = 0; sign = 506; break;case: wordsj = ch; wordsj+1 = 0; sign = 507; break;case: wordsj = ch; wordsj+1 = 0; sign = 508; break;case: wordsj = ch; wordsj+1 = 0; sign = 509; break;case%: if (ch = %) wordsj+ = ch; wordsj = 0; ch = programi+; if (ch = =) wordsj+ = ch; wordsj = 0; sign = 510; else i-; sign = 511; break;case,:wordsj = ch;wordsj+1 = 0;sign = 512;break;case#:wordsj = ch;wordsj+1 = 0;sign = 513;break;case:wordsj = #;wordsj+1 = 0;sign = 0;break;default: sign = -1; /* 错误 */break; return sign;void display()printf(Autuor: zhouhongn); printf(calss: computer 0502n); printf(time: 2008-06-10n); printf(Email: n); printf(QQ: 454350734n);int main() i=0; run=1; while(run) int ent; int j; ent=autuor=sum=0; for( j = 0; j 500; j+) programj = ; for( j = 0; j =1&sign=401&sign=501&sign=513) printf(symbol , %8s, %5d) ,words,sign); sum+; ent=1; if(sum%2=0&ent=1) puts(r),ent=0; while (sign != 0); puts(n); if(autuor=1)display(), puts(n); printf(continue?(Y or N):); getchar(); ch=getchar(); if(ch=N|ch=n) run=0; return 0; getchar();六,程序运行截图(1) 当程序开始时会出现程序输入界面,如下面图(一)所示: 图(一)(2) 接着输入C语言原程序,如下面图(二)所示: 图(二)(3)按回车键后,程序就会运行并输出结果,如下面图(三)所示: 图(三)(4)此程序另外还加入了一个身体标志,当程序输入的单词中包含“zhouhong” 的字符串是,运行程序后,会在正常输出的最后面出现几行关于个人身份信息。如下面图(四)所示: 图(四)七,个人体会和经验总结(1)刚开始,这个程序是先看了网上的一个类似程序之后,在他的基础上面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论