-All Sieve commands, including extensions, MUST be words of the following
-generic grammar with the start symbol "start". They SHOULD be specified
-using a specific grammar, though.
-
- argument = string-list / number / tag
- arguments = *argument [test / test-list]
- block = "{" commands "}"
- commands = *command
- string = quoted-string / multi-line
- string-list = "[" string *("," string) "]" / string
- test = identifier arguments
- test-list = "(" test *("," test) ")"
- command = identifier arguments ( ";" / block )
- start = command
-