Block syntax basics were covered in 2.1.1; the precise, full specification includes more features and outlines some necessary logical rules. Primarily, blocks are square-bracket-delimited statement sequences with an optional header that specifies input and local slots (input slots being arguments).
Slot names must be valid unary message selectors (see 2.2.1). Inputs are distinguished by a prefix colon character (:), and must occur in the same positional order that the invocation will use or expect, although they can be interspersed among other slot declarations at will.
Optional keyword arguments are specified with an ampersand prefix character (&), and may occur in any order.
For example,