Prospero messages are divided into lines. Lines are divided into tokens. Commands and lines sent in response are separated by an unquoted ASCII LF character.
Within a line, tokens are separated by unquoted horizontal whitespace (one or more ASCII spaces and/or tabs). Client and server implementations are not required to accept lines which begin or end with horizontal whitespace, but are encouraged to do so. Similarly, implementations are encouraged to accept CR or CRLF as alternative acceptable line terminators, but are not required to do so.
Special characters within a command token, or null tokens, can be
quoted using single quotes (').
While inside quotes, a quote can be included by doubling it. The only
character that cannot be quoted is the ASCII null character
(character code zero; SPMquot'\0'" for C programmers). This is really
a limitation of the server implementation, which passes Prospero
packets, commands, and tokens around internally as null-terminated
C strings.
Any token may be quoted (although most will not need quoting), except for literal command tokens (VERSION, ID, etc.). Also, the multi-component token uses the quoting system in a special way -- see the LIST command for details.