while BEGIN match( while q:-1p (B truelist, B. falselist): = B backpatch(B truelist, ip) IF lookahead= do THEN BEGIN match( do) S1 netlist = S backpatch(s I netlist, q) em q) RETURN(B. falselist) END ELSE ERROR END´while´: BEGIN match(´while´); q:=ip; (B.truelist, B.falselist):=B; backpatch(B.truelist, ip); IF lookahead=´do´ THEN BEGIN match(´do´); S1.nextlist:=S; backpatch(S1.nextlist, q); emit(j, ⎯ , ⎯ , q); RETURN(B.falselist) END ELSE ERROR; END;