编译原理_第二章文法和语言

第二章 文法和语言

2.1文法


文法是定义或描述语法结构的一组形式规则。

(1)文法的形式化定义:

G[S]=(Vn,Vt,P,S)
四元组G(

    非空有限非终结符集VN,

    非空有限终结符集VT,

    开始符号S,

    产生式集合P)

2.2语言


(1)推导与规约

一步推导叫直接推导,一步或多步推导叫正推导,零步或多步推导叫星推导

最左推导每一步展开最左边的非终结符,最右推导每一步展开最右边的非终结符,最右推导又称为规范推导

规约是推导的逆过程,最左推导的逆过程是最右规约,最右推导的逆过程是最左规约,最左规约又称为规范规约

(2)句型、句子和语言

设有文法G[S]:S——>Ab | C,A——>Aa|,C——>c

S推导出的符号串是文法G的句型。

 例如推导出的Ab是一个句型;

S推导出的只含有终结符的符号串是文法G的句子。

例如推导出的c是一个句子;

文法的语言是文法所有句子的集合,记为L(G)。

若两个文法定义的语言一样,则称这两个文法是等价的。

2.3语法树


语法树是一种描述上下文无关文法句型推导的直观工具,也称为推导树、语法分析树。

给定文法G,对于G的任何句型都能构造与之关联的语法树。

语法树的根结点是开始符号。

如果一个结点A的直接子孙结点从左到右依次是aBcd,那么A->aBcd一定是该文法的一个产生式。

在语法树生长的任何时候,所有叶子结点从左到右排列起来就是一个句型。

一个文法中,如果一个句子能有不止一棵语法树,那么称此句子具有二义性;如果一个文法含有二义性的句子,则该文法具有二义性。

最右推导过程
语法树

2.4句型


例:句型:n=E+T*F+i

语法树

(1)短语(非直接子树)

n相对于E的短语(E1的子树):E2+T3*F3;

i是相对于T1的短语

(2)直接短语(直接子树)

T*F为句型n相对于产生式T——>T*E的直接短语;

i为句型n相对于产生式F——>i的直接短语

(3)句柄

定义:一个句型的最左直接短语成为此句型的句柄

你可能感兴趣的:(编译原理_第二章文法和语言)