grammar JSONgram; json : content; object : '{' keyValue (',' keyValue)* '}' | '{' '}'; table : '[' content (',' content)* ']' | '[' ']'; keyValue : CHAINE ':' content; content: CHAINE | NUMBER | object | table | 'true' | 'false' | 'null'; fragment INT: '0' | [1-9] [0-9]*; fragment EXP: [Ee] [+\-]? INT; CHAINE : '"' [a-zA-Z0-9_!@#$%^&*()\-+=/.,<>;':] [a-zA-Z0-9_!@#$%^&*()\-+=/.,<>;':]* '"' ; NUMBER : '-'? INT ('.' [0-9] +)? EXP?; WS : [ \t\n\r] + -> skip;