statement executable-statement declaration executable-statement expression ; compound-statement if ( expression ) statement if ( expression ) statement else statement while ( expression ) statement do statement while ( expression ) ; for ( [ expression ]; [ expression ]; [ expression ] ) statement forall ( expression [ , expression ] in expression ) statement switch ( expression ) compound-statement case parser-evaluated-expression : default ; break ; continue ; return [ expression ] ; try statement onerror statement ; factor integer-number character-code floating-point-number string regular-expression identifier NULL ( expression ) [ array expression-list ] [ set expression-list ] [ struct [ : expression , ] assignment-list ] [ func function-body ] expression-list empty expression [ , ] expression , expression-list assignment-list empty assignment [ , ] assignment , assignment-list assignment struct-key = expression struct-key identifier ( expression ) function-body ( identifier-list ) compound-statement identifier-list empty identifier [ , ] identifier , identifier-list primary-expression factor primary-operation... primary-operation [ expression ] . identifier . ( expression ) -> identifier -> ( expression ) ( expression-list ) term [ prefix-operator...] primary-expression [ postfix-operator... ] prefix-operator Any of: * & - + ! ~ ++ -- @ $ postfix-operator Any of: ++ -- expression term expression infix-operator expression infix-operator Any of: * / % + - >> << < > <= >= == != ~ !~ ~~ ~~~ & ^ | && || : ? = += -= *= /= %= >>= <<= &= ^= |= ~~= <=> , simple-expression expression ; compound-expression { statement... } if-statement if ( expression ) statement if ( expression ) statement else statement while-statement while ( expression ) statement do-while-statement do statement while ( expression ) ; for-statement for ( [ expression ]; [ expression ]; [ expression ] ) statement forall-statement forall ( expression [ ,expression ] in expression ) statement switch-statement switch ( expression ) compound-statement switch-case case expression : ; default : break-and-continue break ; continue ; return-statement return [ expression ] ; try-statement try statement onerror statement declaration storage-class declaration-list ; storage-class identifier function-body storage-class extern static auto declaration-list identifier [ = expression ] declaration-list , identifier [ = expression ]