What languages used to write computer languages?
tsally: Can't believe OMeta hasn't been mentioned yet: http://tinlizzie.org/ometa/.  It's definitely the wrong choice for performance, but if you are experimenting with language implementation I don't think you can do much better.OMeta's general-purpose pattern matching facilities provide a natural and convenient way for programmers to implement tokenizers, parsers, visitors, and tree transformers, all of which can be extended in interesting ways using familiar object-oriented mechanisms.Here's a document detailing an OMeta program that translates textual representations of abstract syntax trees into assembly for the Intel 386: http://www.vpri.org/pdf/m2009011_chns_mng.pdf.  In plain language, you've got is a mini Lisp like language that you can extend in an object orientated way.