About APG

What is sabnf.com about? It is the home of my hobby project, APG – acronym for ABNF Parser Generator. Here I have a brief description of the latest version, 7.0, references to previous works, links to the GitHub repositories and online copies of the documentation for each of the versions.

The idea for APG was born in 2005 when I found myself with enough time on my hands to tackle a problem of long-standing interest – parsing text in general and ABNF grammars in particular. As a reasonably accomplished programmer with no formal training or education in Computer Science I thought it would be fun to just dive in and see what I could come up with. That’s not to say I didn’t consult a few of the basic references, but for the most part I just analyzed ABNF as best I could and followed my nose down the tree structure it defined. You can see my announcement of the original version on the comp.compilers newsgroup here.

Why sabnf.com? As APG has grown and evolved, a number of operations have been added to the original ABNF set resulting in a superset of ABNF or, as I now refer to it, SABNF.

As you can see in the history page, I would pick it up to improve a previous version, add a new feature, program it in a new language and so on, then leave it lay fallow for a time while working on other projects.

Version 7.0 began with the idea of wanting a clean, new C-language version that 1) included a phrase-matching engine similar to that in the JavaScript version, and 2) incorporated the partially-predictive parsing tables (PPPTs) first used in version 5.0 in 2007 but never continued due to a clumsy and hard-to-maintain implementation. Then it grew and grew, testing, building examples and trying new things.

Version 7.0 is licensed with the permissive 2-Clause BSD license so, with those two small limitations, you are free to use it as you like. I hope you have fun and find it useful. You can use the contact page for your questions, comments or bug reports.

Lowell D. Thomas