06第6章 语法制导翻译技术幻灯片.pptVIP

  • 5
  • 0
  • 约2.24万字
  • 约 77页
  • 2017-01-20 发布于浙江
  • 举报
1)#入栈,文法开始符号S入栈,输入指针指向符号+ +NUM↑2NUM↑3# S # 符号栈: 输入串 +NUM↑2NUM↑3# E ↑p @ANSWER ↓r # 符号栈: 2)查分析表S行+列,入栈,因为r = p,所以E↑p为指向@ANSWER↓r的指针。 符号 输入符号 + * NUM # S E 1 2 1 3 1 4 ? ? 输入符号串+NUM↑2NUM↑3#的分析过程: * * (1)S→E↑p@ANSWER↓r r = p (2)E↑p→+E↑qE↑r@ADD↓A1,A2↑R A1 = q, A2 = r, R = A1 + A2, p = R (3)E↑p→*E↑qE↑r@MULT↓A1,A2↑R A1 = q, A2 = r, R = A1 * A2, p = R (4)E↑p→NUM↑q p = q? NUM↑2NUM↑3# E ↑q E ↑r @ADD ↓A1 ↓A2 ↑R @ANSWER ↓r # 符号栈: 3)查分析表E行+列,E出栈前,E↑p指向@ANSWER↓r,因为E↑p=@ADD↑R,所以@ADD↑R指向@ANSWER↓r;新入栈的E↑q E↑r,分别指向@ADD↑A1↑A2;因栈顶为+,+出栈,读下一个符号。 符号 输入符号 + * NUM # S E 1 2 1 3 1 4 ? ? * * E ↑p @ANSWER ↓r # (1)S→E↑p@ANSWER↓r r = p (2)E↑p→+E↑qE↑r@ADD↓A1,A2↑R A1 = q, A2 = r, R = A1 + A2, p = R ...... +NUM↑2NUM↑3# NUM↑3# E ↑r @ADD 2 ↓A2 ↑R @ANSWER ↓r # 符号栈: 4)查分析表E行NUM列,E出栈前,E↑q指向@ADD↑A1,而E↑q =NUM↑q,所以NUM↑q入栈,把NUM ↑2放入E出栈前E↑q指向的单元@ADD↑A1。然后,NUM出栈,读下一个符号。 * * ...... (4)E↑p→NUM↑q p = q? 符号 输入符号 + * NUM # S E 1 2 1 3 1 4 ? 符号栈: E ↑q E ↑r @ADD ↓A1 ↓A2 ↑R @ANSWER ↓r # NUM↑2NUM↑3# 符号 输入符号 + * NUM # S E 1 2 1 3 1 4 ? 5) 查分析表E行NUM列,E出栈前,E↑r指向@ADD↑A2,而E↑r=NUM↑q,所以NUM↑q入栈,把NUM↑3放入E↑r指向的单元@ADD↑A2。然后NUM出栈,读下一个符号。 # @ADD 2 3 ↑R @ANSWER ↓r # 符号栈: * * ....... (4)E↑p→NUM↑q p = q? NUM↑3# E ↑r @ADD 2 ↓A2 ↑R @ANSWER ↓r # 符号栈: 6)栈顶为动作符号@ADD:把头两个域内容2和3相加,并把计算结果5存贮在第三个域@ADD↑R所指的@ANSWER↓r中,出栈。 # @ANSWER 5 # 符号栈: * * 符号 输入符号 + * NUM # S E 1 2 1 3 1 4 ? ...... (2)E↑p→+E↑qE↑r@ADD↓A1,A2↑R A1 = q, A2 = r, R = A1 + A2, p = R # @ADD 2 3 ↑R @ANSWER ↓r # 符号栈: 7)栈顶为动作符号@ANSWER,输出属性域的内容5,出栈。栈内为#,输入指针指向#,成功结束。 # # 符号栈: * * (1)S→E↑p@ANSWER↓r r = p ....... 符号 输入符号 + * NUM # S E 1 2 1 3 1 4 ? # @ANSWER 5 # 符号栈: 波兰翻译文法:对于一个文法,当且仅当文法中每个产生式右部的所有动作符号都只出现在所有输入符号和非终结符号的右边,则称此类翻译文法为波兰翻译文法。 例: 0)S→ E 1)E→E +T@ADD 2)E→T 3)T→T *F@MULT 4)T→F 5)F→(E) 6)F→i 0)S→ E 1)E→ E +T 2)E→T 3)T→T *F 4)T→F 5)F→(E) 6)F→ i 6.7 自底向上的语法制导翻译 * * 状态 ACTION GOTO i + * ( ) # E T F 0 S5 ? ? S4

文档评论(0)

1亿VIP精品文档

相关文档