Parser statistics:
terminal symbols................... 19
non-terminal symbols............... 42
total symbols...................... 61
rules.............................. 75
states............................. 56
conflicts.......................... 0
action table entries............... 377
lookahead table entries............ 379
total table size (bytes)........... 1433
It generates a parser that seems to be a reasonable size: $ wc src/parser.c
2200 10090 78282 src/parser.c
I've tried a few other parser generators, lemon was my favourite.
It sounds like subtraction over Nats needs to be split into `sub?`, and `sub!`, the former returning an option, and the latter crashing, on underflow, as is the Lean convention?
To use the default `sub`, you should need to provide a witness that the minuend is >= the subtrahend...
The version with silent underflow is still useful, it should just be called `saturatingSub`, or something, so that mathematicians using it know what they're getting themselves into...