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

    最新哈尔滨工程大学编译原理实验词法分析程序.docx

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

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

    最新哈尔滨工程大学编译原理实验词法分析程序.docx

    1、最新哈尔滨工程大学编译原理实验词法分析程序编译原理实验报告学号2011061618姓名唐宗林实验名称词法分析程序实验目的1、基本掌握计算机语言的词法分析程序的开发方法。2、实现一个词法分析程序,将字符串流分解成终结符流供语法分析使用。3、通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。实验方案1、设计功能分析程序能够从左到右一个字符一个字符地读入源程序,并对构成的源程序的字符流进行扫描和分解,从而识别出一个个单词,并给出单词的种别和属性。2、设计思路主函数main()的思想:先输入一串字符,将字符串用

    2、空格打断,若是分隔出的单元不为空,则对此单元继续分析,根据所输入的字符串判断出是标识符、八进制数、十进制数、十六进制数、运算符、分隔符还是关键字,然后赋予那单词的种别和属性。3、正规文法对于十进制数: A1B1C1 B1D1B1| C1E1B1 E1 |. D10|1|2|3|4|5|6|7|8|9 对于八进制数: A20B2 B2C2D2 C2E2F2 E21|2|3|4|5|6|7 F2GF| D2H2F2 H2 |. D21|2|3|4|5|6|7 G20|1|2|3|4|5|6|7对于十六进制: A30xB3 B3C3D3 C3E3C3| E3 0|1|2|3|4|5|6|7|8|9|

    3、a|b|c|d|e|f D3F3C3 F3 |.对于运算符和分隔符: A4+|-|*|/|B5C5 B5D5E5 D5a|b|y|z E5F5E5| F5a|b|y|z|0|1|2|3|4|5|6|7|8|9 C5G5E5 G5 |.综上正规文法为: SA1|A2|A3|A4|A5 A1B1C1 B1D1B1| C1E1B1 E1 |. D10|1|2|3|4|5|6|7|8|9 A20B2 B2C2D2 C2E2F2 E21|2|3|4|5|6|7 F2GF| D2H2F2 H2 |. D21|2|3|4|5|6|7 G20|1|2|3|4|5|6|7 A30xB3 B3C3D3 C3E3C

    4、3| E3 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f D3F3C3 F3 |. A4+|-|*|/|B5C5 B5D5E5 D5a|b|y|z E5F5E5| F5a|b|y|z|0|1|2|3|4|5|6|7|8|9 C5G5E5 G5 |.4、状态图实验记录1、 程序源代码#include#include/#include stdafx.hunion chars /联合,可存储字符串,整型和浮点型char pro_char15;int pro_number;float real;struct data /将每个单元用一个结构来存储,其内容包括:类型,所属的具体类型,以

    5、及属性值char kind7;int id;union chars pro;int scan(char *a); /对每个用空格打断的单元进行进一步的分析,对其进行进一步的分类void Prints(char a15,int id,int a_long); /将分析后的每个token输出void save(char *a,int id,int x,float y); /将分析后的结果保存到一个结构数组中char nowChar15; /临时的存储单元,用来存储被空格打断以后单元char kinds118= ,INT10,INT8,INT16,IDN, , , ,REAL10,REAL8,REA

    6、L16;/单词的不同种别struct data link100; /用来存放词法分析以后的结果的结构数组int link_long=0; /全局变量int scan(char *a)int id;int a_long=0;int doc=0;while(*a!=NULL)nowChar0=0;a_long=0;doc=0;/对数值的判断及处理if(0=*a&*a=9) /如果第一个字符为数值nowChara_long=*a;*a+;a_long+;/对十六进制的判断及处理if(nowChar0=0&(*a=x|*a=X) /如果第一个字符为0且第二个字符为x,则为十六进制数nowChara_l

    7、ong=*a;*a+;a_long+;while(*a!=NULL&(0=*a&*a=9)|(a=*a&*a=f)|(A=*a&*a=F)|*a=.)nowChara_long=*a; /一直将此十六进制数完全读入,若为浮点型的,则加以标记if(*a=.)doc=1;*a+;a_long+;nowChara_long=0; /判断输入的十六进制数是否合法if(a_long=2) /输入的只有0x,则输入错误Prints(nowChar,7,a_long);return 0;if(doc) /输入的十六进制数是浮点型的Prints(nowChar,10,a_long); /则将其具体的类型属性定

    8、为10else /输入的十六进制数是整型的Prints(nowChar,3,a_long); /则将其具体的类型属性定义为3continue;/对八进制的判断及处理if(nowChar0=0&0=*a&*a=7) /如果第一个字符为0且第二个字符为07,则为八进制数nowChara_long=*a;*a+;a_long+;while(*a!=NULL&(0=*a&*a=7)|*a=.)nowChara_long=*a; /一直将此八进制数完全读入,若为浮点型的,则加以标记if(*a=.)doc=1;*a+;a_long+;nowChara_long=0;if(doc) /输入的八进制数是浮点型

    9、的Prints(nowChar,9,a_long); /则将其具体的类型属性定为9else /输入的十六进制数是整型的Prints(nowChar,2,a_long); /则将其具体的类型属性定义为2continue;/对十进制数的判断及处理elsewhile(*a!=NULL&(0=*a&*a=9)|*a=.)nowChara_long=*a; /一直将此十进制数完全读入,若为浮点型的,则加以标记if(*a=.)doc=1;*a+;a_long+;nowChara_long=0;if(doc) /输入的十进制数是浮点型的Prints(nowChar,8,a_long); /则将其具体的类型属

    10、性定为8else /输入的十进制数是整型的Prints(nowChar,1,a_long); /则将其具体的类型属性定义为1continue; /完成了对数值的判断及处理/对字符的判断及处理elsenowChara_long=*a;*a+;a_long+;/判断输入的字符是否为运算符或其他的分隔符switch(nowChar0)case+:case-:case*:case/:case:case(:case):case=:case;:nowChara_long=0;Prints(nowChar,5,a_long); /将其具体的类型属性定义为5continue;default:break;/判断

    11、输入的第一个字符是否为字母if(a=nowChar0&nowChar0=z)|(A=nowChar0&nowChar0=Z)while(*a!=NULL&(a=*a&*a=z)|(A=*a&*a=Z)|(0=*a&*a=9)|(*a=.)|(*a=_) /一直将此字符串完全读入nowChara_long=*a;*a+;a_long+;nowChara_long=0;/判断输入的字符串是否为特殊的标识符,若是,则将其具体类型值定义为6/判断输入的字符串是否为特殊的字符串ifif(a_long=2&strcmp(nowChar,if)=0)Prints(nowChar,6,a_long);cont

    12、inue;/判断输入的字符串是否为特殊的字符串thenif(a_long=4&strcmp(nowChar,then)=0)Prints(nowChar,6,a_long);continue;/判断输入的字符串是否为特殊的字符串elseif(a_long=4&strcmp(nowChar,else)=0)Prints(nowChar,6,a_long);continue;/判断输入的字符串是否为特殊的字符串whileif(a_long=5&strcmp(nowChar,while)=0)Prints(nowChar,6,a_long);continue;/判断输入的字符串是否为特殊的字符串doif(a_long=2&strcmp(nowChar,do)=0)Prints(nowChar,6,a_long);continue;/若输入的字符串不符合以上几种情况,则输入的为变量/若输入的字符串为变量,则将其具体属性值定义为4Prints(nowChar,4,a_long);continue;/如果输入的既不是数值也不是字符串,则输入错误,将其具体类型之定义为7elsePrints(nowChar,7,a_long);return 0;


    注意事项

    本文(最新哈尔滨工程大学编译原理实验词法分析程序.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

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




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

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开