15 Preprocessing directives [cpp]

15.5 Global module fragment [cpp.global.frag]

pp-global-module-fragment:
	module ; pp-balanced-token-seq module
pp-balanced-token-seq:
	pp-balanced-token
	pp-balanced-token-seq pp-balanced-token
pp-balanced-token:
	pp-ldelim pp-balanced-token-seq pp-rdelim
	any preprocessing-token other than a pp-ldelim or pp-rdelim
pp-ldelim: one of
	(    [    {    <:    <%
pp-rdelim: one of
	)    ]    }    :>    %>
If the first two preprocessing tokens at the start of phase 4 of translation are module ;, the result of preprocessing shall begin with a pp-global-module-fragment for which all preprocessing-tokens in the pp-balanced-token-seq were produced directly or indirectly by source file inclusion ([cpp.include]), and for which the second module preprocessing-token was not produced by source file inclusion or macro replacement ([cpp.replace]).
Otherwise, the first two preprocessing tokens at the end of phase 4 of translation shall not be module ;.