描述块的文法G[boc block-> opt_stmts 0、m-sm!h|e stmt_list-> stmt list, stmt I E是终止符, E是终止符 还是非终止符
描述块的文法-G[block] block -> { opt_stmts } opt_stmts -> stmt_list | ε stmt_list -> stmt_list ; stmt | stmt ε是终止符, 还是非终止符 ε是终止符
给定文法G[S,其分析树/语 法树 根S为起始 叶节点为终止符( token)或e 中间节点为非终止符 ■例子:95+2,按下述文法的分析树 分析树-se 语法树 Tree
给定文法G[S],其分析树/语 法树 ◼ 根S为起始符 ◼ 叶节点为终止符(token)或ε ◼ 中间节点为非终止符 ◼ 例子:9-5+2,按下述文法的分析树 分析树-Parse Tree 语法树-Syntax Tree
,按文法G[sd的分析树 BG语法树) list digit list digit 是G[is饥]的一个句型 (这里是句子)的依据: digit 可为9-5+2产生一棵分析树 5+ 2 list-> list digit list digit digit digit->0||||||||
9-5+2,按文法G[list]的分析树 (语法树) list list digit list digit digit 9 - 5 + 2 list -> list + digit | list – digit | digit digit -> 0 | 1| 2|3|4|5|6|7|8|9 9-5+2是G[list]的一个句型 (这里是句子)的依据: 可为9-5+2产生一棵分析树
分析树构造过程/句型推导过程 list 判断 是否是文法G[ist] 的句型(这里是句子)的最左推 list 导过程如下: digit list = list digit list digit list- digit digit digit- digit digit digit >9-digit digit 9-5+ digit 2 >9-5+2 list -> list digit list digit digit digit->0||||||||
分析树构造过程/句型推导过程 list list -> list + digit | list – digit | digit digit -> 0 | 1| 2|3|4|5|6|7|8|9 list digit list digit digit 9 - 5 + 2 list => list + digit 判断9-5+2是否是文法G[list] 的句型(这里是句子)的最左推 导过程如下: => list – digit + digit => digit – digit + digit => 9 – digit + digit => 9 – 5 + digit => 9 – 5 + 2
小结:分析树构造过程/句型 推导过程 为判定一个串是否是一个文法的句型或句 子,分析树方法与推导方法效果一样。 分析树方法直观,但无法直接从结果分析 树中看出推导步骤。 推导方法可以看出中间推导过程 个串是一个文法的句型或句子if ■存在一棵分析树(语法树)if ■存在一个的最左推导或一个最右推导(规 推导)或即非最左也非最右推导。 棵分析树对应唯一的最左推导和唯一的 晶古拚已
小结:分析树构造过程/句型 推导过程 ◼ 为判定一个串是否是一个文法的句型或句 子,分析树方法与推导方法效果一样。 ◼ 分析树方法直观,但无法直接从结果分析 树中看出推导步骤。 ◼ 推导方法可以看出中间推导过程。 ◼ 一个串是一个文法的句型或句子iff ◼ 存在一棵分析树(语法树) iff ◼ 存在一个的最左推导或一个最右推导(规 范推导)或即非最左也非最右推导。 ◼ 一棵分析树对应唯一的最左推导和唯一的 最右推导