第四章 语法分析-1.pptxVIP

  • 14
  • 0
  • 约7.38千字
  • 约 107页
  • 2017-05-19 发布于河南
  • 举报
第四章 语法分析-1

编译原理 Principle of Compiler;语法分析概述 自顶向下分析 不确定的自顶向下分析(递归下降分析法) LL(1) 自底向上分析 算符优先方法(略) SLR(1), LALR(1), LR(1) 总结;语法分析的任务;语法分析的任务;2种类型的分析器 自顶向下方法 分析树是从根到叶子节点的顺序构建的 实际上,是寻找从开始符号出发到句子的推导序列 分析器的输入由左到右一个符号一个符号的扫描;2种类型的分析器 自底向上方法 分析树是从叶子节点到根节点的顺序构建的 实际上,是寻找从句子出发到开始符号的归约序列 分析器的输入由左到右一个符号一个符号的扫描;自顶向下分析与推导序列 分析句子: id * id;自底向上分析与归约序列 分析句子: id * id;不确定的自顶向下分析(递归下降方法) 分析树从上到下,从左到右的构建过程 考虑以下文法: E→T | T + E T→int | int * T | ( E ) 分析句子: ( int ) 从开始符号E作为根节点出发 按顺序尝试该非终结符号的所有规则;E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );E→T | T + E T→int | int * T | ( E );23;不确定的自顶向下分析(递归下降方法) 带回溯的分析方法 本质上是一种基于穷举原理的试探方法,是个反复使用不同的产生式谋求匹配输入串的过程 不确定性体现在每次选择的产生式不一定是正确的 在编程实现的时候可以为每个非终结符设计为一个过程,通过过程的递归调用来实现分析过程。;递归下降子程序 为每个非终结符设计为一个过程,通过过程的递归调用来实现分析过程。;不确定的自顶向下分析方法的特点 优点: 对文法的限制较小 困难和问题: 回溯,造成效率低下,代价极高 文法的左递归 出错时难以确定出错的位置 这种方法只有理论价值,实践中价值不大 改进 消除文法的左递归 克服回溯问题;三种类型的左递归;直接左递归的消除;直接左递归的消除;直接左递归的消除;直接左递归的消除;直接左递归的消除;33;间接和潜在左递归的消除 代入法: 将一个产生式规则右部的α中的非终结符N替换为N的候选式。如果N有 n个候选式,右边的α重复n次,而且每一次重复都由N的不同候选式来代替N。 间接和潜在左递归通常能通过代入转换为直接左递归;输入: 给定一个不包含环路(没有A?+A的推导)和形如A→ε的产生式的文法G 输出: 一个等价的无左递归文法 算法过程 对文法G的所有非终结符进行排序,形成A1,A2,…, An for i:=1 to n do begin for j:=1 to i-1 do begin 把每个形如Ai→Ajγ的规则改写成: Ai→δ1γ|δ2γ|…δkγ, 其中Aj→δ1|δ2|…|δk是关于当前Aj的产生式 end 消除关于Ai的直接左递归; end ;例子 S→Aa | b A→Ac | Sd 排序: S, A 代入后得到 S→Aa | b A →Ac | Aad | bd 消除直接左递归后 S→Aa | b A →| bdA’ A’→cA’ | adA’| ε ;例子 S→Aa | b A→Ac | Sd ;回溯产生的原因 文法中每个非终结符A的产生式右部称为A的候选式,如果有多个候选式左端第一个符号相同, 如A→α1|α2|…|αm ,其中有多个αi以a为头,则语法分析程序无法根据当前输入符号a选择产生式,只能试探。 如: 以下两条规则该如何选择 stmt → if (expr) stmt else stmt | if (expr) stmt 具体表现为两种情况 ;具体表现为两种情况 第一种情况: 文法中相同左部的规则,其右部左端第

文档评论(0)

1亿VIP精品文档

相关文档