composite if; parse and compile while command