Halasz's pragmatic advice: you will almost never build a language toolchain by hand. Tools exist to generate lexers and parsers from a grammar, and mature virtual machines (YARV, the Java VM via JRuby, GraalVM via TruffleRuby, LLVM, Parrot, .NET) are ready to host Ruby-compatible languages.