HSP3.hilight の #if 0 ~ #endif の無効部分の強調でその中に #if や #ifdef をネストしていたらその #endif で無効部分の強調が終わってしまうという問題ですが、解決策が思いつきました。 # の前後の空白が一致していないと対応した #endif とみなさない、というのはどうでしょう。
/001A,00000000,00,00,00010003,"^([ \\t]*)#([ \\t]*)if[ \\t]+0[ \\t]*$",0001000B,"^(?=\\1#\\2(endif|else))"
「そういえば #endif を複数行コメントでくくっていたらおかしくなるかな」と思ったのですが、 #if の無効部分の中のコメントは認識しないのが正しいようでした。すると 0 以外の #if の無効部分で複数行のコメントや文字列を閉じていないとおかしくなるでしょうが、そんなことはまずしないということで無視。