Good point about separating syntax and semantics. Maybe new languages should use something like lisp syntax to nail down the semantics, and then people could create their own syntaxes from there.
IIRC, Ohm (successor to OMeta) separates syntax from semantics!