Annex A (informative) Grammar summary [gram]

A.5 Statements [gram.stmt]

statement:
	labeled-statement
	attribute-specifier-seq expression-statement
	attribute-specifier-seq compound-statement
	attribute-specifier-seq selection-statement
	attribute-specifier-seq iteration-statement
	attribute-specifier-seq jump-statement
	declaration-statement
	attribute-specifier-seq try-block

init-statement:
	expression-statement
	simple-declaration

condition:
	expression
	attribute-specifier-seq decl-specifier-seq declarator brace-or-equal-initializer
labeled-statement:
	attribute-specifier-seq identifier : statement
	attribute-specifier-seq case constant-expression : statement
	attribute-specifier-seq default : statement
expression-statement:
	expression ;
compound-statement:
	{ statement-seq }
statement-seq:
	statement
	statement-seq statement
selection-statement:
	if constexpr ( init-statement condition ) statement
	if constexpr ( init-statement condition ) statement else statement
	switch ( init-statement condition ) statement
iteration-statement:
	while ( condition ) statement
	do statement while ( expression ) ;
	for ( init-statement condition ; expression ) statement
	for ( init-statement for-range-declaration : for-range-initializer ) statement
for-range-declaration:
	attribute-specifier-seq decl-specifier-seq declarator
	attribute-specifier-seq decl-specifier-seq ref-qualifier [ identifier-list ]
for-range-initializer:
	expr-or-braced-init-list
jump-statement:
	break ;
	continue ;
	return expr-or-braced-init-list ;
	coroutine-return-statement
	goto identifier ;
coroutine-return-statement:
	co_return expr-or-braced-init-list ;
declaration-statement:
	block-declaration