Lava is perfectly "point-and-click"

Lava programs are no longer "written" but "constructed" in Lego-like fashion from basic constructs, and this is true also for the executable parts of Lava programs.

The Lava programming environment (LavaPE) provides quite a number of different views for editing and inspecting Lava programs, but there are two dominating primary views, the "declaration view" and the "exec view":

The declaration view is a "tree view" to which everybody is accustomed, for instance, from the "Explorer" of Microsoft Windows. Tree construction is controlled by tool buttons corresponding to the basic Lava notions, like "new package", "new class", "new implementation", "new member variable", "new member function", "new function parameter", etc.. The properties of these entities are edited using appropriate dialog boxes. Subtrees can be easily copied and moved by drag-and-drop operations or expanded/collapsed by proper tool buttons.

There are several auxiliary tree views the most important of which is used for specifying the details of an individual or collective class derivation leading to a derived class or pattern.

Here you can find more details about point-and-click editing of the Lava declaration view.


The exec view is a quite normal textual representation of an "exec" or "invariant". But although it uses the standard Windows "rich edit view", it is not editable directly as text. The executable program text is rather constructed from a number of basic statement, expression, and special constructs which typically would contain "placeholders" <stm>, <expr>, <var>, <type>, <func>, <set> ... for statements, expressions, variable / type / function / set references ... that may be inserted at these places.

In fact, there is no fixed textual syntax of Lava at all, nor is there a Lava parser or compiler. The point-and click operations of the programmer generate / manipulate an internal tree representation of the Lava program directly. The textual representation of execs / invariants is generated on the fly as long as a corresponding view is open.

Here you can find more details about point-and-click editing of the Lava exec view.


For documentation and publishing purposes an HTML representation of an entire Lava program can be generated automatically. This comprises also the declaration parts of the program in some obvious but noncommittal textual syntax. Except for this, Lava isn't a conventional textual language, but it is inseparably connected with LavaPE.

A particular highlight of this philosophy is the capability to generate a default form representation from a class declaration on a single mouse-click, which can then be customized using the Lava UI builder.

See also

Basic editing procedures

Editing executable code

Lava refactoring support