编译原理及其习题解答(武汉大学出版社)课件chap2.pptVIP

  • 11
  • 0
  • 约1.37万字
  • 约 84页
  • 2019-09-06 发布于广东
  • 举报

编译原理及其习题解答(武汉大学出版社)课件chap2.ppt

* 二义性其它问题 文法和语言 人们已证明,二义性问题是不可判定的,即不存在一个算法,它能在有限步骤内,确切地判断一个文法是否是二义的。我们所能做的就是为无二义性寻找一些充分条件。 例如对文法G[E]: E→ E+E | E*E | (E) | i 修改,规定运算符“+”与“*”的优先关系和结合规则,设“*”的优先性高于“+”,且服从左结合。 G’: E→ T | E+T T→ F | T*F F→ (E) | i * 接上页例子 分析:7条产生式中只有第1条具有递归性,其它的产生式最终都向终结符靠拢。 注意: S→ aSBE 与S→0S1的相似性,都可用同一模板来表示S→ □S□ ① 使用产生式(1) n-1次,得推导序列:S  an-1S(BE)n-1; ②使用产生式(2) 一次,得到: S an(BE)n; ③使用产生式(3)的右部替换EB,使最终得到的串中,所有的B都先于所有的E,即S anBnEn; * 接上例 ④使用产生式(4)一次,得到S an bBn-1En; ⑤使用产生式(5) n-1次,得到S an bnEn; ⑥使用产生式(6) 一次,得到S an bn eEn-1; ⑦使用产生式(7) n-1次,得到S an bn en; 因此,L(G)={an bn en | n≥ 1} 说明:上述分析中,步骤③是关键一步,否则不能推导出终结符号串。例如假设n=3,S aaaBEBEBE aaaBBEEBE aaabBEEBE aaabbEEBE aaabbeEBE aaabbeeBE * 上下文有关,顾名思义就是对非终结符进行替换时必须考虑上下文。例如,1型文法G的产生式也可写成αAβ→ αγβ,其中α、β、γ都在(VN∪VT)*中,且γ≠ ε,A∈ VN ,则说明了非终结符A必须在α、β这样一个上下文环境中才可以替换。  上下文有关文法能生成anbncn类特征的语言。但它不能描述L={αcα|α∈(a|b)*}类语言。 对上下文有关文法的说明 * 定义 2型文法(或称上下文无关文法,CFG Context Free Grammar) 设G=( VN, VT, P, S)为一文法,若G的任何产生式形似A→ β,其中A ∈ VN, β ∈ (VN∪VT)+ 。 例:G=({S,A,B},{a,b},P,S),其中P由下列产生式组成 S→aB|bA A→a|aS|bAA B→b|bS|aBB 例:G=(VN, VT, P, S), VN ={S}, VT ={0, 1},P由下列产生式组成: (1) S→0S1; (2) S→01; * 上下文无关文法的说明   上下文无关,顾名思义就是非终结符的替换可以不必考虑上下文。由于这种文法对程序已基本可以描述,因此,上下文无关文法常简称为文法。   上下文无关文法最多能生成anbn类特征的语言,不能生成anbncn类特征的语言。 * 设G=( VN, VT, P, S)为一文法,若G的任何产生式A→ α或A→ α B ,其中A、B ∈ VN ,α ∈ VT* 。 对任何正规文法G,都可以设计一个不确定的有穷自动机NFA,它能够而且只能够识别G的语言。 定义 3型文法(或称正规文法,RG Regular Grammar) 例:文法G=({S,A,B},{0,1},P,S),其中P由下列产生式组成 S →0A|1B|0 A →0A|1B|0S B →1B|1|0 * 左线性文法 设G=( VN, VT, P, S)为一文法,若G的任何产生式A→α或A→ Bα ,其中A、B ∈ VN ,α∈ VT* 。 左线性文法=右线性文法(非严格的转换) 设左线性文法为G=( VN, VT, P, S),右线性文法为G’=( VN’, VT, P’, S’),其中 VN’= VN+{S’},P’转化方式为: P P’ A→ Bα B →α A A→α S’ →α A S→ε * 2.3.2 文法分类的意义 自动机 具有有穷描述的某种机器,对于给定文法,可接收某个终结符号串,并确定是否能从该文法推导出来。 分析器 判定(分析)一个终结符号串是否是某个文法的句子,给出给定串的推导序列,完成此工作的自动机,称为分析器。 正规文法与自动机 自动机由一个有穷状态集和一个

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档