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