DGL (DataGenerationLanguage) is a declarative language based on probabilistic context free grammars. The aim is to enable the generation of test data for software and hardware systems. One provides a context-free grammar describing the data to be generated. These specifications are transformed into C/C++ code which is then compiled to create the data generator.
The context-free productions are enhanced in many different user-selectable ways to go beyond what is normally definable using context free grammars. These features also allow the selection process to be tuned to meet the users needs. Some of the enhancements include weighted (probabilistic) random selection, sequential selection, non-duplicated selection, sequential generation of all strings described by a portion of the grammar, and several others. The most important enhancement is variables that permit the right-hand side of selected productions to be created on the fly. DGL can emulate an arbitrary Turing Machine.
Features
- random selection
- probabilistic selection
- sequential selection
- parse-tree enumeration
- unique selection
- weighted unique selection
- counters
- ranges