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

    编译原理的第一次实验内容及要求.doc

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

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

    编译原理的第一次实验内容及要求.doc

    编译原理的第一次实验内容及要求实验一 词法分析器的设计一、实验目的和要求加深对状态转换图的实现及词法分析器的理解。熟悉词法分析器的主要算法及实现过程。要求学生掌握词法分析器的设计过程,并实现词法分析。二、实验基本内容给出一个简单语言的词法规则,画出状态转换图,并依据状态转换图编制出词法分析程序,能从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)词法规则如下:单词符号种别码内码单词符号种别码内码auto101long121break102new122case103operator123char104private124class105protected125const106public126continue107register127default108return128delete109short129do110sizeof130double111static131else112struct132enum113switch133extern114template134float115this135for116typedef136friend117union137if118virtual138inline119void139int120while140单词符号种别码内码单词符号种别码内码201,234202235*203·236/204237%205238206(239207)240208:241209242210243211#244212;245!213标识符300&&214常数400二进制形式|215!216217218219|220221&222223224225*226227%228229230&231232|233三、实验时间:上机三次。第一次按照自己的思路设计一个程序。第二、三次在理论课学习后修改程序,使得程序结构更加合理。四、实验过程和指导:(一)准备:1.阅读课本有关章节(c/c+,数据结构),花一周时间明确语言的语法,写出基本算法以及采用的数据结构和要测试的程序例。2.初步编制好程序。3.准备好多组测试数据。(二)上课上机:将源代码拷贝到机上调试,发现错误,再修改完善。(300,”main”)(239,”(“)(240,”)“)(242,”“(120,”int”)(300,”a”)(234,”,”)(300,”b”)(245,”;”)(300,”a”)(223,”=”)(400,”1010”)(245,”;”)(300,”b”)(223,”=”)(300,”a”)(201,”+”)(400,”10100”)(245,”;”)(243,”“)(三)程序要求:程序输入/输出示例:输入如下一段:main()/* 一个简单的c+程序*/int a,b; /定义变量a = 10; b = a + 20;要求输出如右图。要求:(1) 剔除注解符(2) 常数为无符号整数(可增加实型数,字符型数等)(四)练习该实验的目的和思路:程序开始变得复杂起来,可能是大家以前编过的程序中最复杂的,但相对于以后的程序来说还是简单的。因此要认真把握这个过渡期的练习。程序规模大概为200行及以上。通过练习,掌握对字符进行灵活处理的方法。(五)为了能设计好程序,注意以下事情:1.模块设计:将程序分成合理的多个模块(函数/类),每个模块(类)做具体的同一事情。2.写出(画出)设计方案:模块关系简图、流程图、全局变量、函数接口等。3.编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。4程序设计语言不限,建议使用面向对象技术及可视化编程语言,如C+,VC,JAVA,VJ+等。四、上交:1.程序源代码及可执行文件(当堂检查/通过网络提交);2.已经测试通过的测试数据3组(全部存在一个文本文件中,以“第一组输入/输出/第二组输入/输出/第三组输入/输出”的顺序存放);3.实验报告按照提供的模板填写:(1) 功能描述:该程序具有什么功能?(2) 算法描述:所采用的数据结构,基本实现算法及某些特殊过程的实现算法(如在处理某个问题时,你所采取的好的处理方法等)注意此处不要简单的将源程序抄上来。(源程序将打印出来作为附录)(3) 程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;另外可以附加函数之间的调用关系图、程序总体执行流程图及类的层次图。(4) 实验总结:你在编程过程中花时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题?遇到了哪些难题?你是怎么克服的?你对你的程序的评价?你的收获有哪些?(5) 写出上机调试时发现的问题,以及解决的过程;(6) 附上源程序(打印的)五、问题描述及基本算法提示1 状态转换图的实现让每个结点对应一小段程序。 需引进一组全局变量和过程 (1)ch 字符变量,存放最新读进的源程序字符。(2)strToken 字符数组,存放构成单词符号的字符串。 (3)GetChar 子程序过程,将下一输入字符读到ch中,搜索指示器前移一字符位置。 (4)GetBC 子程序过程,检查ch中字符是否为空白。若是,则调用GetChar直至ch中进入一个非空白字符。(5)Concat 子程序过程,将ch中的字符连接到strToken之后。例如, 假定strToken 原来的值为“AB”,而ch中存放着C,经调用Concat后,strToken的值就变为”ABC”。(6)IsLetter和IsDigit 布尔函数过程,它们分别判断ch中的字符是否为字母和数字。(7)Reserve 整型函数过程,对strToken中的字符找保留字表,若它是一个保留字,则返回它的编码,否则返回0值。(8)Retract 子程序过程,将搜索指示器回调一个字符位置,将ch置为空白字符。(9)InsertId 整型函数过程,将strToken中的标识符插入符号表,返回符号表指针。(10)InsertConst 整型函数过程,将strToken中的常数插入常数表,返回常数表指针。2词法分析器构造基本算法int code,value;strToken:=“”; 置strToken为空串GetChar();GetBC();if (IsLetter()begin while (IsLetter() or IsDigit() begin Concat();GetChar(); end Retract(); code : = Reserve(); if(code = 0) begin value : = InsertId(strToken); return($ID,value); end else return(code,-);endelse if (IsDigit()begin while(IsDigit() begin Concat();GetChar(); end Retract(); value : = InsertConst(strToken); returnr($INT,value);endelse if (ch = = ) retutn($ASSIGN,-);else if (ch = +) return ($PLUS,-);else if (ch =*)begin GetChar(); If (ch = *) return ($POWER,-); Retract() ; return ($STAR,-);endelse if (ch = ;) return ($SEMICOLON,-);else if (ch = () return ($LPAR,-);else if (ch = ) return ($RPAR,-);else if (ch = ) return ($LBRACE,-);else if (ch = ) rerurn ($RBRACE,);else ProcError(); /错误处理/

    注意事项

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

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




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

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

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

    收起
    展开