I would try Beyond Compare by Scooter Software.
While it is a text comparer, it does take language aspects into account and has options to ignore "unimportant" differences like whitespace/tabbing/comments/etc. It comes with many languages already setup, which you can change and add to so you can teach Beyond Compare a new language. Alignment is a lot better thanks to the fact that you can assign importance to certain keywords.
A big plus of Beyond Compare is that it doesn't just say "these" lines differ, but also shows you where they differ... And when Beyond Compare gets the alignment of code wrong, it has an easy "Align with" context menu option so you can steer it in the right direction.
Apart from that it has plugin facilities to add custom processing for file types it doesn't yet know, or your own for files it already knows. You can use this to turn a file into a text base that Beyond compare can work with.
In addition Beyond Compare is pretty good at comparing Excel files etc. It will pinpoint the changed cells rather than marking entire rows.
I couldn't develop without Beyond Compare! (And no, I am in no way affiliated with Scooter Software other than being a very happy client).