thunder_sword's blog thunder_sword's blog
来看漫画丫~
首页
分类
标签
归档
GitHub

thunder-sword

网安界的小菜鸡
来看漫画丫~
首页
分类
标签
归档
GitHub
  • 引论
  • 语言及其文法
  • 词法分析
  • 自顶向下语法分析方法
  • 自底向上优先分析
    • 定义:
      • 例子:
      • 注意:
    • 1.FirstVT集
      • 例子:
      • 伪代码:
    • 2.LastVT集
      • 例子:
    • 3.构造优先关系表的算法
      • 例子:
      • 伪代码:
    • 4.算符优先分析过程
      • 例子:
      • 注意要点:
      • 总结归约的策略:
      • 优缺点:
    • 5.算符优先分析中的错误处理
  • LR分析方法
  • 编译原理
thunder-sword
2021-10-12

自底向上优先分析

# *0x3.算符优先分析方法

算符优先分析法的思想源于表达式的分析,是利用相邻终结符号之间的关系来寻找可归约串。

将句型中的终结符号当作“算符”,借助于算符之间的优先关系确定规约子串,分析过程是自下而上的归约过程,不是一种严格的规范归约。

# 定义:

文法G中没有P→...QR...的产生式 P,Q,R属于非终结符 即,不存在具有相邻非终结符的产生式

image-20210923165804443

# 例子:

image-20210923164432364

# 注意:

  • a,b之间未必有优先关系,在优先表中,空白部分是一种错误关系
  • 相同的终结符之间的优先关系不一定是对称的
  • 如果有a = b,不一定有b = a(不具对称性)
  • 如果有a < b,不一定有b> a(不具对称性),因为只定义相邻运算符之间的优先关系,a,b相邻时,不一定b,a相邻。
  • 如果有a<b, b<c不一定有a <c

# 0x4.算符优先关系表的自动构造算法

# 1.FirstVT集

image-20210923164548096

image-20210923164612239

image-20210923164623257

# 例子:

image-20210923164830830

# 伪代码:

image-20210923164902495

# 2.LastVT集

image-20210923164927935

image-20210923164951641

image-20210923165002945

# 例子:

image-20210923165019443

# 3.构造优先关系表的算法

image-20210923165049491

# 例子:

image-20210923165104003

# 伪代码:

image-20210923165130366

# 4.算符优先分析过程

image-20210923165902764

# 例子:

image-20210923165941306

# 注意要点:

image-20210923170316014

# 总结归约的策略:

image-20210923170347584

# 优缺点:

image-20210923170359081

# 5.算符优先分析中的错误处理

使用算符优先分析法时,可在两种情况下发现语法错误:

  1. 若栈顶终结符号与下一个输入符号之间不存在任何优先关系
  2. 若找到某一可归约串,但不存在任一产生式,其右部与其匹配。
自顶向下语法分析方法
LR分析方法

← 自顶向下语法分析方法 LR分析方法→

最近更新
01
计算机系统的硬件结构
10-12
02
计算机系统概论
10-12
03
进程
10-12
更多文章>
Theme by Vdoing | Copyright © 2019-2021 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×