分享
分享赚钱 收藏 举报 版权申诉 / 9

类型词法编辑器.doc

  • 上传人:精品资料
  • 文档编号:7665518
  • 上传时间:2019-05-23
  • 格式:DOC
  • 页数:9
  • 大小:516KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    词法编辑器.doc
    资源描述:

    1、实验一 词法扫描器设计一 实验目的通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力。二 实验内容设计一个简单的类 C 语言的词法扫描器。三 实验要求1、根据附录给定的文法,从输入的类 C 语言源程序中,识别出各个具有独立意义的单词,即关键字、标识符、常数、运算符、分隔符五大类;文法见最后附录。2、提供源程序输入界面;3、词法分析后可查看符号表和 TOKEN 串表;4、保存符号表和 TOKEN 串表(如:文本文件) ; 5、遇到错误时可显示提示信息,然后跳过错误部分继续进行分析。四 实验报告(一) 系统功能(包括各个子功能模块的功能说明

    2、)程序主要实现的功能:通过词法分析程序,在源程序中识别并分别出数字、标识符和保留字,并分别将记录到指定的文本文档中,过程中不符合符号表要求的字符视为错误处理。子功能模块:关键字处理;数字处理;字母的处理(标识符和保留字) ;运算符处理;主程序。(二) 开发平台(操作系统、设计语言)Windows 7,Microsoft Visual C+ 6.0。(三) 设计方案(1) 主数据流图开始读入文件内容关闭文件调用 c a c u l a t e ( )函数进行词法分析结束(2) 主要子程序的流程框图子流程开始打开或者创建分析结果输入文件读取文件内容判断是否是空格 , 缩进 , 换行不做处理Y是否是

    3、字符将字符临时赋值给字符串变量Y读取下一个字符N判断所获得的字符串变量是否是关键字将变量 类型 1 和关键字输入到界面并写入文件将变量 类型 2 和标识符输入到界面并写如文件是否是字符或者数字YNYN是否数字N将数值赋给变量读取下一字符输入数字或者指数或者小数点YY将变量 类型 3 和数字写入结果N是否运算符N对每一运算符去相应的判断措施( 省略 )字符 , 无法识别类型写入结果结束子流程文件读完NY(3) 主要数据结构:id Letter int10 Num int10 | Num OP +| - |* |/ | = | Letter | Num |(四) 具体设计过程(包括主控程序、各个功

    4、能模块的具体实现)主模块: judge(FILE *,char *);用词法分析过程的判断子功能模块: Keyword(string );用于判断字符串是否是关键词Letter(char c);用于判断 c 是否是字母Num(char c);用于判断 c 是否是数字(五) 源代码#define MAX 50 /长度最大值 50 char ch = ; / 字符 空格string keyword50=“bool“,“break“,“case“,“include“,“char“,“const“,“continue“,“default“, “do“,“double“,“else“,“false“,“

    5、float“,“for“,“if“,“int“,“long“,“namespace“,“new“,“return“,“short“,“signed“,“struct“,“switch“,“true“,“using“,“void“,“while“ ,“then“,“class“ ;/ 常见关键字数组 只用了部分 30 个/*关键字的处理过程*int gjz(string c) int i;for(i=0;i=a)|(c=A) return 1; /比较字母的 ASCII 码值,在大小写范围内,返回真,否则假。else return 0;/*数字的处理过程*int num(char c) if(c

    6、=0 /指针回退一个字符out) out“elseout :ch=fgetc(fpin);if(ch=) out=“=if(ch=)out“if(ch=n)fseek(fpin,-1L,SEEK_CUR);out“ 后边没有操作数。 else out“fseek(fpin,-1L,SEEK_CUR);break;default : outx; /cinx;就表示从标准输入流中读取一个指定类型(即变量 x的类型) 的数据。coutx; cout.width(30);coutx;cout.width(30);coutin_fn; /输入路径名if(fpin=fopen(in_fn,“r“)!=NU

    7、LL) break; /以只读方式打开文件,如果成功跳出循环继续,若不成功则输出错误信息。else cout“文件路径错误!请输入源文件(包括路径和后缀名):“;cout“n*词法分析结果如下*“endl;caculate(fpin); /调用分析程序fclose(fpin); /关闭文件coutendl; /结束行read(); /调用 read(),完成输出/分析文本文件 内容为一个简单的 C 语言程序cout“n*lex.txt 词法分析完毕*“endl;system(“pause“); /屏幕停留五 实验结果运行结果源代码六 实验总结通过本次试验,我更加详细的了解了词法分析器的构造过程和工作原理。作为编译器的第一步,词法分析器起着重要的作用,它识别并分别出数字和字母(标识符和保留字) ,构成并输出 TOKEN 序列,为后面的语法分析和语义分析建立基础。同时,本实验也是我对于编译器的一些基本行为有了一定的了解,让我能够更加有效率的编写程序。

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:词法编辑器.doc
    链接地址:https://www.docduoduo.com/p-7665518.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开