编译原理第2章_文法和语言.pptVIP

  • 24
  • 0
  • 约8.22千字
  • 约 35页
  • 2017-02-07 发布于湖北
  • 举报
2.2 句型的语法树和文法的二义性 文法G=({E,T,F},{+,*,i,(,)},P,E),其中P为: E?E+T|T T?T*F|F F?(E)|i 句子i+i*i的规范归约为: E E ?E+T ?E+T*F T ?E+F*i F ?E+i*i T ?T+i*i E ?F+i*i T ?i+i*i + * i i F 何时能够规约?利用哪个产生式进行规约? 根据读入字符及现有句型,判断是否为句柄,如为句柄,则进行规约。 E E + T T * F i i T F i F ?E+T*i F i 2.2 句型的语法树和文法的二义性 规范归约算法: 符号栈S[k]:存放句型的前缀,初始值为”#”; 输入缓冲区R:存放要识别的串,初始值为”i+i*i#”; 单元a:从R左侧读入符号并归约,直到读到结束符”#”。 算法: S1:置初值a=“”; k=1; s[1]=“#”; S2:从R中读入下一个符号到a; S3:若s[k]的内容=“#E”且a=“#”,则归约成功,结束;否则转S4; S4:s[k]栈顶部分为当前句型的句柄,转S5;否则转S6; S5:s[k]栈顶部分用一个产生式左部代替; S6:a中符号移进s[k],转S2; S7:End。 2.2 句型的语法树和文法的二义性 文法G=({E,T,F},{+,*,i,(,)},P,E),其中P为: E?E+T|T

文档评论(0)

1亿VIP精品文档

相关文档