Interesting approach. Maybe it is even better to first start with a back-tracking parser. Although back-tracking has the reputation of being slow, there is a rather straightforward mapping from grammar to functions. Although it is slower than traditional parsing techniques, it is fast enough for many practical applications.
One easy trick to optimize back-tracking is memoization.
Another is the left-recursion into right-recursion trick, which is also rather straightforward to apply.
These two tricks are used in IParse Studio [0] which is an interpreting parser that parses a grammar and uses that grammar to parse some input. I also can help you with rewriting the grammar using the described approach.
[0] https://fransfaase.github.io/MCH2022ParserWorkshop/IParseStu...