词法分析—编译原理结课论文.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  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文档。上传文档
查看更多
编译原理结课论文 题目: 词法分析 作者: 电话: Email: 教师: 递交日期: 2013 年 11 月 28 日 摘要 词法分析作为编译的基础,其主要任务是对构成源程序的字符流进行扫描,然后根据构词规则识别单词符号,而这恰是源代码逆向分析过程中必不可少的一步。随着软件逆向工程的不断发展,词法分析被广泛应用于源代码逆向分析。本文就词法分析在源代码逆向分析过程中的应用进行探讨,尝试用简明易懂的方式去获得逆向分析后续工作所需的单词符号的各类信息。 关键词 词法分析;逆向分析;源代码;单词符号 正文 1、词法分析 词法分析程序又称扫描器,它是编译过程的第一个阶段。其主要任务是从左到右依次描描字符串形式的源程序的各个字符,逐个识别出其中的单词,并将其转换成为内部编码形式的单词符号串输出,用于进行语法分析。通常可采用二元式(CLASS,VALUE)来表示一个单词符号 的内 部 编 码,其 中 CLASS 为一整数码,用于表示该单词 的 类别;VALUE则是单词之值(如变量名在符号表中的序号,常数的二进制表示,以及运算符和分隔符的编码,等等)。 概括的说,扫描器在其工作过程中,一般应完成下列的任务: (1)识别出源程序中的各个单词符号,并将其转换成内部编码形式; (2)删除无用的空白字符、回车字符以及其他非实质性字符; (3)删除注释; (4)进行词法检查,报告所发现的错误。 此外,视编译工作流程的组织,一些编译程序在进行词法分析时,还要完成将所识别出的标志符登录到符号表的工作。从功能上看,词法分析上把字符串形式的源程序转换为单词串形式,然后进行语法分析。从工作方式上看,他与语法分析之间存在两种接口方式。一种方式是将词法分析的输出结果存放在一个中间文件上,后面的语法分析程序将它作为输入进行语法分析。另一种方式是将词法分析编成一个子程序,该子程序由语法分析程序调用,当语法分析程序需要读出一个具有独立意义的单词。本设计采用前一种方式。 1.2?词法分析程序的功能:? 输入:所给文法的源程序字符串。? 输出:二元组(syn,token或sum)构成的序列。?其中:syn为单词种别码;? ??????token为存放的单词自身字符串;???????sum为整型常数。? 例如:对源程序begin?x:=9:?if?x>9?then?x:=2*x+1/3;?end?#的源文件,经过词法分析后输出如下序列:? (1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)??? 2、词法分析程序的算法思想:? 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 2.1 主程序示意图: 主程序示意图如图3-1所示。其中初始包括以下两个方面: ⑴ 关键字表的初值。 关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下: Char *rwtab[6] = {“begin”, “if”, “then”, “while”, “do”, “end”,}; 否 是 ?3. 词法分析的任务 是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称为单词符号或简称符号),如基本字(begin、end、for、if、while等),标识符、常数、算符、和界符(标点符号、左右括号等等)。例如,对于pascal的循环语句 For I:=1 to 100 do 词法分析的结果是识别出如下的单词符号: 基本字 for 标识符 I 赋值号 := 整常数 1 基本字 to 整常数 100 基本字do 3. 输出: 词法分析器所输出单词符号常常表示成如下的二元式(单词种别,单词符号的属性值) 单词种别通常用整数编码。标识符一般统归为一种。 常数则宜按类型(整、实、布

文档评论(0)

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

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

1亿VIP精品文档

相关文档