电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

第三章语法分析VIP免费

第三章语法分析_第1页
1/56
第三章语法分析_第2页
2/56
第三章语法分析_第3页
3/56
第三章语法分析每种程序设计语言都有描述程序语法结构的规则。例如,Pascal程序由程序块(又叫分程序)构成,程序块由语句组成,语句由表达式组成,表达式由记号组成等等。这些规则可以用上下文无关文法或BNF范式(Backus-NaurForm)描述。编译器常用的文法分析方法有自上而下和自下而上两种。正如它们的名字所示,自上而下分析器建立分析树是从根结点到叶结点,而自下而上分析器恰好反过来。它们的共同点是从左向右地扫描输入,每次一个符号。最有效的自上而下和自下而上的分析法都只能处理上下文无关文法的子类。这些子类足以描述程序设计语言的大多数语法结构,其中LL文法的分析器通常用手工实现,而LR文法的分析器通常利用自动工具构造。本章致力于编译器采用的典型语法分析方法。我们首先提出有关上下文无关文法的基本概念,然后介绍适合于手工实现的预测分析技术,最后给出自动工具用的LR分析算法。由于程序员准备的代码经常会出现一些语法错误,因此我们还扩展所介绍的分析方法,使之能从常见的错误中恢复过来。3.1上下文无关文法我们先看一下语法分析(简称分析)器在本书的编译器模型中位置,然后介绍上下文无关文法。如图3.1所示,分析器读取词法分析器提供的记号流,检查它是否能由源语言的文法产生,输出分析树的某种表示。另外,我们希望该分析器能以易理解的形式报告任何语法错误,并从错误中恢复过来,使后面的分析能继续进行下去。事实上,还有一些其它任务可能在分析时完成,例如把各种记号的信息收入符号表,完成类型检查和其它的语义检查,并产生中间代码。所有这些都包罗在图3.1的“前端的其余部分”一框中,在下面三章将详细讨论它们。3.1.1上下文无关文法的定义在第二章,我们用正规式来定义一些简单的语言,但是很多复杂一些的语言不能用正规式表达。例如,正规式不能用于描述配对或嵌套的结构,具体的例子有,由配对括号构成的串的集合不能用正规式描述,语句的嵌套结构也不能用正规式描述。还有,重复串也不能用正规式表示,例如,集合{wcw|w是a和b的串}不能用正规式描述。正规式只能表示给定结构的固定次数的重复或者没有指定次数的重复。这一节,我们定义描述功能比正规式更强的上下文无关文法,介绍一些与分析有关的术语。词法分析器记号取下一个记号源程序图3.1分析器在编译器模型中的位置分析树前端的其余部分分析器分析树符号表形式上说,一个上下文无关文法G是一个四元组(VT,VN,S,P),其中:(1)VT是一个非空有限集合,其元素称为终结符。在我们谈论程序设计语言的文法时,记号是终结符的同义词。(2)VN是一个非空有限集合,其元素称为非终结符,并有VT∩VN=。在下面的例3.1中,expr和op是非终结符。非终结符定义终结符串的集合,它们用来帮助定义由文法决定的语言。非终结符还强加层次结构于语言,这种层次结构对语法分析和翻译是有用的。(3)S是非终结符,称为开始符号,它定义的终结符串集就是文法定义的语言。(4)P是产生式的有限集合,每个产生式的形式是A(有时用::=代替箭头),其中AVN,∈(VT∪VN)*。开始符号至少出现在某个产生式的左部。产生式指出了终结符和非终结符组成串的方式。例3.1文法({id,+,*,,(,)},{expr,op},expr,P)定义了有加、乘和一元减的算术表达式P由下列产生式组成:exprexpropexprexpr(expr)exprexprexpridop+op*为了表示上的简洁,在本书的剩余部分将采用下列约定来表示文法。(1)下列符号是终结符:(a)字母表前面的小写字母,如a,b,c;(b)黑体串,如id或while;(c)数字0,1,…,9;(d)标点符号,如括号,逗号等;(e)运算符号,如,等。(2)下列符号是非终结符:(a)字母表前面的大写字母,如A,B,C;(b)字母S,并且它通常代表开始符号;(c)小写字母的名字,如expr和stmt。(3)字母表后面的大写字母,如X,Y和Z,代表文法符号,即非终结符或终结符。(4)字母表后面的小写字母,主要是u,v,…,z,代表终结符号串。(5)小写希腊字母,例如,和,代表文法的符号串。(6)如果A1,A2,…,Ak是所有以A为左部的产生式(称它们为A产生式),则可...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

第三章语法分析

您可能关注的文档

文章天下+ 关注
实名认证
内容提供者

各种文档应有尽有

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部