欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    实验报告模版.docx

    • 资源ID:18421264       资源大小:143.25KB        全文页数:16页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验报告模版.docx

    1、实验报告模版南华大学 计算机科学与技术学院实 验 报 告 ( 2010 2011 学年度第 一 学期 )课程名称程序设计语言与编译实验名称编制C语言子集的词法分析程序姓名张顺华 学号20084440228专业计算机科学与技术班级082班地点八栋专业实验室教师肖建田老师1.实验目的及要求 题目 使用直接分析法编制C语言子集的词法分析程序目的 通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法要求 根据具体情况,由同学们自己选取C 语言的一个适当大小的子集(可取一类典型单词,也可以尽可能使各种类型的单词都

    2、兼顾到);在实习前一定要制出相应的表 2.实验步骤 分析语言特点在C语言中,对于单词符号我们将其分成四类:保留字、标识符、常数和符号表S,每类单词符号均可使用一张表格表示在词法分析过程中,保留字和界符这两个表格的内容是固定不变的(由语言确定),源程序字符串只能从其中选取,而标识符、常数这两表是在分析过程中不断形成的对于一个具体源程序而言,在扫描字符串时识别出一个单词,若这个单词的类型是、或中之一,那么就以单词的二元式形式输出每次调用词法分析程序,它均能自动继续扫描下去,形成下一个单词,直到整个源程序全部扫描完毕,从而形成相应的单词串各类单词的二元式表述均具有相同的结构与长度,形式如下:(单词种

    3、别,单词自身的值)是单词种别,而单词种别共分为、四类且每类对应一张表格因此,实际上就是一个指向这四类中某一类对应表格的指针则为指向该类表格中一个特定项目的指针所以整个的词法分析过程就是从源程序中获得一个个的单词符号,将这些符号分别填入四张类表中,并且有一个二元式序列构成一个索引,这个索引为以后的语法分析提供处理上的方便为了减少实习量,可以适量地选取,中的一个子集来进行 创建表格表1保留字表内部地址 1234567保 留 字 intifelsewhilefor read write表2符号S表内部地址 12345678910 符号 +-*/=!=内部地址1112131415符号=(),;保留字表

    4、包括7个有代表性的保留字,符号包括关系运算符6种(4,5,6,8,9,10,11),算术运算符(1,2,3,4),分隔符三种(14,15),一对圆括号,加上赋值号共15种这两表的内容表明C语言的条件语句,赋值语句,WHILE型循环语句,复合语句,过程及变量说明均可作为源程序例子输入给词法分析程序,标识符表中的每一项包含一个标识符,常数表中的每一项包含一个整常数,后两表的内容都是在词法分析过程中产生的如何从源程序中识别出一个个的单词符号呢?图1中的流图清晰地反映出这一过程图1中,双圆圈的状态表示终态,即能到达终态就代表识别出一个单词符号,而带有号的终态是指处理时应回退一字符.图1扫描程序的状态转

    5、换图 算法词法分析器在扫描过程中,依次从源程序中取出源字符,根据图的扫描过程状态转换图,当碰到终态时,即双圆圈的状态时就得到一个单词符号,此时可以根据第一个字符判断单词属于,中哪一类,从而确定单词的单词种别和单词自身的值整个词法分析的算法流程如图三、实现环境 硬件:安装AMD 双核处理器和2G内存的PC机;软件:在Windows XP 操作系统下,并且安装有MC visual c+ 6.0。3. 实验内容 源代码:#include #include #include #include #define START -1#define MAXSIZE 20FILE *fp;FILE *fp1 =

    6、fopen(PL词法分析结果.txt,w);char *keyWord = int,if,else,while,for,read,write;char *Operators = +,-,*,/;char *compareOperators = ,=,!=,=;char *endOperators = , , ; , ( , ) ;bool Compare(char SearchStr,int type) switch (type) case 1: for(int i = 0;i = 13;i+) if (strcmp(keyWordi,SearchStr) = 0) return true;

    7、break; case 2: for(int i = 0;i = 3;i+) if(strcmp(Operatorsi,SearchStr) = 0) return true; break; case 3: for(int i = 0;i = 5;i+) if(strcmp(compareOperatorsi,SearchStr)=0) return true; break; case 4: for( int i = 0;i = 7;i+) if(strcmp(endOperatorsi,SearchStr) = 0) return true; break; default: break; r

    8、eturn false;char LetterProcess (char ch) int i = START; char letterMAXSIZE; while (isalnum(ch)!=0) letter+i = ch; ch = fgetc(fp); ; letteri+1 = 0; if (Compare(letter,1) printf(基本字: %sn,letter); fprintf(fp1,基本字:tt%sn,letter); else printf(标识符: %sn,letter); fprintf(fp1,标识符:tt %sn,letter); return ch;cha

    9、r NumberProcess(char ch) int i = START; char numberMAXSIZE; while (isdigit(ch)!=0) number+i = ch; ch = fgetc(fp); if(isalpha(ch)!=0) while(isspace(ch) = 0) number+i = ch; ch = fgetc(fp); numberi+1 = 0; printf(非法标识符:%sn,number); fprintf(fp1,非法标识符:t %sn,number); return ch; numberi+1=0; printf(数字: %sn,

    10、number); fprintf(fp1,数字:tt %sn,number); return ch;char OtherProcess(char ch) int i = START; char otherCharMAXSIZE; if (isspace(ch)!=0) ch = fgetc(fp); return ch; while (isspace(ch) = 0) & ( isalnum(ch) = 0) otherChar+i = ch; ch = fgetc(fp); otherChari+1=0; if (Compare(otherChar,2) printf(运算符: %sn,ot

    11、herChar); fprintf(fp1,运算符:tt %sn,otherChar); else if (Compare(otherChar,3) printf(比较符: %sn,otherChar); fprintf(fp1,比较符:tt %sn,otherChar); else if (Compare(otherChar,4) printf(界符:%sn,otherChar); fprintf(fp1,界符:tt%sn,otherChar); else printf(非法标示符:%sn,otherChar); fprintf(fp1,非法标识符:tt%sn,otherChar); ret

    12、urn ch;int main() char str; printf(词法分析结果如下:nn); if (fp = fopen(PL源程序.txt,r) = NULL) printf(can not open the file!n); exit(0); else str = fgetc(fp); while (str!=EOF) if (isalpha(str) != 0) str = LetterProcess(str); else if (isdigit(str) != 0) str = NumberProcess(str); else str = OtherProcess(str); printf(词法分析结束n); printf(词法分析结果已写入文件n); fclose(fp); fclose(fp1); getchar(); return 0;4.实验结果5. 实验总结分析 通过这次实验是我对程序编译这块有了基本的了解,体会到了程序内部编译时的原理及运行过程,清楚了在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法,也认识到了语言设计的一些基本知识,同时也使我复习了以前的c+编程知识,感觉收获很大


    注意事项

    本文(实验报告模版.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开