欢迎来到天天文库
浏览记录
ID:44416854
大小:542.81 KB
页数:18页
时间:2019-10-21
《SLR分析器的分析与构造》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SLR分析器的分析与构造作者姓名:张锐指导老师:张玉州摘要:语法分析是编译程序的重要组成部分,LR分析法是一种自下而上的语法分析方法,其适用范围大,在编译程序中大都釆用此法进行语法分析,SLR分析则是LR屮一种较简单有效的分析法;语法分析作为编译过程中一个不可缺少的步骤,对其进行研究有着非常重要的意义。本文阐述了语法分析的方法、地位及其意义,并对SLR分析器的分析与构造进行了具体的分析和探讨。关键词:语法分析,自下而上分析,LR分析,SLR分析1引言编译程序是把用高级语言(如PASCAL语言、C语言)编写的源程序翻译为与Z等价的目标程序(如汇编语
2、言程序、机器语言程序)的一种翻译程序,其工作过程非常类似于白然语言之间的翻译。为了把源程序翻译成与之等价的目标程序,编译程序一般要做词法分析、语法分析、语义分析、代码优化和代码生成等五个方面的工作。从而编译程序常由词法分析程序、语法分析程序、语义分析程序、代码优化程序和目标代码生成程序等五个主要部分组成,这五个部分相辅相成,互相联系,紧密相关。其中词法分析程序主要是依据词法规则从左到右扫描输入的源程序,进行词法分析,输出单词符号;语法分析程序主要是依据语法规则对单词符号进行语法分析,输出由语法单位构成的语法树,判断输入串是否构成语法上正确的“程序
3、”;语义分析程序依据语义规则把语法分析程序归约出(或推导出)的语法单位翻译成一定形式的中间代码;代码优化程序依据程序等价变换原则对中间代码进行优化处理;目标代码生成程序把优化后的中间代码翻译成目标程序。⑴语法分析方法不仅在编译程序及相关语言翻译程序构造中具有非常重要的作用,而且在其它领域也具有很多重要的应用。本文所讨论的问题是如何用C语言实现SLR分析器的分析与构造。一个LR分析器主要由总控程序、分析表与分析栈三部分组成,分析表是LR分析器的核心部分,有四种不同的LR分析表,SLR分析表是一种比较容易实现又有使用价值的,能够处理一些移进-归约冲突
4、的分析法的基础。不同的LR分析法、不同的文法,其LR分析总控程序是相同的,差别仅在于LR分析表的不同,故SLR语法分析器的构造实质就是SLR分析表的构造。2编译器的构造及编译程序的工作过程⑴囱2.1什么是编译器通常情况下,人们将能够完成一种语言到另一种语言变换的软件称为翻译器,而我们要谈的编译器就是其中的一类。所以编译器是一种计算机程序,是将便于人编写、阅读、维护的高级计算机语言翻译为计算机能解读、运行的低阶机器语言的程序,即编译程序。2.2编译器的构造通常编译器被分为前端和后端,前端的工作主要依赖于源语言而与li标机无关,后端工作依赖于目标机而
5、一般不依赖源语言。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作,即中间代码优化也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。后端工作包括目标代码生成和目标代码优化,以及相关出错处理和符号表操作。2.3什么是编译程序从功能上看,一个编译程序就是一个语言翻译程序。它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作冃标语言)的等价的程序。源语言通常是一个高级语言,如Pascal.C++、Java等,而目标语言通常是一个低级语言,如汇编或机器语言。编译程序的功能如图1所示:高级语言程序•編
6、岸程序低级语言程序(目标程序)图1编译程序的功能2.4编译程序的工作过程编译过程是指从输入源程序开始到输出目标程序为【I:的整个过程。为了把源程序翻译成与之等价的目标程序,编译程序一般要做词法分析、语法分析、语义分析、中间代码产生、代码优化和代码生成六个方而的工作,因此通常将编译过程划分成五个阶段(习惯上为了方便讨论,将语义分析与中间代码的产生看作一个阶段)。如下便是编译过程框图:源程序图2编译过程框图3语法分析语法分析是编译程序的重要组成部分,自下而上分析是语法分析的一种常用方法。语法分析器主要采用上下文无关文法的口上而下分析程序來进行构造。2
7、.1语法分析器的地位⑶语法分析是编译过程的核心部分,它是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。语法分析器在编译程序中的地位如图所示:图3语法分析器在编译程序中的地位3.2语法分析的任务⑷语法分析的任务是在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴)如“短语”、“子句”、“句子”(语句)、“程序段”和“程序”等。(1)依循规则:语言的语法规则(文法)(2)描述工具:上下文无关文法<1>文法:描述语言语法结构的形式规则(语法规则)<2>文法的基本组成终结符号:组成语言的基本符
8、号(基本字、标识符、常数、算符、界符),用小写字母a,b,co非终结符号(语法变量):代表语法范畴,表示一定符号串的集合,用大写字母A,
此文档下载收益归作者所有