//http://habrahabr.ru/post/114270/ char index; if(a){ A; index = 'C'; }else index = 'b'; while(index!='E') switch(index){ case 'C': C; case 'b': if(b){ index = 'B'; continue; } if(c){ index = 'E'; continue; } D; case 'B': B; index = 'C'; continue; } E;