Module declaration
A module declaration can be updates or completely replaced (new). When replacing a module declaration, all elements defined for the module so far will be deleted before loading the new definition. The identifier defined for the module is a namespace name and can be used for prefixing the names (namespace or scope name), when referring to the module from an external position.
Definition:
module_dcl := [update_option] _module identifier '{' mod_elements '}' [';']