当前位置: 首页 > news >正文

编译原理笔记

我是标题

    • 1.编译原理流程
    • 2.推导的定义
    • 3.句型,句子定义
    • 4.文法的几种类型
    • 5.短语
    • 6.给定语法写出文法以及给定文法写出语法。
    • 7.消除左递归
    • 8.消除回溯
    • 9.NFA
  • 自上而下分析法
    • 10.first集follow集
    • 11.预测分析表
    • 12.LL(1)
    • 13.LL(1)的输入串分析
  • 自下而上分析法
    • 13.LR(0)

1.编译原理流程

在这里插入图片描述

2.推导的定义

在这里插入图片描述
在这里插入图片描述

3.句型,句子定义

在这里插入图片描述

4.文法的几种类型

在这里插入图片描述
二型文法也叫上下文无关文法
在这里插入图片描述

5.短语

在这里插入图片描述

句柄为一棵树最左侧直接短语,在上图中为P。
直接短语是再无分支的叶子节点。
在这里插入图片描述

6.给定语法写出文法以及给定文法写出语法。

在这里插入图片描述
在这里插入图片描述

7.消除左递归

在这里插入图片描述
在这里插入图片描述

8.消除回溯

在这里插入图片描述

9.NFA

在这里插入图片描述

自上而下分析法

10.first集follow集

在这里插入图片描述

first求法例如
找X的first集合,就看这个字母产生式右边的第一个,如果是终结符就写入,如果是非终结符就继续往下。
在这里插入图片描述
follow集的求法:
1.如果是起始符加上‘#’。
2.如果这个集合右侧为空则等于箭头左侧的Follow集合。
3.如果这个集合的右侧为终结符直接写入。否则他的Follow集合是右侧非终结符的first集合去掉空串。
4.如果右侧非终结符能直接推导到空串,那么要加入Follow右侧集。
在这里插入图片描述
例子
在这里插入图片描述

11.预测分析表

在这里插入图片描述

12.LL(1)

13.LL(1)的输入串分析

1.要点:产生式反着压,转换为终结符,并且尽量往输入符号凑。
在这里插入图片描述

自下而上分析法

13.LR(0)

在这里插入图片描述
1.拓广文法:
用S‘ 指向它本身,并且吧有或(|)的产生式分离开来,标上序号。
2.画活前缀DFA
从开始符号进行第一次规约/移进
如果移进后,点右侧是非终结符,则把上一个状态的该字母产生式全部写入。
如果这个状态到下一个状态重复了那么将箭头指向自身。
在这里插入图片描述
3.引入SLR(1)
可以发现I4和I5发生了移进和归约的冲突。

4.填表
ACTION下放终结符和#。
GOTO下放非终结符。
左侧0-i个State。
1 / # 位置固定为 acc。
通过观察DFA。
I0通过a可以到达状态4填入S4。
I0通过S可以到达状态1填入1。
如果Ix是归约式子,在对应产生式右侧的Follow集合下方填入rx。
任何状态下的归约式子都要如此操作。
I2是归约式子,在对应产生式右侧的Follow集合下方填入r2.
在这里插入图片描述
5.分析表
规则:
1.状态栈顶和余串栈顶查表找Action,在下一行写入状态栈,符号站,余串出栈。
2.如果Action为ri,那么通过初始产生式将现有符号栈归约。
比如步骤3:
5和d匹配查表得到r6,那么将现有符号栈匹配产生式6进行归约,归约了几个符号那么状态对应出栈几位。
结果为 05 #bB d#
那么将5和B匹配找到GOTO为7,填入下一个状态。
于是为057 #bB d# GOTO 7。
直到ACTION为acc。
Ri看归约结果,Si看剩余输入串。
于是有
在这里插入图片描述

初始状态
在这里插入图片描述
结束状态

在这里插入图片描述

http://www.lqws.cn/news/193825.html

相关文章:

  • ComfyUI 文生图教程,进行第一次的图片生成
  • curl获取ip定位信息 --- libcurl-multi(三)
  • RocketMQ入门5.3.2版本(基于java、SpringBoot操作)
  • c++算法学习5——贪心算法
  • 类Transformer架构
  • 在线OJ项目测试
  • JMM初学
  • 51单片机——计分器
  • 【Go面试陷阱】对未初始化的chan进行读写为何会卡死?
  • 【汇编逆向系列】八、函数调用包含混合参数-8种参数传参,条件跳转指令,转型指令,movaps 16字节指令
  • 第J3-1周:DenseNet算法 实现乳腺癌识别
  • 消防一体化安全管控平台:构建消防“一张图”和APP统一管理
  • 【驱动】Orin NX恢复备份失败:does not match the current board you‘re flashing onto
  • 大模型如何革新用户价值、内容匹配与ROI预估
  • SQLServer中的存储过程与事务
  • 柴油发电机组接地电阻柜的作用
  • 【大模型】大模型数据训练格式
  • UFC911B108 3BHE037864R0108
  • SOC-ESP32S3部分:31-ESP-LCD控制器库
  • 2025年SDK游戏盾实战深度解析:防御T级攻击与AI反作弊的终极方案
  • 在Linux查看电脑的GPU型号
  • Nest框架: 日志功能之收集,筛选,存储,维护
  • C++ --- vector
  • [Java恶补day17] 41. 缺失的第一个正数
  • Python训练第四十六天
  • 如何选择正确的团队交互模式:协作、服务还是促进?
  • 【Linux】(1)—进程概念-⑤进程调度
  • 第21讲、Odoo 18 配置机制详解
  • leetcode78. 子集
  • 大学课程:计算机科学与技术专业主要课程,是否落伍了?