9 - symbol.brackets: '[{\[\]}]'
16 - constant.specialChar: '\\u[[:xdigit:]]{4}'
17 - constant.specialChar: '\\U[[:xdigit:]]{8}'
18 - constant.specialChar: '\\[btnfr"\\]'
24 - constant.specialChar: '\\u[[:xdigit:]]{4}'
25 - constant.specialChar: '\\U[[:xdigit:]]{8}'
26 - constant.specialChar: '\\[btnfr"\\]'
36 - constant.number: '[+-]?(\d+_)*\d+\b'
37 - constant.number: '(0x([[:xdigit:]]+_)*[[:xdigit:]]+|0o([0-7]_)*[0-7]+|0b([01]+_)*[01]+)'
39 - constant.number: '[+-]?(\d+_)*\d+\.(\d+_)*\d+'
40 - constant.number: '[+-]?(\d+_)*\d+(\.(\d+_)*\d+)?[Ee][+-]?(\d+_)*\d+'
41 - constant.number: '(\+|-)(inf|nan)'
42 # Bare key, keys starting with a digit or dash are ambiguous with numbers and are skipped
43 - identifier: '\b[A-Za-z_][A-Za-z0-9_-]*\b'
44 # Boolean and inf, nan without sign
45 - constant.bool.true: '\btrue\b'
46 - constant.bool.false: '\bfalse\b'
47 - constant.number: '\b(inf|nan)\b'
49 - constant: '\d+-\d{2}-\d{2}([T ]\d{2}:\d{2}:\d{2}(\.\d+)?([+-]\d{2}:\d{2}|Z)?)?'
50 - constant: '\d{2}:\d{2}:\d{2}(\.\d+)?'
56 - todo: "(TODO|XXX|FIXME):?"