| 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 |