JSONgram.g4 468 Bytes
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;