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 结束语
这篇文章的结束,意味着第二部分就结束了,在今后的分享内容将会是词法分析器的知识。
分享和帮助是人生一大乐事,希望可以帮助您。本人才疏学浅,如果有不当之处,还请批评指正。同时欢迎大家评论、点赞及转发!