else
       if sym=ifsym
        then
         begin
          getsym;
          condition([thensym,dosym]+fsys);
          if sym=thensym
           then getsym
           else error(16);
          cx1|=cx;
          gen(jpc,0,0);
          statement(fsys);
          code[cx1].a|=cx
         end
        else
         if sym=beginsym
          then
           begin
            getsym;
            statement([semicolon,endsym]+fsys);
            while sym in [semicolon]+statbegsys do
             begin
              if sym=semicolon
               then getsym
               else error(10);
              statement([semicolon,endsym]+fsys)
             end;
             if sym=endsym
              then getsym
              else error(17)
           end
          else
           if sym=whilesym
            then
             begin
              cx1|=cx;
              getsym;
              condition([dosym]+fsys);
              cx2|=cx;
              gen(jpc,0,0);
              if sym=dosym
               then getsym
               else error(18);
              statement(fsys);
              gen(jmp,0,cx1);
              code[cx2].a|=cx
             end;
    test(fsys,[],19)
  end (*statement*);