token True='true' False='false' Null='null'; token LBrace='{' RBrace='}' LBrak='[' RBrak=']' Comma=',' Colon=':'; token String='' Number=''; token Whitespace; skip Whitespace; start file; file: value; value: object | array | literal ; object: '{' [member (',' member)*] '}'; member: String ':' value; array: '[' [value (',' value)*] ']'; literal: String | Number | 'true' | 'false' | 'null' ;