Curios if you looked into ANTLR? That's what was used most recently as part of my compiler's course at Georgia Tech.
But decided, that for the first compiler, I want to actually do all steps manually myself for best possible comprehension of the general topic.