nice work.
if you want more of a challenge try a compiler compiler that can compile itself... :)
i got pretty far with this myself, although it doesn't work for weirdo languages like Python that need an exceptional lexer. i keep meaning to revisit this problem, since the tools in this space are pretty much non-existent or trash quality.