parser: SLR(1) 
lexesis: JSONLexer.lxs
terminals:
    "LBRACE"
    "RBRACE"
    "LBRACKET"
    "RBRACKET"
    "COLON"
    "COMMA"
    "TTRUE"
    "TFALSE"
    "TNULL"
    "STRING"
    "NUMBER"
start: <value>
grammar:
    <value>   ::= "STRING"
                | "NUMBER"
                | "TTRUE"
                | "TFALSE"
                | "TNULL"
                | <object>
                | <array>
                ;

    <object>  ::= "LBRACE" <keyvals> "RBRACE"
                | "LBRACE" "RBRACE"
                ;

    <keyvals> ::= "STRING" "COLON" <value>
                | "STRING" "COLON" <value> "COMMA" <keyvals>
                ;

    <array>   ::= "LBRACKET" <vals> "RBRACKET"
                | "LBRACKET" "RBRACKET"
                ;

    <vals>    ::= <value>
                | <value> "COMMA" <vals>
                ;