if (not B) { A } else { if (E and F) { C and D } else { undef } } #### (not B and A) or (B and ( ((E and F) and (C and D)) or (not (E and F) and undef) )) #### (not B and A) or (B and E and F and C and D) #### For convertion to single expressions: if (A) { B } else { C } === (A and B) or (not A and C) For simplification: X and undef === undef X or undef === X