I’d explore the various Lex/Yacc based tools after. Hand writing your own recursive descent parser is a lot of work. EBNF sugar and some regular expressions is much less work. Of course parsing is just the first step and you still need to create other representations like ASTs.