10 KiB
[gram.stmt]
Annex A (informative) Grammar summary [gram]
A.6 Statements [gram.stmt]
statement:
labeled-statement
attribute-specifier-seqopt expression-statement
attribute-specifier-seqopt compound-statement
attribute-specifier-seqopt selection-statement
attribute-specifier-seqopt iteration-statement
attribute-specifier-seqopt expansion-statement
attribute-specifier-seqopt jump-statement
attribute-specifier-seqopt assertion-statement
declaration-statement
attribute-specifier-seqopt try-block
init-statement:
expression-statement
simple-declaration
alias-declaration
condition:
expression
attribute-specifier-seqopt decl-specifier-seq declarator brace-or-equal-initializer
structured-binding-declaration initializer
for-range-declaration:
attribute-specifier-seqopt decl-specifier-seq declarator
structured-binding-declaration
for-range-initializer:
expr-or-braced-init-list
label:
attribute-specifier-seqopt identifier :
attribute-specifier-seqopt case constant-expression :
attribute-specifier-seqopt default :
labeled-statement:
label statement
expression-statement:
expressionopt ;
compound-statement:
{ statement-seqopt label-seqopt }
statement-seq:
statement statement-seqopt
selection-statement:
if constexpropt ( init-statementopt condition ) statement
if constexpropt ( init-statementopt condition ) statement else statement
if !opt consteval compound-statement
if !opt consteval compound-statement else statement
switch ( init-statementopt condition ) statement
iteration-statement:
while ( condition ) statement
do statement while ( expression ) ;
for ( init-statement conditionopt ; expressionopt ) statement
for ( init-statementopt for-range-declaration : for-range-initializer ) statement
expansion-statement:
template for (init-statementopt for-range-declaration :expansion-initializer ) compound-statement
expansion-initializer:
expression
expansion-init-list
expansion-init-list:
{ expression-listopt }
jump-statement:
break ;
continue ;
return expr-or-braced-init-listopt ;
coroutine-return-statement
goto identifier ;
coroutine-return-statement:
co_return expr-or-braced-init-listopt ;
assertion-statement:
contract_assert attribute-specifier-seqopt ( conditional-expression ) ;