5 Statements

5.1 Syntax

statement → labeled‑statement | control‑statement | increment‑statement | decrement‑statement | expression‑statement | assignment‑statement | construction‑statement | empty‑statement | throw‑statement | try‑statement | using‑statement | lock‑statement
labeled‑statement → label‑id : statement
label-id → identifier
control‑statement → compound‑statement | return‑statement | if‑statement | while‑statement | do‑statement | for‑statement | foreach‑statement | break‑statement | continue‑statement | goto‑statement | switch‑statement | goto‑case‑statement | goto‑default‑statement
compound‑statement → { statement* }
return‑statement → return expression? ;
if‑statement → if ( expression ) statement ( else statement )?
while‑statement → while ( expression ) statement
do‑statement → do statement while ( expression ) ;
for‑statement → for ( for‑init‑statement expression? ; for‑loop‑statement‑expression ) statement
for‑init‑statement → assignment‑statement | construction‑statement | empty‑statement
for‑loop‑statement‑expression → (increment‑statement‑expression | decrement‑statement‑expression | assignment‑statement‑expression)?
increment‑statement‑expression → ++ expression | expression ++
decrement‑statement‑expression → -- expression | expression --
assignment‑statement‑expression → expression = expression
foreach‑statement → foreach ( type‑expr identifier in expression ) compound‑statement
break‑statement → break ;
continue‑statement → continue ;
goto‑statement → goto identifer ;
switch‑statement → switch ( expression ) { (case‑statement | default‑statement)* }
case‑statement → (case constant‑expression : )+ statement*
default‑statement → default : statement*
goto‑case‑statement → goto case constant‑expression ;
goto‑default‑statement → goto default ;
assignment‑statement → assignment‑statement‑expression ;
construction‑statement‑expression → type‑expr identifier (= expression)?
construction‑statement → construction‑statement‑expression ;
increment‑statement → increment‑statement‑expression ;
decrement‑statement → decrement‑statement‑expression ;
empty‑statement → ;
throw‑statement → throw expression? ;
try‑statement → try compound‑statement catch+ finally?
catch → catch ( type‑expr identifier ) compound‑statement
finally → finally compound‑statement
using‑statement → using ( construction‑statement‑expression ) statement
lock‑statement → lock ( expression ) statement