I think this can go into `unaSemantic` and you can make `UnaExp::semantic` abstract. Ditto for BinExp.