Lzz is a tool that automates many onerous C++ programming tasks. It can save you a lot of time and make coding more enjoyable. Given a sequence of declarations Lzz will generate your header and source files.
For example, given the following code:
// A.lzz class A { public: inline void f (int i) { ... } void g (int j = 0) { ... } }; bool operator == (A const & a1, A const & a2) { ... }
Lzz will generate a header file:
// A.h #ifndef LZZ_A_h #define LZZ_A_h class A { public: void f (int i); void g (int j = 0); }; inline void A::f (int i) { ... } bool operator == (A const & a1, A const & a2); #endif
And a source file:
// A.cpp #include "A.h" void A::g (int j) { ... } bool operator == (A const & a1, A const & a2) { ... }
Lzz makes ordinary C++ programming seem low-level. How many times have you neglected to update a header file after editing a source file? This is a silly mistake, yet we do it again and again. C++ forces you to type and maintain duplicate code. Why not let a program generate it for you?
The parser in Lzz is generated by Basil, a backtracking LR(1) parser generator.