图 8.9 赋值语句的四元式翻译
(1) S→id∶=E {p∶=lookup( id.name);
        if p ≠ nil then
        Emit(p′∶=′E.place)
        else error}
(2) E→E1+E2 {E.place∶=newtemp;
       Emit(E.place′∶=′E1.place′+′E2.place)}
(3) E→E1*E2 {E.placeE∶=newtemp;
       Emit(E.place′∶=′E1.place′*′E2.place)}
(4) E→-E1 {E.placeE∶=newtemp;
       Emit(E.place′∶=′′uminus′E1.place )}
(5) E→(E1) {E.place∶=E1.place}
(6) E→id {p:=lookup(id.name)};
      if p ≠ nil then
      E.placeE∶=p
      else error}