编译原理结课论文

编译原理结课论文

ID:18141029

大小:193.76 KB

页数:16页

时间:2018-09-14

编译原理结课论文_第1页
编译原理结课论文_第2页
编译原理结课论文_第3页
编译原理结课论文_第4页
编译原理结课论文_第5页
资源描述:

《编译原理结课论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、塔里木大学-信息工程学院编译原理实验编译原理结课论文题目:词法分析作者:马全安电话:18290781046Email:1002468671@qq.com教师:肖少拥、吴刚递交日期:2013年11月28日-16-塔里木大学-信息工程学院编译原理实验-16-塔里木大学-信息工程学院编译原理实验摘要词法分析作为编译的基础,其主要任务是对构成源程序的字符流进行扫描,然后根据构词规则识别单词符号,而这恰是源代码逆向分析过程中必不可少的一步。随着软件逆向工程的不断发展,词法分析被广泛应用于源代码逆向分析。本文就词法分析在源代码逆向分析过程

2、中的应用进行探讨,尝试用简明易懂的方式去获得逆向分析后续工作所需的单词符号的各类信息。关键词 词法分析;逆向分析;源代码;单词符号前言编译原理是一个十分复杂的加工处理程序。它将便于人们阅读但不能直接在计算机上执行的源程序翻译成语义上等价并且可在计算机上执行的目标程序。为了处理各种使用于不同目的的源程序,一般将整个编译过程划分为五个处理阶段,分别是词法分析、语法分析、中间代码生成(语义分析)、代码优化和目标代码生成。在编译程序结构中,词法分析程序通常作为子例程被语法分析调用,每一次调用返回一个单词。一个源程序有许多单词组成,词法

3、分析程序被调用较频繁,它的频率直接决定编译程序的效率。词法分析对源程序进行自左至右的扫描,将它从外部形式(字符串)变换成便于后几个阶段处理的内部形式,即分解出一个个有独立语法意义的单元,称之为单词(又称符号或者特征),同时识别出与其相关的属性。优化阶段对语义分析所产生的中间代码进行改造,以获得等价但更为高效(指时间和空间的节省)的中间代码。目标代码生成阶段根据中间代码和表格信息,进行存储分配,选择代码,形成可在计算机上执行的目标程序。如果目标代码生成阶段产生的代码为汇编语言程序,那么嗨应再经过汇编阶段才能产生机器代码程序。  

4、基于上述,本文通过设计、编制、调试一个具体的词法分析程序,对词法分析器的具体实现。 正文1、词法分析-16-塔里木大学-信息工程学院编译原理实验词法分析程序又称扫描器,它是编译过程的第一个阶段。其主要任务是从左到右依次描描字符串形式的源程序的各个字符,逐个识别出其中的单词,并将其转换成为内部编码形式的单词符号串输出,用于进行语法分析。通常可采用二元式(CLASS,VALUE)来表示一个单词符号的内部编码,其中CLASS为一整数码,用于表示该单词的类别;VALUE则是单词之值(如变量名在符号表中的序号,常数的二进制表示,以及运算

5、符和分隔符的编码,等等)。概括的说,扫描器在其工作过程中,一般应完成下列的任务:(1)识别出源程序中的各个单词符号,并将其转换成内部编码形式;(2)删除无用的空白字符、回车字符以及其他非实质性字符;(3)删除注释;(4)进行词法检查,报告所发现的错误。此外,视编译工作流程的组织,一些编译程序在进行词法分析时,还要完成将所识别出的标志符登录到符号表的工作。从功能上看,词法分析上把字符串形式的源程序转换为单词串形式,然后进行语法分析。从工作方式上看,他与语法分析之间存在两种接口方式。一种方式是将词法分析的输出结果存放在一个中间文件

6、上,后面的语法分析程序将它作为输入进行语法分析。另一种方式是将词法分析编成一个子程序,该子程序由语法分析程序调用,当语法分析程序需要读出一个具有独立意义的单词。本设计采用前一种方式。1.1根据状态转换图直接编程 编写一个词法分析程序,它从左到右逐个字符的对源程序进行扫描,产生一个个的单词的二元式,形成二元式(记号)流文件输出。在此,词法分析程序作为单独的一遍,如下图所示。 源程序 词法分析程序 记号文件 具体任务有: (1)组织源程序的输入 (2)拼出单词并查找其类别编号,形成二元式输出,得到单词流文件 (3)删除注释、空格和

7、无用符号 (4)发现并定位词法错误,需要输出错误的位置在源程序中的第几行。将错误信息输出到屏幕上。 (5)对于普通标识符和常量,分别建立标识符表和常量表(使用线性表存储),当遇到一个标识符或常量时,查找标识符表或常量表,若存在,则返回位置,否则返回0并且填写符号表或常量表。 标识符表结构:变量名,类型(整型、实型、字符型),分配的数据区地址 注:词法分析阶段只填写变量名,其它部分在语法分析、语义分析、代码生成等阶段逐步填入。 常量表结构:常量名,常量值 义1.2 词法分析程序的功能: 输入:所给文法的源程序字符串。 -16-塔

8、里木大学-信息工程学院编译原理实验输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码;       token为存放的单词自身字符串;       sum为整型常数。 例如:对源程序begin x:=9: if x>9 then x:=2*x+1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。