Λύση 3ου θέματος

S -> for ( E(1) ; {P1} E(2) ; {P2} E(3) ) {P3} S(1) {P4}

{P1}  :  { BACKPATCH(E(1).TRUE, NEXTQUAD);
           BACKPATCH(E(1).FALSE, NEXTQUAD);
           E2QUAD := NEXTQUAD; }

{P2}  :  { E3QUAD := NEXTQUAD; }

{P3}  :  { BACKPATCH(E(2).TRUE, NEXTQUAD);
           BACKPATCH(E(3).TRUE, E2QUAD);
           BACKPATCH(E(3).FALSE, E2QUAD); }

{P4}  :  { BACKPATCH(S(1).NEXT, E3QUAD);
           GENQUAD('jump', '-', '-', E3QUAD);
           S.NEXT := E(2).FALSE; }

Diagram.gif (18561 bytes)

Επιστροφή στις εκφωνήσεις