Step 1: Make a language high-level enough to build a parser without being a masochist. Step 2: Make a lisp. Step 3: Do it all in lisp. Step 4: Profit. Even Amber( https://github.com/nineties/amber ) and its syntax looks a lot like lisp concept of grammar. But instead of (s expressions) you've got what is very similar to M[expressions] ( https://en.wikipedia.org/wiki/M-expression ). It's amazing what you can with Lisp…
- Lisp is a fundamental, extensible, simple, unbounded AST system (and brings in interesting lambda calculus).
- Forth is a fundamental, extensible, simple, unbounded expression evaluator.
From there, the world is yours.
(Note I use "simple" in Rich Hickey's sense of simple vs easy)