More background at <a href="http://onfoodandcoding.blogspot.com/2013/02/meta-ii-early-meta-compiler.html" rel="nofollow">http://onfoodandcoding.blogspot.com/2013/02/meta-ii-early-me...</a><p>Alessandro Warth's OMeta is a modern version of ideas in Meta II, <a href="http://tinlizzie.org/ometa/" rel="nofollow">http://tinlizzie.org/ometa/</a><p>OMeta is used in KScript and KSworld, from Alan Kay's Viewpoints research, <a href="http://www.vpri.org/pdf/tr2013002_KSonward.pdf" rel="nofollow">http://www.vpri.org/pdf/tr2013002_KSonward.pdf</a><p><i>"KScript is a dynamic language based on the declarative and time-aware dataflow-style execution model of Functional Reactive Programming (FRP), extended with support for loose coupling among program elements and a high degree of program reconfigurability<p>... the KSWorld environment supports exploratory
application building: a user constructs the appearance interactively with direct manipulation, then attaches and refines
reactive variable definitions to achieve the desired overall behavior."</i><p>Edit: more on KSworld, <a href="http://www.vpri.org/pdf/m2013003_ksapps.pdf" rel="nofollow">http://www.vpri.org/pdf/m2013003_ksapps.pdf</a><p><i>"The software for today’s personal computing environments
has become so complex that no single person can understand
an entire system: a typical desktop OS and commonly used
application suite amount to over 100 million lines of code.<p>Our group’s early experiences with personal computing led
us to understand that much of this complexity is “accidental”, rather than inherent ... About 10,000 lines of code were needed to build the framework, the FRP evaluator, the document model and the editor, including the implementation of the special language created for KSWorld."</i>
See also peg.js: <a href="http://pegjs.majda.cz/" rel="nofollow">http://pegjs.majda.cz/</a>. The theory of parsing and compiling has some really nice concrete applications all over the place. In general, if you want to properly model a specific domain computationally you will almost surely travel through parsers and compilers. Here's a nice talk on the topic: <a href="http://www.infoq.com/presentations/tools-language-workbench" rel="nofollow">http://www.infoq.com/presentations/tools-language-workbench</a>.
"As I was writing this tutorial I found myself speculating about what happened to metacompiler technology"<p>I suspect that one part of the answer is that for most non-trivial examples, the parsing part is the easy part and metacompilers don't help with the hard part (type checking/inference, optimization, code generation, etc).<p>That said, I see terrible broken ad-hoc parsers all over the place that probably could benefit from this.
That was a nice interruption to work which was nearly starting over at <a href="https://pym.readthedocs.org/" rel="nofollow">https://pym.readthedocs.org/</a> But I really have to write some code.<p>Saved for later: <a href="https://github.com/jalanb/pym/commit/4d5df8fd328d1c71de1a519171f380e4dcfbfb11" rel="nofollow">https://github.com/jalanb/pym/commit/4d5df8fd328d1c71de1a519...</a>