Passa al contenuto principale

4. Formati di dati (Data Formats)

Un atomo (Atom) è costituito da uno o più caratteri non speciali.

4.2. Numero (Number)

Un numero (Number) è costituito da uno o più caratteri numerici e rappresenta un valore numerico.

4.3. Stringa (String)

Una stringa (String) si presenta in una delle due forme: letterale (Literal) o stringa tra virgolette (Quoted String). La forma letterale è la forma generale di stringa. La forma di stringa tra virgolette è un'alternativa che evita l'overhead di elaborazione di un letterale al costo di limitazioni sui caratteri che possono essere utilizzati.

Un letterale è una sequenza di zero o più ottetti (inclusi CR e LF), preceduta da un conteggio di ottetti sotto forma di parentesi graffa aperta ("), numero di ottetti, parentesi graffa chiusa (") e CRLF. Nel caso di letterali trasmessi dal server al client, il CRLF è immediatamente seguito dai dati dell'ottetto. Nel caso di letterali trasmessi dal client al server, il client DEVE (MUST) attendere di ricevere una richiesta di continuazione del comando (Command Continuation Request, descritta più avanti in questo documento) prima di inviare i dati dell'ottetto (e il resto del comando).

Una stringa tra virgolette è una sequenza di zero o più caratteri a 7 bit, esclusi CR e LF, con caratteri di virgolette doppie (<">") a ciascuna estremità.

La stringa vuota è rappresentata come "" (una stringa tra virgolette con zero caratteri tra virgolette doppie) oppure come 0 seguito da CRLF (un letterale con un conteggio di ottetti pari a 0).

Nota: Anche se il conteggio degli ottetti è 0, un client che trasmette un letterale DEVE (MUST) attendere di ricevere una richiesta di continuazione del comando.

4.3.1. Stringhe a 8 bit e binarie (8-bit and Binary Strings)

La posta testuale a 8 bit e binaria è supportata attraverso l'uso di una codifica di trasferimento del contenuto [MIME-IMB] (Content Transfer Encoding). Le implementazioni IMAP4rev1 POSSONO (MAY) trasmettere caratteri a 8 bit o multi-ottetto nei letterali, ma DOVREBBERO (SHOULD) farlo solo quando il [CHARSET] è identificato.

Sebbene sia definita una codifica del corpo BINARY (Body Encoding), le stringhe binarie non codificate non sono consentite. Una "stringa binaria (Binary String)" è qualsiasi stringa con caratteri NUL. Le implementazioni DEVONO (MUST) codificare i dati binari in una forma testuale, come BASE64, prima di trasmettere i dati. Una stringa con una quantità eccessiva di caratteri CTL PUÒ (MAY) essere considerata binaria.

4.4. Lista tra parentesi (Parenthesized List)

Le strutture dati (Data Structures) sono rappresentate come "lista tra parentesi (Parenthesized List)": una sequenza di elementi di dati, delimitati da spazi e racchiusi tra parentesi a ciascuna estremità. Una lista tra parentesi può contenere altre liste tra parentesi, utilizzando più livelli di parentesi per indicare l'annidamento.

La lista vuota è rappresentata come () -- una lista tra parentesi senza membri.

4.5. NIL

La forma speciale "NIL" rappresenta la non esistenza di un particolare elemento di dati rappresentato come stringa o lista tra parentesi, diversamente dalla stringa vuota "" o dalla lista tra parentesi vuota ().

Nota: NIL non viene mai utilizzato per nessun elemento di dati che assume la forma di un atomo. Ad esempio, un nome di casella di posta "NIL" è una casella di posta denominata NIL anziché un nome di casella di posta inesistente. Questo perché la casella di posta utilizza la sintassi "astring", che è un atomo o una stringa. Al contrario, un addr-name NIL è un nome personale inesistente, perché addr-name utilizza la sintassi "nstring", che è NIL o una stringa, ma mai un atomo.