Files
2025-10-25 03:02:53 +03:00

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

label-seq:
label label-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 ) ;

declaration-statement:
block-declaration