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

编译原理笔记

我是标题

    • 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.xdnf.cn/news/12369.html

相关文章:

  • LeetCode--23.合并k个升序链表
  • 计算机二级Python考试的核心知识点总结
  • x32dbg SwissArmyKnife 插件导入map文件不生效
  • Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
  • 家用小车用什么轮胎好?浅谈汽车轮胎品牌
  • Gemini 开发者 API 怎么用?接入指南(附示例)
  • 水库大坝安全监测系统是什么?需要用到哪些设备?
  • LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
  • 高并发feign调用 :Address already in use: no further information executing POST
  • 华为OD机试_2025 B卷_数组去重和排序(Python,100分)(附详细解题思路)
  • 【Elasticsearch】映射:Nested 类型
  • Docker部署Hive大数据组件
  • Vue 渲染 Markdown 文件完全指南
  • 前端项目初始化
  • 浏览器工作原理06 [#]渲染流程(下):HTML、CSS和JavaScript是如何变成页面的
  • 【Python】数据类型
  • 赋能大型语言模型与外部世界交互——函数调用的崛起
  • 数据治理在制造业的实践案例
  • 北斗卫星导航系统(BDS)的 RNSS 和 RDSS
  • VMware Workstation 与 Hyper-V 不兼容。请先从系统中移除 Hyper-V 角色,然后再运
  • PostgreSQL17 编译安装+相关问题解决
  • spring:实例化类过程中方法执行顺序。
  • 使用 Mechanical 脚本获取联合反作用力和力矩
  • Python Day43 学习(日志Day10-11复习)
  • 简单了解以下Hugging Face(抱抱脸)
  • 负载均衡LB》》HAproxy
  • php执行系统命令的四个常用函数
  • 西北某省级联通公司:3D动环模块如何实现机房“一屏统管”?
  • [蓝桥杯]轨道炮
  • android debug包和release包的区别