Related: "It's Time for a New Old Language" by Guy Steele.
https://www.youtube.com/watch?v=7HKbjYqqPPQ
He gives a history of metalanguage notations (for both language semantics and syntax, including regexes and CFGs). And then he criticizes the inconsistency that has cropped up in these notations over the years.
The irony is that people who are formalizing precise semantics of programming languages do not agree on the syntax/semantics of the metalanguage.
I guess this is what you notice when you read hundreds of programming language papers, as I'm sure Guy Steele has.
-----
Also, does anyone know if what he refers to as "progress and preservation" are the same / related to "liveness and safety" in distributed algorithms? It sounds like the same kind of idea.