编译原理第三版学习-第二章文法与语言-期末速成-华中科技大学

1、文法的形式化定义

文法G定义为四元组G=(V_N,V_T,P,S)

(1)V_N为非终结符(或语法实体,或变量)集。即可以继续推导的符号集。

(2)V_T为终结符集。即不可以继续推导的符号集。

注1:V_N\cap V_T=\Phi两者不相交。

注2:V_N\cup V_T统称为文法符号集,可以用V表示。

(3)P为产生式集合,即规则\left ( \alpha \rightarrow \beta \right )的集合,描述怎样将前两者组成串。\alpha\beta都属于文法符号集的闭包,其中\alpha至少包含一个非终结符。

注3:规则,也称重写规则、产生式或生成式,是形如\alpha \rightarrow \beta\alpha::=\beta\left ( \alpha , \beta \right )有序对。\alpha为规则的左部,\beta为规则的右部。

(4)S称作识别符或开始符,是一个非终结符,至少在一条规则中作为左部出现。是该文法中最大的语法成分。

2、文法的相关定义

3、文法的类型

(1)0型文法(短语文法)

        如果一个文法的所有规则,左侧至少含有一个非终结符,则称此文法为 0 型文法,也称为短语文法。 

        即毫无限制。

(2)1型文法(上下文有关文法)

        产生式形如:\alpha \rightarrow \beta,其中:\left | \alpha \right | \leq \left | \beta \right |,仅S\rightarrow \varepsilon例外。

        即产生式中左部符号的个数不可小于右部符号的个数。

(3)2型文法(上下文无关文法)

        每一个产生式\alpha \rightarrow \beta都满足\alpha是一个非终结符。

        隐形满足1型文法的要求,因为\left | \alpha \right | =1\left | \beta \right |\geq 1

(4)3型文法(正规文法)

        右线性文法:每一个产生式都是A\rightarrow\alpha BA\rightarrow \alpha,A和B都是非终结符,\alpha\in (V_T)^{*}

        即产生式右部有非终结符,并且在同一侧。类似地还有左线性文法。

注:在不考虑空产生式的情况下各型文法逐级包含。

我们之后提到的文法除特殊说明,都是上下文无关文法。

4、语法树(推导树)

在推导的任何一步都是对\alpha的最左(最右)的非终结符进行替换,则称为最左(最右)推导

最右推导常被称为规范推导,得到的矩形称为右句型或规范句型

语法的二义性

如果文法G的某个句子存在至少两棵不同的语法树,则称文法G是二义性的。

性质一:如果文法是无二义性的,一个句子的语法树反映了该句子的全部推导过程;

性质二:如果文法是无二义性的,一个句子的最左(最右)推导是唯一的。(证明二义性方法

例子:文法G[E]:E→E+E︱E*E︱(E) | i,证明G是二义性的。

对于句子 i + i * i 的最左推导有两种语法树:

                            

所以文法G[E]是二义性的文法。

5、句型的分析

这里就不给出定义了,直接以下图为例:

句子aabbaa

G[S]:S→aAS︱a

           A→SbA︱SS︱ba

(1)短语:查看每一个子树,其叶节点的符号串就是短语。

从上至下从左至右逐个查看节点:

对于第一层的S,其短语为:a_1 a_2 b_1 b_2 a_3 a_4

对于第二层的A,其短语为:a_2 b_1 b_2 a_3

对于第二层的S,其短语为:a_4

对于第三层的S,其短语为:a_2

对于第三层的A,其短语为:b_2 a_3

(2)直接短语(简单短语):若一个子树的孩子节点全是叶子节点,它的短语就是直接短语

对于第二层的S、第三层的S、第三层的A,它们只有叶子节点,因此直接短语为a_4a_{2}b_{2} a_{3}

(3)句柄:右句型的最左直接短语,称为该句型的句柄

也就是通过最右推导后得到的句型,它的语法树中的最左边的直接短语。

上例中句柄为a_{1}

持续更新中,有问题可在评论区指出,也可以提问,会尽快解答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Haoye!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值