编译第四篇08本.pptVIP

  • 2
  • 0
  • 约 70页
  • 2017-06-07 发布于湖北
  • 举报
第四章 自上而下 语法分析 4.1 语法分析器的功能 4.1 语法分析器的功能 4.1 语法分析器的功能 语法分析的方式 1)自上而下语法分析 反复使用不同产生式进行推导以谋求与输入符号串相匹配 2)自下而上语法分析 对输入符号串寻找不同产生式进行归约直到文法开始符号 注:这里所说的输入符号串指词法分析所识别的单词 4.2 下推自动机模型 4.2 下推自动机模型 4.2 下推自动机模型 注: 1)由此定义的PDA肯定是不确定的PDA,这给语法分析会带来不确定性,在构造PDA M的算法的时候,要对PDA做一些限制 2)PDA采用“ ”来表示PDA做了一步动作 3)输入串能为PDA所接受,仅当输入串读完,下推栈为空;或者输入串读完,控制器到达某些终态 4)有时,下推自动机还配置输出带,以记录推导或归约过程所用的产生式编号 5)对于形如A w的产生式, 有δ(q,e,A)=(q,w),称为推导 δ(q,a,a)=(q,e),称为匹配,其中a∈∑ 4.3 自上而下分析面临的一般问题 一、自上而下语法分析定义 从文法的开始符号开始,反复使用不同产生式进行推导以谋求与输入符号串相匹配。 注:此处的输入符号串是指词法分析结果的一串二元式 二、一般方法 试探法:带回溯的自上而下分析法 4.3 自上而下分析面临的一般问题 1、基本构成 设下推栈的初始状态包含两个符号:‘#S’,其中‘#’为栈底,‘S’为文法开始符号。整个分析过程在语法分析程序控制下进行,在语法分析中用到的文法产生式的表,称为语法表。 4.3 自上而下分析面临的一般问题 2、算法 (1)若栈顶符号X是非终结符,查询语法表,找出一个以X作为左部的产生式,X出栈,并将其右部反序入栈,且输出带记下产生式编号—推导 (2)若栈顶符号x是终结符,但读头下的符号也是x,则x出栈,读头指向下一个符号—匹配 (3)若栈顶符号x是终结符,但读头下的符号不是x,则匹配失败,这说明可能前面推导时选错了候选式,退回到上次推导现场(包括栈顶符号,读头的指针和输出带上的信息—回溯 (4)回溯后选取另一候选式进行推导,若没有候选式可选,则进一步回溯。若回溯到开始符号又已无候选式可选,则识别失败 (5)若栈内仅剩下“#”,且读头也指向“#”,则识别成功 4.3 自上而下分析面临的一般问题 例:文法产生式如下,请分析符号串x*y#的过程 1)S xAy 2) A ** 3) A * 4.3 自上而下分析面临的一般问题 例:文法产生式如下,请分析符号串x*y#的过程 1)S xAy 2) A ** 3) A * 4.3 自上而下分析面临的一般问题 例:文法产生式如下,请分析符号串x*y#的过程 1)S xAy 2) A ** 3) A * 4.3 自上而下分析面临的一般问题 例:文法产生式如下,请分析符号串x*y#的过程 1)S xAy 2) A ** 3) A * 4.3 自上而下分析面临的一般问题 例:文法产生式如下,请分析符号串x*y#的过程 1)S xAy 2) A ** 3) A * 4.3 自上而下分析面临的一般问题 例:文法产生式如下,请分析符号串x*y#的过程 1)S xAy 2) A ** 3) A * 4.3 自上而下分析面临的一般问题 例:文法产生式如下,请分析符号串x*y#的过程 1)S xAy 2) A ** 3) A * 4.3 自上而下分析面临的一般问题 例:文法产生式如下,请分析符号串x*y#的过程 1)S xAy 2) A ** 3) A * 4.3 自上而下分析面临的一般问题 例:文法产生式如下,请分析符号串x*y#的过程 1)S xAy 2) A ** 3) A * 4.3 自上而下分析面临的一般问题 3、带回溯的自上而下分析法的缺陷 消除回溯 1)产生回溯的原因 进行推导时,若产生式存在多个候选式,选择哪个候选式进行推导存在不确定性。 2)消除回溯的基本原则 对文法的任何非终结符,若能根据当前读头下的符号,准确的选择一个候选式进行推导,那

文档评论(0)

1亿VIP精品文档

相关文档