@top JsonText { value } value { True | False | Null | Number | String | Object | Array } String { string } Object { "{" list? "}" } Array { "[" list? "]" } Property { PropertyName ":" value } PropertyName { string } @tokens { True { "true" } False { "false" } Null { "null" } Number { '-'? int frac? exp? } int { '0' | $[1-9] std.digit* } frac { '.' std.digit+ } exp { $[eE] $[+\-]? std.digit+ } string { '"' char* '"' } char { $[\u{20}\u{21}\u{23}-\u{5b}\u{5d}-\u{10ffff}] | "\\" esc } esc { $["\\\/bfnrt] | "u" hex hex hex hex } hex { $[0-9a-fA-F] } whitespace { $[ \n\r\t] } "{" "}" "[" "]" } @skip { whitespace } list { item ("," item)* } @external propSource jsonHighlighting from "./highlight" @detectDelim