Considering the complexity of the task of parsing, I'm not sure it makes too much sense to write one from scratch. I was hoping to see if someone else had already done the work or tried it in the past.

In terms of is it necessary, not strictly no, but the modern parentheses syntax is much easier to read, maintain and modify.

While I don't know the specifics in this case, the issue is that unpredictable isn't quite the same as random and being unpredictable is only one desired property for a random function (for starters, you might also want some sort of even distribution over the range). For example, a function that "randomly" returns either 1, 24 or 73 is unpredictable but isn't the same as a function that returns random numbers over the entire range 1-100.