Chapter 5. Metamodeling
My freedom will be so much the greater and more meaningful the more narrowly I limit my field of action and the more I surround myself with obstacles. Whatever diminishes constraint diminishes strength. The more constraints one imposes, the more one frees one’s self of the chains that shackle the spirit.
—Igor Stravinsky Russian composer (1882–1971)
In the remainder of this book, I use metamodeling as the formalism to specify software languages: that is, one metamodel to specify the abstract syntax (see Chapter 6), one metamodel to specify (parts of) the concrete syntax (see Chapter 7), and in some cases, an extra metamodel to specify (parts of) the semantics (see Chapter 9). Because metamodeling is such an ...