function | → | attributes? function‑specifiers return‑type function‑group‑id parameter‑list (function‑body | ;) |
function‑specifiers | → | (access | extern)* |
return‑type | → | type‑expr |
function‑group‑id | → | identifier | operator‑group‑id |
parameter‑list | → | ( (parameter (, parameter)* )? ) |
parameter | → | type‑expr identifier |
operator‑group‑id | → | operator ( << | >> | == | < | + | − | * | / | % | ^ | ! | () ) |
function‑body | → | compound‑statement |
attributes | → | [ ( name‑value‑pair (, name‑value‑pair)* ) ] |
name‑value‑pair | → | name = value |
name | → | qualified‑id |
value | → | qualified‑id | string‑literal | integer‑literal | boolean‑literal |