Heal Your Church WebSite


Teaching, rebuking, correcting & training in righteous web design.

For you BNF fans – CodeWorker

Friday fun, or evil conspiracy to ruin your weekend? You decide! This next little FreshMeat gem is for those of you who’ve had to take a class or two in programming languages. And I’m not talking about the obligatory C++ or Java classes required of all computer science majors. No-sir-ee-bob, I’m talking about those deep ventures into the internals of how programming languages work that usually end the semester with an assignment to write your own small computer language.

I took three of them … hey it was either that or take ‘dysfunctional case mods‘ or some other ‘elective’ within the program that had no real-world application. So imagine my joy when I came across CodeWorker: a parsing tool and a source code generator. You didn’t need to Flex this description to realize that it’s Bison-free. Check it out:


CodeWorker is a parsing tool and a source code generator, available in Open Source (distributed under the GNU Lesser General Public License) devoted to cover many aspects of the generative programming. Generative programming is a software engineering approach for producing reusable, tailor-made, evolvable and reliable IT systems with a high level of automation.

The tool interprets a scripting language that drives the processing of parsing and source code generation in a quite familiar syntax for developers. It insists on adapting the syntax of the language to the particularities of tasks to resolve (parse, code generation, procedural) and on offering powerful functionalities to do intensive source code generation.

Okay, for the three of you who speak fluent geek who are now inspired to spend the rest of the weekend writing a high-level blogging language, have your significant others send their complaints “hey-dont-blame-me [at] healyourchurchwebsite [dot] org.”

One Comment

  1. It’s funny that CodeWorker appears as a tool for playing with BNF! It might be seen more like a code generator than like a tool for building computer languages.
    In fact, CodeWorker is a scripting language for generating code in a very flexible way. But first, it has to be feed with requirements specification, written in a Domain Specific Language (DSL) that you consider as adapted to your needs.
    The BNF is used to express the grammar of your DSL. If you just need a XML representation, don’t worry about the DSL: CodeWorker already provides a XML parser in the script repository on the Web site.
    Normally, you don’t use this BNF for describing a programming langage. But why not? I wrote a light C++ parser (light meaning that it doesn’t manage macros), and I use it for checking source code (according to programming rules) or for generating UML class diagrams in PNG (I have built a DSL for describing class diagrams in a very declarative way).

    So, if you need a DSL, perhaps could you have a look to CodeWorker (http://www.codeworker.org) rather than using XML + Xerces or something else.