得 (p)(j,-,-20) (u)(j,-,-,r) (q)(j,-,-,p) (v)(,-,-,u) --,q )(,-,-,q) (w)(j 链头tW
得 (p) (j, -, -, 0) (u) (j, -, -, r) …… …... (q) (j, -, -, p) (v) (j, -, -, u) …… …... (r) (j, -, -, q) (w) (j, -, -, v) 链头t2=w
执行 backpatch(t2,120)后 (p)(j,-,-,120)(u)(j,-,-,120) (q)(,-,-,120) (v)(j,--,120) (r)(j,-,-,120)(w)(j,-,-,120)
执行backpatch(t2 ,120)后: (p) (j, -, -, 120) (u) (j, -, -, 120) …… …... (q) (j, -, -, 120) (v) (j, -, -, 120) …… …... (r) (j, -, -, 120) (w) (j, -, -, 120)
4.翻译方案 B→1 f P: -lookup(i name) if p<>nil then begin B truelist: =makelist(nextcode) emit(inz, P,-,0) B. falselist: -makelist(nextcode) emit( 22 0) en d else error
4.翻译方案 B→i { P:=lookup(i.name); if P<>nil then begin B.truelist:=makelist(nextcode); emit(jnz,P,-,0); B.falselist:=makelist(nextcode); emit(j,-,-,0) end else error }
B→i1 relop 1 i P1:=lookup(i, name lookup(io. name if p>nil and ps>nil then begin B truelist: -makelist(nextcode) emit grelop, P1,P2,0); B. falselist: =makelist(nextcode) emit(-2-,0) end else error
B→i1 relop i2 { P1 :=lookup(i1 .name); P2 :=lookup(i2 .name); if P1<>nil and P2<>nil then begin B.truelist:=makelist(nextcode); emit (jrelop,P1 , P2 ,0); B.falselist:=makelist(nextcode); emit(j,-,-,0) end else error }
S→A S netlist: =makelisto) M→ f M code ip j N→ :(Nnetlist: =makelist(nextcode) emit ( -,0))
S→A { S.nextlist:=makelist() } M→ε { M.code:=ip } N→ε { N.nextlist:=makelist(nextcode); emit (j,-,-,0) }