1<lexer>
2 <config>
3 <name>JSON</name>
4 <alias>json</alias>
5 <filename>*.json</filename>
6 <filename>*.jsonc</filename>
7 <filename>*.json5</filename>
8 <filename>*.avsc</filename>
9 <filename>.luaurc</filename>
10 <mime_type>application/json</mime_type>
11 <dot_all>true</dot_all>
12 <not_multiline>true</not_multiline>
13 </config>
14 <rules>
15 <state name="root">
16 <rule>
17 <include state="value"/>
18 </rule>
19 </state>
20 <state name="whitespace">
21 <rule pattern="\s+">
22 <token type="Text"/>
23 </rule>
24 </state>
25 <state name="comment">
26 <rule pattern="//.*?\n">
27 <token type="CommentSingle"/>
28 </rule>
29 </state>
30 <state name="simplevalue">
31 <rule pattern="(true|false|null)\b">
32 <token type="KeywordConstant"/>
33 </rule>
34 <rule pattern="-?(0|[1-9]\d*)(\.\d+[eE](\+|-)?\d+|[eE](\+|-)?\d+|\.\d+)">
35 <token type="LiteralNumberFloat"/>
36 </rule>
37 <rule pattern="-?(0|[1-9]\d*)">
38 <token type="LiteralNumberInteger"/>
39 </rule>
40 <rule pattern=""(\\\\|\\"|[^"])*"">
41 <token type="LiteralStringDouble"/>
42 </rule>
43 </state>
44 <state name="objectattribute">
45 <rule>
46 <include state="value"/>
47 </rule>
48 <rule pattern=":">
49 <token type="Punctuation"/>
50 </rule>
51 <rule pattern=",">
52 <token type="Punctuation"/>
53 <pop depth="1"/>
54 </rule>
55 <rule pattern="\}">
56 <token type="Punctuation"/>
57 <pop depth="2"/>
58 </rule>
59 </state>
60 <state name="objectvalue">
61 <rule>
62 <include state="whitespace"/>
63 </rule>
64 <rule>
65 <include state="comment"/>
66 </rule>
67 <rule pattern=""(\\\\|\\"|[^"])*"">
68 <token type="NameTag"/>
69 <push state="objectattribute"/>
70 </rule>
71 <rule pattern="\}">
72 <token type="Punctuation"/>
73 <pop depth="1"/>
74 </rule>
75 </state>
76 <state name="arrayvalue">
77 <rule>
78 <include state="whitespace"/>
79 </rule>
80 <rule>
81 <include state="value"/>
82 </rule>
83 <rule>
84 <include state="comment"/>
85 </rule>
86 <rule pattern=",">
87 <token type="Punctuation"/>
88 </rule>
89 <rule pattern="\]">
90 <token type="Punctuation"/>
91 <pop depth="1"/>
92 </rule>
93 </state>
94 <state name="value">
95 <rule>
96 <include state="whitespace"/>
97 </rule>
98 <rule>
99 <include state="simplevalue"/>
100 </rule>
101 <rule>
102 <include state="comment"/>
103 </rule>
104 <rule pattern="\{">
105 <token type="Punctuation"/>
106 <push state="objectvalue"/>
107 </rule>
108 <rule pattern="\[">
109 <token type="Punctuation"/>
110 <push state="arrayvalue"/>
111 </rule>
112 </state>
113 </rules>
114</lexer>