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*); |