We present the new procedural modeling language (Generalized Grammar), which adapts various concepts from general purpose programming languages to provide high descriptive power with well-defined semantics and a simple syntax which is easily readable even by non-programmers. The term ‘Generalized’ reflects two kinds of generalization. On the one hand, we extend the scope of previous architectural modeling languages by allowing for multiple types of non-terminal objects with domain-specific operators and attributes. On the other hand, the language accepts non-terminal symbols as parameters in modeling rules and thus enables the definition of abstract structure templates for flexible re-use within the grammar. By deriving from the well-established programming language Python, we can make sure that our modeling language has a well-defined semantics. For illustration, we apply to architectural as well as plant modeling to demonstrate its descriptive power with some complex examples.