东南大学编译原理Lab1.docxVIP

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
东南大学编译原理Lab1

编译原理实验报告实验名称:词法分析设计与实现实验日期: 2016.12.11学生姓名:学生学号:实验目的通过设计,调试词法分析程序,实现从源程序中分出各种单词的方法;熟悉词法分析程序所用的工具自动机,进一步理解自动机理论。掌握文法转换成自动机的技术及有穷自动机实现的方法。确定词法分析器的输出形式及标识符与关键字的区分方法。加深对课堂教学的理解;提高词法分析方法的实践能力。通过本实验,应达到以下目标:1.掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。 2.掌握词法分析的实现方法。 3.上机调试编出的词法分析程序。二、实验内容编写词法分析程序,逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语言中具有独立意义的最小单位,包括标点符号、括号、转义符、关系算符、算术算符、赋值运算符、保留字、标识符和常量等。词法分析是编译过程中的一个阶段,在语法分析前进行。也可以和语法分析结合在一起进行,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。 输入:字符流输出:Token序列三、实验方案1.程序的功能:从source.txt文件读入字符流,在destination.txt文件中写入token序列,token序列为三元式,格式为[单词,种别码,内部码]。2.实现方案:基于有限自动机(FA)实现: a)定义各种单词的正则表达式(REs) b)将这些正则表达式转换成非确定有限自动机(NFA) c)将这些非确定有限自动机合并为一个非确定有限自动机 d)将这个非确定有限自动机转换为具有最少状态的确定有限自动机(DFA0) e)基于该确定有限自动机编程四、实验假设定义程序所能识别的单词:正则表达式见表1的单词条目单词单词类型种别码内部码;标点符号1---,标点符号2---.标点符号3---“标点符号4---‘标点符号5---:标点符号6---{左大括号7---}右大括号8---[左中括号9---]右中括号10---(左小括号11---)右小括号12---\转义符号13---关系算符14---||关系算符15---!关系算符16---关系算符17---关系算符18---=关系算符19---=关系算符20---!=关系算符21---==关系算符22---+算术算符23----算术算符24---*算术算符25---/算术算符26---%算术算符27---++赋值运算符28---+=赋值运算符29-----赋值运算符30----=赋值运算符31---*=赋值运算符32---/=赋值运算符33---%=赋值运算符34---=赋值运算符35---include保留字36---void保留字37---bool保留字38---char保留字39---int保留字40---float保留字41---double保留字42---do保留字43---while保留字44---if保留字45---then保留字46---else保留字47---for保留字48---goto保留字49---switch保留字50---case保留字51---continue保留字52---break保留字53---default保留字54---main保留字55---return保留字56---print保留字57---exit保留字58---letter|_(letter|digit|_)*标识符59标识符在符号表中的位置digit(digit)*整数60整数在常数表中的位置digit(digit)*.(digit)*小数61小数在常数表中的位置$保留字62--- 表1单词种类表五、相关的有限自动机图1 “;”的非确定有限自动机其他的由一个字符组成的单词的非确定有限自动机与图1类似图2 “”的非确定有限自动机其他的由2个字符组成的单词的非确定有限自动机与图2类似图3标识符和保留字的非确定有限自动机图4整数的非确定有限自动机图5小数的非确定有限自动机将这些非确定有限自动机合并为一个非确定有限自动机然后将这个非确定有限自动机转换为具有最少状态的确定有限自动机(DFA0)最后的DFA0如图6、7、8、所示:图6 DFA0-1图7DFA0-2图8DFA0-3六、重要的数据结构1.全局变量:(1)ifstream source:输入文件“source.txt”的实例对象(2)ofstream destination:输出文件“destination.txt”的实例对象(3)stringsymbol[58]:用于储存词法分析器所能识别的单词或字符,最大元素个数为58(4)int length1:symbol数组的最大元素个数(5)stringIdTable[100]:符号表,用于存放程序识别出的标识符(6)int length2:IdTable数

文档评论(0)

a888118a + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档