ERCIM News No.36 - January 1999
PROGGEN - a Tool for Automatic Code Generation
by Therese Nilsen
ProgGen is a generic tool for automatic code generation from any textual design language. ProgGen was developed by SINTEF, and the first version came in 1992.
ProgGen has until recently only supported SDL92 and SDL88 (more exactly the textual representation and not the graphical representation), but has been extended to any language that can be described using the BNF notation and is of type LALR-1. ProgGen is a flexible transformation tool which can be used to produce customized code generators.
The code skeletons implement user-defined strategies (or rules) for transforming SDL or other design language descriptions. By strategy, we mean that it is possible to implement a design-language specific concept in many different ways. Program code, but also other kinds of output (makefiles, test suites, documentation) can be generated. You do not need to develop new code skeletons for each new application; it is not necessary if the implementation strategies remain unchanged, or if the generated code is platform independent (generic). We can provide customers with help for developing skeletons.
ProgGen has been used for some years by several industrial users in Norway (Stentofon, Alcatel) and elsewhere (Alcatel Bell). Existing applications of ProgGen include a variety of code generators for the programming languages C, C++, CHILL and ADA. The tool is fully flexible and other target languages (eg Java) are also possible.
ProgGen is implemented in C, and will run on any platform with a C compiler, support for the portable C library, and adequate main memory for storage of the internal representation of the SDL model. We deliver ProgGen for UNIX based workstations. However, existing users have also installed it on PCs and VAX/VMS.
These days we are working with a project to extend ProgGen to allow for information about implementation design and let this information control the transformation. We wish to demonstrate that implementation design can be separated from application design. The advantage with this approach is the possibility to use one implementation design specification on different application specifications. Likewise, different implementation design specifications can be used with one application specification.
More information on ProgGen at: http://www.informatics.sintef.no/~proggen/main.html
Therese Nilsen - SINTEF
Tel: +47 73 55 0359