实验一文法分析方法和其应用1.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深 圳 大 学 实 验 报 告 课程名称: 编译原理 实验项目名称: 文法分析方法及其应用 学院: 计算机与软件学院 专业: 软件工程 指导教师: 陈飞 报告人: 学号: 班级: 实验时间: 2015年10月12日 至 2015年11月9日 实验报告提交时间: 教务处制 实验目的与要求: 目的:针对分词、停用词过滤等文法分析应用问题,设计并实现相应的解决方案,再通过设计文法相关类族,以及实现文法化简等方法,既加深对抽象的文法、推导、语言等形式语言理论基础概念的理解与掌握,也加强对面向对象程序编写能力和计算思维的培养。 要求: 第一部分: 分词 输入:输入是一个文本文件,里面的内容是符合某个语言语法、词法要求的源代码(输入文件为C++或者Java源程序,词语、语法定义参考C++、Java即可;C++、Java大家只需要选择一种自己熟悉的语言就可以),例如“position = initial + rate * 60;”; 输出:设计并实现对输入文件的处理(禁用正则表达式),以获得如下输出,输出是一个文本文件,对前面例子,里面内容是: (标识符,position) (赋值运算符,=) (标识符,initial) (加法运算符,+) (标识符,rate) (乘法运算符,*) (整数,60) (分隔符,; ) 第二部分:停用词过滤,分为“产生随机停用词”、“产生随机待过滤文本”和“过滤停用词”3个小实验。 产生随机停用词:生成一个文件长度和单词平均长度可控的文本文件,要求字符集为26个字母,每行生产一个单词,每个单词的长度随机,全部单词的平均长度可控制,通常为4、5(非严格要求),总共输出的文件长度可控制。 产生随机待过滤文本:生成一个文件大小和单词平均长度可控的文本文件,要求 字符集为26个字母+“ ”(空格)+“\r\n”(回车换行);从文件开始一直到结束,持续输出,不额外换行(除非遇到生成的\r\n),总共输出的文件大小可控制。 过滤停用词:写一个程序,快速扫描待过滤文本,然后将待过滤文本中出现的所有停用词,替换为“**”,要求禁用正则表达式,不要误杀(例如,若停用词包括“abc”,那么“abcd”等不应该被误杀。 第三部分:文法化简 设计文法类,实现对文法G[S]=(Vt, Vn, P, S)的文件读写,文法的文件表示形式以及内存表示形式可自定义。本质上,文法就是3个集合+1个符号,重点(难点)是产生式集合如何处理。文法的文本形式可根据自己需要自由定义。在前述的基础上,实现文法化简的无用符号及无用产生式消除算法(即课本算法2.1、2.2)。 方法、步骤: 要完成本实验,依据实验要求进行分解,需要完成的实验步骤是: 如何读写文件? 读写文法文件内容,需要用到文件IO,查阅、复习文件IO操作。 请在这里,补充完善你的设计思路,完成后,请删去这句话。 如何分词? 第一部分实验要求进行分词,源代码中的单词可以分成3类,一类是约定的保留字,一类是普通标识符,最后一类是数字 如何识别保留字? 如何识别标识符? 如何识别数字? 特别的,如果你有多种方法来识别这3类单词,那这些方法有何优缺点?分析并作出你的选择。 请在这里,补充完善你的设计思路,完成后,请删去这句话。 如何产生符合要求的随机停用词和待处理文本 第二部分实验要求先产生随机的停用词和待处理文本,主要是如何产生符合要求的这些词或文本? 如何产生随机停用词? 如何控制随机停用词的平均长度(而不是固定长度)? 如何产生待处理文本中的“段落”? 如何控制待处理文本的长度? 请在这里,补充完善你的设计思路,完成后,请删去这句话。 如何过滤停用词 第二部分实验最后要求把待处理文本中出现的停用词替换为“**”,那你如何准确、快速判断出文本中的停用词? 如何设计文法类? 文法类里面,有3个集合,1个特别的非终结符——开始符号。集合应如何表示?SetType是常见的范型,可使用例如SetProduction来表示产生式的集合。也可直接采用数组等形式来表示,那种方法更好?分析并做出

文档评论(0)

shaoye348 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档