IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 编译原理--第四章 -> 正文阅读

[游戏开发]编译原理--第四章

第四章 自上而下的语法分析

4.1 语法分析器的功能

语法分析器,又称分析器,对单词符号串进行语法分析,识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”
请添加图片描述

  • 自上而下的分析:从文法的开始符号开始,向下推导,推出句子。
  • 自下而上的分析:雄踞子开始,向上规约,归约到文法的开始符号

4.2 自上而下分析面临的问题

回溯
请添加图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQqTrfJN-1647683004320)(assets/markdown-img-paste-20220317165555768.png)]

左递归造成无限循环
请添加图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IXKbA6lx-1647683004320)(assets/markdown-img-paste-20220317165753300.png)]

左公因子造成不确定性

问题

  • 文法中含有左递归 P ? + P a P \Rightarrow^+ Pa P?+Pa, 会造成无限循环
  • 回溯
  • 从最巡航的候选式开始匹配,虚假匹配现象会减少
  • 当最终报告分析不成功时,难于知道输入串中出错的确切位置
  • 由于带回溯的自上而下分析采用了一种穷尽一切可能的试探法,因此效率很低,代价极高,实践上价值不大

4.3 LL(1)分析法

4.3.1 左递归的消除

直接左递归

请添加图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jugttZIY-1647683004322)(assets/markdown-img-paste-20220317171137786.png)]

隐含左递归

消除无限循环
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w64KN7Of-1647683004325)(assets/markdown-img-paste-20220317171435399.png)]

隐式左递归确定 S ? Q c ? R b c ? S a b c S\Rightarrow Qc\Rightarrow Rbc\Rightarrow Sabc S?Qc?Rbc?Sabc

解决方案:
给定一个非终结符号的排序, … 如𝐴1, 𝐴2, … , 𝐴𝑛,使𝐴𝑖 → 𝛼的产生式,𝛼中仅含有𝐴𝑗,其中𝑗 ≥ 𝑖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zoIqoL1f-1647683004326)(assets/markdown-img-paste-20220317171819264.png)]

注意要求
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4rHKhm05-1647683004328)(assets/markdown-img-paste-20220317173518687.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UCqZZWEP-1647683004329)(assets/markdown-img-paste-20220317171949781.png)]

例题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bFFhVBvx-1647683004331)(assets/markdown-img-paste-20220317172056521.png)]

1、排序 :S,Q,R
2、
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nKNqphGm-1647683004332)(assets/markdown-img-paste-20220317172155155.png)]

因为R->SA A的序号比R小,将S替换掉,出现了Q,继续将Q替换掉,然后消除R的直接左递归。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q5HsWy3f-1647683004333)(assets/markdown-img-paste-20220317172649533.png)]

将S排到最后,S的产生式右侧不含 R Q,S是开始符号,因此最终的产生式会比较少

但是两种推导,都是等价的

推论

  • 含有回路的左递归无法消除: A ? + A A\Rightarrow^+A A?+A
  • 消除左递归与非终结符号的排序无关
  • 如果从开始符号依次推导出𝐴1, 𝐴2, … , 𝐴𝑛,则按其逆序排序时得到的产生式最少

4.3.2消除回溯 提左公因子

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GogOnn0P-1647683004335)(assets/markdown-img-paste-2022031917282676.png)]

  • S的两个候选是 xAy和z的首符号不同,因此很容易确定用哪个候选式匹配

在这里插入图片描述

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:25:48  更:2022-03-21 21:28:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 18:42:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码