Hi Hong Phuc,
Wow! Interesting catch.
To answer your question: You're likely to hit out-of-memory errors
way before this bug. I'm guessing that SableCC itself won't be
able to compute the tables in the first place if they are so huge
(once compressed!).
I don't think that you'll be able to get such huge tables using
human-written normal grammars. Of course, if you intently write
grammars that cause exponential automaton explosion or if you
generate humongous grammars automatically, you might be able to
reach such limits.
In theory, you could also play with some SableCC 3 command-line
inlining directives and some nearly ambiguous grammar to allow
exponential grammar growth through inlining but, even then, I
think that automaton computation time will be the problem that
will first hit you. :)
Yet, in the binary search code of SableCC 3.x, it is worth doing
the proposed change because dividing using an unsigned-shift-right
is likely to be faster on modern processors... I think that I'll
adopt it.
Thanks,
Etienne
Etienne Gagnon, Ph.D.
http://sablecc.org