Annex A (informative) Grammar summary [gram]

A.5 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 jump-statement
	declaration-statement
	attribute-specifier-seqopt try-block

init-statement:
	expression-statement
	simple-declaration

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