This is my CFG parser. It parses CFG's written in the BNF. Yeah, good luck with those TLA's ;)

The example here is the ECMAScript specification, version 5. It is the exact CFG as used by my parser and the same CFG as it occurs in the formal specificiations, with minor edits to accomodate my parser ;) View the source of this page to see the source CFG used to generate it.

The script can generate a string containing html, you should probably see that below right now. The productions are clickable (anchors) which should make navigation easier. Elements that are not found as productions are striked through. The script can tell you which productions have not been seen as part of another productions (which is probably at least one rule; your root). If you want that information just create a "debug" function in global scope :)

Script not working for you? Check the pre-generated static html output :)

I've also written a blog post about it, in case you want to read more...