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