欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 【期末复习】编译原理

【期末复习】编译原理

2025/4/19 5:42:18 来源:https://blog.csdn.net/leadera_/article/details/144358845  浏览:    关键词:【期末复习】编译原理

1. 语法描述

1.1. 上下文无关文法

1.2. 句子 & 句型 & 语言

    1. 推导出来的都是句型
    2. 但是如果句型中只含有终结符,那就是句子
    3. 所有的句子合起来,才是语言

1.3. 文法

文法就是推导的式子。

1.4. 文法二义性

1.5. 文法二义性证明——根据最左 \ 最右推导有两种

1.6. 语言二义性

如果文法没有二义性,也可能使得语言是二义性的。

1.7. 二义性的性质

二义性文法可以转化为无二义性的文法。

1.8. 上下文无关文法的限制

1.9. 文法的类型

2. 词法分析

2.1. DFA

S0 只能是一个(元素)

F 可以有很多(集合)

2.2. NFA

2.3. DFA 和 NFA 区别

2.4. NFA 转换为 DFA

2.4.1. 先对 NFA 转换,用以下规则

2.4.2. 构造状态转换矩阵

2.4.3. 转换为数字

I 这一列从上到下依次排序,然后对应转换后两列的值。

2.4.4. 化简

2.5. 正规式和正规集的转换

3. 语法分析——自上而下

3.1. 消除左递归

  1. 竖线后面的写前来,后面跟一个 A'
  2. 剩下的写前来,后面跟一个 A',加竖线和空串

3.2. 构造非终结符的 FIRST 集合

3.2.1. 步骤

  1. 找出所有的非终结符,遍历所有的文法,直到规则不发生变化为止
  2. 如果是符号,就将其加入到 FIRST(左边的非终结符)
  3. 如果不是符号,就将“->”右边的非终结符的 FIRST 有的元素,加入到右边的非终结符的 FIRST 集合中

3.3. 构造非终结符的 FOLLOW 集合

3.3.1. 步骤

后面如果是一个非终结符,最终能够推出来的是‘空’,那么就是第三种情况。

3.3.2. 例题

3.4. 分析表构建

是根据 FIRST 和 FOLLOW 集进行构造。

  1. 如果 FIRST 中没有空,直接在 FIRST 里的元素上写上产生式
  2. 如果 FIRST 中有空,要在 FOLLOW 集里的元素写上产生空的产生式

3.5. LL(1)的意义

4. 语法分析——自下而上

4.1. 概念

4.1.1. 短语

  • 短语:任意一颗子树中,如果根结点经过若干步才推导出了叶子结点,则这些叶子结点组成的序列就是相对于这棵子树的短语

4.1.2. 直接短语

  • 直接短语:属于短语,只不过不能经过若干步的推导了,必须一步就能推导出来叶子结点来,这些叶子结点组成的序列才是相对于这颗子树的直接短语

4.1.3. 句柄

直接短语中的最左直接短语为该句型的句柄

4.1.4. 素短语

素短语,是指至少含有一个终结符的短语,并且除自身外,不包含更小的素短语。

4.1.5. 最左素短语

最左素短语是句型中最左边的素短语。

4.1.6. 例子

4.2. 规范规约&最右推导

4.3. 算符优先级规则

  1. 后出现的优先级高。
  2. 两条原则:
    1. 设终结符 a 在非终结符 A 的前面,那么 a <· 所有 A 的 firstVT
    2. 设非终结符 A 在终结符 a 的前面,那么 A 的 lastVT ·> a

VT 就是 VT 就是终结符的意思。

4.4. LR 分析

4.4.1. LR 分析器

4.4.2. LR(0)分析器

4.4.3. LR(0)分析表的构造

拓广文法如果没有 S',那么就需要写上 S'->S。

4.4.4. ACTION 和 GOTO 表构造造

  1. action 就是 VT,goto 就是 VN。
  2. ACTION 写的是 rj 或者 sj, GOTO 写的是序号(表示下一步到达哪个状态)。
    1. 初始的项目集规范族 在哪,acc 就在哪
    2. 其余的只有规约项目的,都填 rj
    3. 其余的,都填 sj

4.5. LR(1)分析表

4.5.1. 构造

另一个例子

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词