[bison] Fix for #4312 -- replace recursion with kleene *-operators, and add TypeScript and Antlr4ng ports #4313
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The PR fixes #4312, where some rules were written with (left) recursion. While Antlr certainly can handle recursion, the main issue is performance. With recursion, I get stack overflows with the CSharp target in Release mode. I don't know why but Debug mode .NET builds are just fine.
The change refactors four rules with kleene
*
-operators. In addition, the TypeScript port, which did work, then stopped working, started to work again! I think this is due to numerous changes in the TypeScript runtime now in 4.13.2. With a TypeScript port, Antlr4ng wasn't far of a reach so I added that. The desc.xml is changed to reflect this.