{'fraction_non_alphanumeric': 0.030878859857482184, 'fraction_numerical': 0.0, 'mean_word_length': 5.637795275590551, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Multilevel models in model-driven engineering, product lines, and metaprogramming

Model-driven engineering (MDE) aims to raise the level of abstraction in program specification and increase automation in program development. These are also the goals of product lines (a family of related programs) and metaprogramming (programming as computation). We show that the confluence of MDE, product lines, and metaprogramming exposes a multilevel paradigm of program development, and further, we can use object-oriented design techniques to represent programs, the metaprograms that produced these programs, and the meta-metaprograms that produced these metaprograms, recursively. The paradigm is based on a small number of simple and well-known ideas, scales to the synthesis of applications of substantial size, and helps clarify concepts of MDE.