======================
Parser JSON SWI-Prolog
======================
Testato con SWI-Prolog.
L'elaborato è stato prodotto in autonomia da Davide Mereu Depau.
Scelte implementative
=====================
Le specifiche non prevedevano il parsing dei valori JSON true, false e null;
ho per cui considerato il loro comportamento implementation-defined e il parser
li interpreta nel seguente modo:
- true -> true
- false -> false
- null -> null
Le specifiche inoltre considerano opzionale il parsing dei caratteri Unicode.
Il comportamento in presenza di tale escape sequence è pertanto implementation-
defined e si comporta in questo modo:
- Deserializzazione:
- Escape Unicode viene letto senza interpretazione, per cui `\u`
- Serializzazione:
- Non essendo interpretato, l'escape Unicode viene emesso come `\\u`
Ci tenevo a essere compliant fatta esclusione delle eccezioni di cui sopra, per
cui ho utilizzato la test suite [1] per validare l'implementazione.
Il parser dei numeri utilizza una macchina a stati finiti simile a quella
descritta meglio relativamente all'elaborato Common Lisp.
Riferimenti:
[1] https://github.com/nst/JSONTestSuite