また、セミコロンについて悩む

だいたい、資料作りが終わった。というか飽きたので、次の段階でJavaScript級の文法をちゃんと考えるかぁっと思って、
下降型の演算子順位法でJavaScriptにある演算子と文を出来るだけいい感じにパース出来る用にしようと思ったのですが、
あれ、セミコロンってどうやって扱うと一番うまく行くんだっけ?
っと、わからなくなってしまいました。うーむ。全然簡単じゃないじゃないか!って思ったりするんですけど、
定義を決めるのは大変だけど、作るのはやっぱり簡単なはずなので、いいのだけど、悩んでます。

何で悩んでいるかというと、ifを値を持つ式として扱えるとした場合

a = if(b) c else d;

のように書けてかつ、

if(b) c; else d;

と書けるって可能?

a = if(b) c; else d;
a = if(true) c; else d; + 2

は a = c + 2と同等の意味できるかとかいうところで悩んでます。
このへんは無理して、プログラムを複雑にせずに、演算子順位法だけで解決できるなら解決したいところなのでした。