It was the best of code, it was the worst of code. The GLR algorithm, while extraordinarily useful when dealing with grammars that require multiple look-ahead and ambiguity reporting, is also the sort of code it takes time to comprehend, and that you want to forget as soon as you’ve done so.
Recent Updates Page 2 RSS Toggle Comment Threads | Keyboard Shortcuts
-
Ralph
-
Ralph
I just read this, http://www.caterina.net/archive/000996.html
Nice post. This says something about efficiency. Makes you think. -
Ralph
Site maintenance. I changed the theme, P2 looks much nicer, and now that I added the captcha’s I can let people create accounts. The images are gravatars, so you can go there are register your own custom avatar.
-
Ralph
Release 0.5.1.2
Now releasing 0.5.1.2. Fixed an error in the white space, and added the ability to open a grammar file directly from the conflict explainer. Here’s a screen shot of the grammar-grammar after it parses itself.

-
Ralph
Introducing the Wormhole Conflict Explainer
We’ve released version 0.5.1 of the wormhole parser generator. You may download it if you like. Although I said I wouldn’t do any major updates, I ran into some hairy grammar problems on the up and coming commercial product, and I needed a solution pronto. So I wrote the conflict explainer, a very simple GUI program to dig me out of the situation.
-
Ralph
wormhole parser generator 0.5.0.1 released
Wormhole parser generator 0.5.0.1 was just released, which contains some minor bug fixes to 0.5. Download at the usual place.
-
Ralph
Wormhole parser generator release 0.5, enters BETA 2
If you’ve got the guts, download the latest wormhole parser generator. With satisfactory optimizations in place, I’ve wrapped up the 0.4 series, and we’re on to BETA 2. I’ll be quite busy for the foreseeable future, so while I’ll be doing bug fixes as they are needed there will be no big overhauls or new features for awhile. As usual, if you need features, feel free to send patches.
* The demonstrative performance grammar now runs in 26 seconds. It solves the grammar in 15 seconds (that’s on my box, a relatively underpowered Toshiba laptop. your mileage will vary) followed by another 11 seconds to emit the grammar files.
* Fixed a few other random bugs.
Happy Parsing!
-
Ralph
wormhole parser generator 0.4.3.3 released
Download the latest wormhole parser generator, 0.4.3.3, if you dare.
- You can include more than one generated parser in the same module, provided you use the -n option to name the grammar interface class factory functions differently.
- I put in some significant performance improvements. The wait for the wormhole bootstrapper and other such small to medium size grammars has virtually vanished (1 to 2 seconds). On big grammars (300+ productions, 20 part expression precedence, a handful of forbid rules, deep pruning on all your if-else grammar constructs) your wait time is no longer 40 minutes, it is roughly 2.5 minutes.
- Expect one more round of optimizations to cap off the 0.4 series. The profile numbers say I can do better on the big grammars, like maybe as low as 3 to 5 seconds. Not much lower though, the grammar-grammar parsing and Unicode lexer generation steps are already virtually nil. I may be able to get the solver squeezed down to only a second or two on the big solves, but I’ll probably never revert to a C code generator; it’s too much of a hassle.
Any upgrades beyond 0.5 will not be out for some time, perhaps a year or more. I currently have no need or demand for generating parsers in additional programming languages. I will be using my time to write commercial software. Stay tuned for announcements and screen shots.
-
Ralph
Bonsai – LR Algorithm
In keeping with the trends out there, I’ve decided to name the pruning LR algorithm that the wormhole parser generator uses. For the name I credit my wife, who talked about miniature trees and how pruning is essential to shaping them, and it seemed to be the perfect fit. So, I knight thee Bonsai, the pruning LR algorithm.
-
Ralph
Pruning in the Wormhole parser generator
It’s high time I did an article on what pruning in the Wormhole parser generator is, so here it is. Pruning comes in two forms:
- Simple Pruning. Is says this production cannot appear in this placement in that production.
- Deep Pruning. It says this production cannot appear in this placement in that production, when that production appears in this other production directly or indirectly.



