var f = {arg body } const main = { g({arg; body}) }
It seems like there really aren't that many languages with this symmetry (most lisps, JS/CS, Haskell, ...?), which I find a little strange.
Endlines have one role: They end statements, although there are potentially many kinds of statement that they end.
';' and '\n' are alternative equivalent renderings of line endings. ';;' ends blocks. And yes, the lexer does the usual longest prefix match.