I didn't want to suggest to use std.lexer, but to showcase the nice compile time tricks it employs, e.g. the generation of a Trie at compile time.
std.lexer is awesome, no doubt about it! But it is not in the scope of building a dead simple compiler. I am still about a way to simplify parsing. It is still not dead simple :(