第二章 文法和语言
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|\varepsilon ,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)直接短语(直接子树)
TF为句型n相对于产生式T——>TE的直接短语;
i为句型n相对于产生式F——>i的直接短语
(3)句柄
定义:一个句型的最左直接短语成为此句型的句柄