json-parser-prolog-lisp/Prolog
2023-02-07 22:10:02 +01:00
..
jsonparse.pl Forbid retrieval of non-fully-instantiated json arrays 2023-02-07 22:10:02 +01:00
README.txt Add READMEs 2022-12-08 02:31:04 +01:00

======================
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