欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《编译原理》课程实验报告(词法分析).doc

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

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

    《编译原理》课程实验报告(词法分析).doc

    信息科学与工程学院_编译原理_实验报告 系 别 计算机科学与工程 专 业 计算机科学与应用 班 级 _计122_ 学 号 _ 姓 名 _ 陈柏君_ 指导教师 金登男 2014学年 第二学期 1. 实验题目:词法分析2. 实验日期: 2015.4.9-2015.4.16 3. 实验环境(操作系统,开发语言)操作系统:Windows开发语言:C4. 实验要求4.1. 用C语言开发词法分析程序PL0Compiler。4.2. 修改PL/0词法,将其定义为一种新的语言,例如称其为PL/1语言,并完成PL/1语言的词法分析程序。5. 实验步骤5.1. 用PL/0语言编写PL/0测试用例源程序,将其命名为Test0.pl。5.2. 用C语言开发PL/0词法分析程序PL0Compiler。PL0Compiler读入Test0.pl,识别出一个个单词,并将这些单词流依序同时输出到屏幕和文件中。被输出的每个单词应包括(1)单词序号(2)单词字符串(3)单词类型(4)单词值(如果是标识符,其值是字符串;如果是数,其值是数值;如果是符号,其值是ASCII代码)在程序开发过程中,应设立断点,单步运行词法分析程序,依次输出一个个单词。分析和理解词法分析程序,解释词法分析程序中的数据和变量变化的原因和输出结果。5.3. 研究其他程序设计语言,找出与PL/0词法不同的构词法则(例如C语言的标识符的组成规则与PL/0标识符的组成规则有所不同)。据此修改PL/0的某些词法(例如,将PL/0标识符组成规则修改为C语言的标识符的组成规则),将其定义为一种新的语言,例如称其为PL/1语言。5.4. 用PL/1语言编写PL/1测试用例源程序,将其命名为Test1.pl。5.5. 开发PL/1词法分析程序PL1Compiler。(可通过修改原PL0Compiler,实现PL/1语言的词法分析功能)。5.6. PL1Compiler读入Test1.pl,识别出一个个单词,并将这些单词流依序同时输出到屏幕和文件中。6. 实验结果(Test1.pl内容,PL1Compiler词法分析程序输出的第1张截图)Test1.pl内容:const _c1=2,A_2=4.56.00;VAR x,num,sum;procedure func1;var y;y:=c1;beginsum:=8.32;read(x);num:=10-x/c2;if num<-2 thenx:=-c1;if num>2+2*c2 thenx:=8-c2;while x<num dobeginsum:=sum+x*xend;call func1;sum:=-10*c2/(2*sum+num);write(num,sum);end.(注:修改过的地方,已经用圈圈,箭头标注)7. 实验体会(说明新的PL/1语言与PL/0语言不同的词法之处,程序开发过程中出现的技术问题及其解决方法、心得体会等)修改的重要代码:if (cACharacter != EOF)if (cACharacter >= 'a' && cACharacter <= 'z'|cACharacter >= 'A' && cACharacter <= 'Z'|cACharacter='_')nAWordIndex = 0;doif (nAWordIndex < MAX_LENGTH_OF_A_WORD)szAWordnAWordIndex+ = cACharacter;cACharacter = GetACharacterFromFile(); while (cACharacter >= 'a' && cACharacter <= 'z' | cACharacter >= '0' &&cACharacter <= '9' | cACharacter >= 'A' && cACharacter <= 'Z' | cACharacter='_') && cACharacter != EOF);功能:标识符可以以大写,小写,下划线的混合形式出现。int k = 0;for (int j = 0; j <nDigitNumber; j+)if (szAWordj = '.')k+;if (k = 1)g_Wordsg_nWordsIndex.eType = NUMBER_DOUBLE;if (k>1) g_Wordsg_nWordsIndex.eType = ERROR_num; if (k = 0) g_Wordsg_nWordsIndex.eType = NUMBER_INT;功能:此部分代码可以对数进行识别,根据小数点的个数,如果没有小数点那么是INT型,有一个小数点是DOUBLE型,有多于两个小数点那么就会报错for (int j = 1; j <nDigitNumber - i; j+)nNumberValue = nNumberValue / 10;g_Wordsg_nWordsIndex.nNumberValue = nNumberValue;功能:对数小数的值进行计算,比如一个数是3.12,那么此程序的功能就是把312的值变成3.12这个值。case NUMBER_INT:printf("%-4d%-15s%-20s%gn", nIndex, szWordName, szWordType, g_WordsnIndex.nNumberValue);break;case NUMBER_DOUBLE:printf("%-4d%-15s%-20s%gn", nIndex, szWordName, szWordType, g_WordsnIndex.nNumberValue);break;为了使输出不带多于的0,影响美观,所以用“%g”。不同之处:1,pL1能识别大写字母和下划线,标识符可由大、小写字母及标识符组成。2,pL1能区别小数和整数,小数用NUMBER_DOUBLE表示,整数用NUMBER_INT表示,并将浮点数的值计算出来。3,错误的数用ERROR_num标记。4,增加了保留字也可以用全部大写的方式。问题:识别小数时,出现计算小数值时出现问题,想了好久没想到可靠的算法,后来通过检测小数点排在第几位,先按照整数的值保留,然后再进行除法,就会得到小数的值。对于错误的输入小数。如3.12.32,这样的数值很明显是错误的,为了排除,开始没有想到可行的办法,后来通过检测数组中小数点的个数,来进行对类型赋值实验心得体会: 其实程序看起来很大,但是很有结构,只要细心肯定能读懂,然后对于修改的地方多想想,多调试调试程序,自己的变成能力也会得到锻炼,有所提升。

    注意事项

    本文(《编译原理》课程实验报告(词法分析).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开