====== Production ====== While left-hand sides of rules are specified by queries, right-hand sides consist of production statements which have a special syntax and are mostly defined by operator overloading. At the beginning of the outermost sequence of production statements (i. e., at the beginning of a right-hand side, of production statements within imperative code, or of an instantiation rule), the method ''producer$begin'' is invoked on the current producer. It is a compile-time error if this method does not exist. The result of the invocation is taken as new current producer. At the end of the outermost sequence of production statements, the method ''producer$end'' is invoked on the current producer. Again, it is a compile-time error if this method does not exist. Within production statements, fields and methods declared or inherited by the type of the current producer can be referred to by their simple name. For instance fields and methods, the current producer is used as the implicit target reference similar to the implicit this in bodies of instance methods. However, these fields or methods do not shadow members with the same name in enclosing scopes, i. e., the latter have higher priority. {{ :01_user_documentation:07_rgg_xl:02_xl:rule_img.svg |}} {{ :01_user_documentation:07_rgg_xl:02_xl:prod.svg |}} ====== ====== {{namespace>:01_user_documentation:07_rgg_xl:02_xl:04_production}}