Parsely 0.1.0 is out the door!
Parsely is a tool to help write configuration tools. From the README:
The main idea behind Parsely is to expose a programmer-friendly interface to different file formats. Here's how it works.
 Parsely doesn't try to reinvent the wheel; it interfaces with scanner- and parser- generators like flex and bison, rather than trying to generate efficient C scanners and parsers itself.
- You, the programmer, decide you want to write a tool that manipulates a given file format.
- You write a grammar file describing the file format. For a set of extremely simple examples, look in tests/*.ply.
- Parsely reads the grammar file, and writes a scanner/parser for you in the language of your choice. Right now, I have the native Python scanner/parser running, and the C scanner/parser on their way. Later, I hope to support at least C++, Perl, Java, Guile.
- Later, your program can use the generated scanner to parse files into an easily-manipulated tree structure. It can examine and modify the tree structure, and later write its changes back out to disk, preserving all comments and formatting. All you need to write is the front-end.
Parsely is licensed under the LGPL.
Version 0.1.0 is finally done! You can download it here. Please be aware that this is a hackers-only release: you'll probably need to know a fair amount about Python to get it to work.
Parsely is alpha software! I'm trying to finish my Master's thesis now, but I should have a few hours here and there to hack on Parsely. These are the tasks I hope to accomplish first.
Most of all, I need good GUI hackers to help write graphical frontends for the backends Parsely provides. Give Parsely a try in your own configuration project! If you can't get it working yourself, drop me a line, and I'll help you write the .ply files and the the syntax manipulation code.
Parsely has the flexibility to handle everything from simple Key-value files to XF86Config to bash and tcsh configurations. It can probably help with your project too.
(In fact, it wouldn't be too hard to write a module to parse sendmail.cf, if only I knew what to do with it...)
The parsely mailing list is firstname.lastname@example.org. To subscribe, send a message to email@example.com with subscribe in the message body.
Or, enter your email address here to subscribe:
Contact firstname.lastname@example.org for more information. Naturally, I'm accepting patches.