编译原理-第2部分形式语言导论-第三节 推导和语法树

1 引言

    外边是阳光明媚,窗内是安静闲适。刚才复习了两个小时的编译原理第三节,现在整理出来,把相关的内容分享给大家。

2 推导和短语

2.1 规范推导和规范规约

1.最左(最右)推导,是指对于一个推导序列中的每一步直接推导 αβ , 都是对α 中的最左(最右)非终结符进行替换。最右推导也称为规范推导,用规范推导推导出的句型称为规范句型。

2.归约是与推导相对的概念,推导是把句型中的非终结符用规则的一个右部来替换的过程,而归约则是把句型中的某个子串用一个非终结符来替换的过程。规范推导的逆过程,称为最左归约,也称为规范归约。

2.2 递归规则和文法的递归性



当一个语言是无穷集合时,则定义该语言的文法一定是递归的。

2.3 短语相关概念

1.短语



2.直接短语



3.句柄



4.素短语


3 语法树和二义性

3.1 语法树

对句型的推导过程给出一种图形表示, 这种表示称为语法树,也称推导树。



因为文法的每一个句型 (句子) 都存在一个推导,所以文法的每个句型(句子) 都存在一棵对应的语法树。

3.2 子树

语法树的子树是由某一结点连同所有分枝组成的部分。

3.3 简单子树

语法树的简单子树是指只有单层分枝的子树。

3.4 不同短语和语法树的对应关系


3.5 文法的二义性

如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义性的。

或者说,若一个文法中存在某个句子,它有两个不同的最左 (最右) 推导,则这个文法是二义性的。 

3.6 文法二义性的消除

1.不改变文法中原有的语法规则, 仅加进一些非形式的语法规定。

2.构造一个等价的无二义性文法。即把排除二义性的规则合并到原有文法中,改写原有的文法。

注:

(1)应该指出的是文法的二义性和语言的二义性是两个不同的概念。

(2)通常我们只说文法的二义性,   而不说语言的二义性,   这是因为可能有两个不同的文法G和G' ,而且其中一个是二义性的,另一个是无二义性的,   但却有L(G)=L(G'), 即这两个文法所产生的语言是相同的。

4 结束语

这篇文章的结束,意味着第二部分就结束了,在今后的分享内容将会是词法分析器的知识。

分享和帮助是人生一大乐事,希望可以帮助您。本人才疏学浅,如果有不当之处,还请批评指正。同时欢迎大家评论、点赞及转发!

猜你喜欢

转载自blog.csdn.net/chen_yongbo/article/details/79813068