- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系統软件开发实践实验报告(计科-4徐竹)
中国矿业大学计算机学院 2012 级本科生实验报告课程名称 系统软件开发实践 报告时间 2015/5/1 学生姓名 徐竹 学 号 专 业 计算机科学与技术 任课教师 刘 晋 任课教师评语任课教师评语(①对实验课程基础理论的掌握;②对实验课程知识应用能力的评价;③对课程报告相关实验、作品、软件等成果的评价;④实验课学习态度和上课纪律;⑤实验课程成果和报告工作量;⑥总体评价和成绩;⑦存在问题等):成 绩: 任课教师签字: 年 月 日实验一(第一周) 词法分析器(flex实验)一、实验目的1、通过对flex基本知识的阅读,了解其工作原理和过程以及其匹配模式和规则,掌握简单的lex语法和规则;2、在上述基础上能够自主编写出简单且可以运行的词法分析器,实现简单的词法分析功能;3、通过实验,设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。二、实验说明本次编制调试的词法分析器基本可以实现如下简单功能:1、可以匹配识别关键字:else if switch for int float return void while(所有的关键字都是保留字,并且必须是小写);2、可以匹配识别专用符号: + - * / = = == != = ; , ( ) [ ] { } /* */3、标识符(ID) 和数字(NU )通过下列正则表达式定义:ID = letter letter*NUM = digit digit*letter = a|..|z|A|..|Zdigit = 0|..|94、可以匹配识别空格(空格由空白、换行符和制表符组成,空格通常被忽略,,除了它必须分开ID、NUM 关键字);5、可以识别简单的注释(/* 注释内容*/);三、实验原理与分析词法分析的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析是编译程序的第一个阶段且是必要阶段;词法分析的核心任务是扫描、识别单词且对识别出的单词给出定性、定长的处理;实现词法分析程序的常用途径:自动生成,手工生成。而本次实验用的是自动生成工具flex,相对于手动生成可以极大地减少工作量。单词的描述也就是模式(Lexical Pattern),模式一般用正规表达式进行精确描述。FLEX通过读取一个有规定格式的文本文件,输出一个如下所示的C语言源程序。 | 输入文件*.l ||flex工具 ||输出文件lex.yy.c |FLEX的输入文件为LEX源文件,它内含正规表达式和对相应模式处理的C语言代码。FLEX通过对.l源文件的扫描自动生成相应的词法分析函数 int yylex(),并将之输出到lex.yy.c的文件中。该文件即为LEX的输出文件或输出的词法分析器。 LEX的源文件由三个部份组成,每个部分之间用顶行的“%%”分割,其格式如下:定义部份%%规则部份 %%用户附加C语言部份其中,定义部分由C语言代码、模式的宏定义、条件模式的开始条件说明三部份组成。C代码部份由顶行的%{和}%引入,LEX扫描源文件时将%{和}%之间的部分原封不动的拷贝到输出文件lex.yy.c中。而模式宏定义则是一个正则表达式的定义。正则表达式的匹配如下:第二部分规则部份是LEX源文件的核心部份,它包括一组模式和在生成分析器识别相应模式后对相应模式进行处理的C语言动作(Action)。LEX对第三部分不作任何处理,仅仅将之直接拷贝到输出文件lex.yy.c的尾部。在些部份,可定义对模式进行处理的C语言函数、主函数和yylex要调用的函数yywrap()等。如果用户在其它C模块中提供这些函数,用户代码部份可以省略。yylex()函数被调用之后,它首先检查全局文件指针变量yyin是否有定义,如有,则将之设置为将要扫描的文件指针。如无,则设置为标准输入文件stdin。同理,如全局文件指针变量yyout无定义,则将之设置为标准输出文件stdout。若有多个模式与被扫描文件中的字符串相匹配,则yylex()执行能匹配最长字符串的模式,称为“最长匹配原则”;若还有多个模式匹配长度相同的字符串, 则yylex()选择在LEX源文件中排列最前面的模式进行匹配,称为“最先匹配原则”。yylex()常通过超前搜索一个字符来实现这样的原则,如果使 用超前搜索匹配了某一模式,则yylex()在进行下一次分析前,将回退一个字符
您可能关注的文档
最近下载
- Siebel TAS销售管理方法论交流.ppt
- 一种耐高温热轧H型钢及其生产方法.pdf VIP
- 2025协同办公领域AI发展与应用实践报告.pptx VIP
- 2025年中电建电力运维管理有限公司招聘笔试参考题库含答案解析.pdf
- 2024中电建电力运维管理有限公司招聘361人笔试参考题库附带答案详解 .docx
- 一例高血压患者的护理个案.docx VIP
- 2025年高考语文课内文言文知识梳理(统编版)专题04《登泰山记》(解析版).docx VIP
- 2025年新高考语文专题复习:小说情节知识点讲解 课件139张.pptx VIP
- AI大模型产业落地场景和价值.pdf VIP
- 彩钢板屋面拆除、更换屋面板施工方案.docx VIP
文档评论(0)