1+ <lexer >
2+ <config >
3+ <name >Devicetree</name >
4+ <alias >devicetree</alias >
5+ <alias >dts</alias >
6+ <filename >*.dts</filename >
7+ <filename >*.dtsi</filename >
8+ <mime_type >text/x-devicetree</mime_type >
9+ </config >
10+ <rules >
11+ <state name =" whitespace" >
12+ <rule pattern =" \n" >
13+ <token type =" TextWhitespace" />
14+ </rule >
15+ <rule pattern =" \s+" >
16+ <token type =" TextWhitespace" />
17+ </rule >
18+ <rule pattern =" \\\n" >
19+ <token type =" Text" />
20+ </rule >
21+ <rule pattern =" //(\n|[\w\W]*?[^\\]\n)" >
22+ <token type =" CommentSingle" />
23+ </rule >
24+ <rule pattern =" /(\\\n)?[*][\w\W]*?[*](\\\n)?/" >
25+ <token type =" CommentMultiline" />
26+ </rule >
27+ </state >
28+
29+ <state name =" macro" >
30+ <rule pattern =" (#include)(\s*(?:/[*][^*/]*?[*]/\s*)*)([^\n]+)" >
31+ <bygroups >
32+ <token type =" CommentPreproc" />
33+ <token type =" CommentMultiline" />
34+ <token type =" CommentPreprocFile" />
35+ </bygroups >
36+ </rule >
37+ <rule pattern =" (#define)(\s*(?:/[*][^*/]*?[*]/\s*)*)([^\n]+)" >
38+ <bygroups >
39+ <token type =" CommentPreproc" />
40+ <token type =" CommentMultiline" />
41+ <token type =" CommentPreproc" />
42+ </bygroups >
43+ </rule >
44+ <rule pattern =" /dts-v1/" >
45+ <token type =" CommentPreproc" />
46+ </rule >
47+ <rule pattern =" /memreserve/" >
48+ <token type =" CommentPreproc" />
49+ </rule >
50+ <rule pattern =" /delete-node/" >
51+ <token type =" CommentPreproc" />
52+ </rule >
53+ <rule pattern =" /delete-property/" >
54+ <token type =" CommentPreproc" />
55+ </rule >
56+ <rule pattern =" (/include/)(\s*(?:/[*][^*/]*?[*]/\s*)*)(" [^\n]+" )" >
57+ <bygroups >
58+ <token type =" CommentPreproc" />
59+ <token type =" CommentMultiline" />
60+ <token type =" CommentPreprocFile" />
61+ </bygroups >
62+ </rule >
63+ </state >
64+
65+ <state name =" basic_statements" >
66+ <rule pattern =" & [a-zA-Z0-9_]+" >
67+ <token type =" NameLabel" />
68+ </rule >
69+
70+ <rule pattern =" [a-zA-Z0-9_]+:" >
71+ <token type =" NameLabel" />
72+ </rule >
73+
74+ <rule pattern =" (L?)(" )" >
75+ <bygroups >
76+ <token type =" LiteralStringAffix" />
77+ <token type =" LiteralString" />
78+ </bygroups >
79+ <push state =" string" />
80+ </rule >
81+ <rule pattern =" 0x[0-9a-fA-F]+" >
82+ <token type =" LiteralNumberHex" />
83+ </rule >
84+ <rule pattern =" \d+" >
85+ <token type =" LiteralNumberInteger" />
86+ </rule >
87+
88+ <rule pattern =" status\b" >
89+ <token type =" KeywordReserved" />
90+ <push state =" status_property" />
91+ </rule >
92+
93+ <rule pattern =" ([~!%^& *+=|?:<> /#-])" >
94+ <token type =" Operator" />
95+ </rule >
96+ <rule pattern =" [()\[\]{},.]" >
97+ <token type =" Punctuation" />
98+ </rule >
99+
100+ <rule
101+ pattern =" [a-zA-Z_][\w-]*(?=(?:\s*,\s*[a-zA-Z_][\w-]*|(?:\s*(?:/[*][^*/]*?[*]/\s*)*))*\s*[=;])" >
102+ <token type =" NameAttribute" />
103+ </rule >
104+ <rule pattern =" [a-zA-Z_][\w-]*" >
105+ <token type =" Name" />
106+ </rule >
107+ </state >
108+
109+ <state name =" status_property" >
110+ <rule >
111+ <include state =" whitespace" />
112+ </rule >
113+ <rule pattern =" =" >
114+ <token type =" Operator" />
115+ </rule >
116+
117+ <rule pattern =" " okay" " >
118+ <token type =" LiteralString" />
119+ <pop depth =" 1" />
120+ </rule >
121+ <rule pattern =" " disabled" " >
122+ <token type =" KeywordType" />
123+ <pop depth =" 1" />
124+ </rule >
125+ <rule pattern =" " reserved" " >
126+ <token type =" NameDecorator" />
127+ <pop depth =" 1" />
128+ </rule >
129+ <rule pattern =" " fail" " >
130+ <token type =" GenericError" />
131+ <pop depth =" 1" />
132+ </rule >
133+ <rule pattern =" " fail-[^\" ]+" " >
134+ <token type =" GenericTraceback" />
135+ <pop depth =" 1" />
136+ </rule >
137+ <rule pattern =" " " >
138+ <token type =" LiteralString" />
139+ <push state =" string" />
140+ </rule >
141+
142+ <rule pattern =" ;" >
143+ <pop depth =" 1" />
144+ </rule >
145+ </state >
146+
147+ <state name =" root" >
148+ <rule >
149+ <include state =" whitespace" />
150+ </rule >
151+ <rule >
152+ <include state =" macro" />
153+ </rule >
154+
155+ <rule pattern =" ([^/*@\s& ]+|/)(@?)((?:0x)?[0-9a-fA-F,]*)(\s*(?:/[*][^*/]*?[*]/\s*)*)(\{)" >
156+ <bygroups >
157+ <token type =" NameFunction" />
158+ <token type =" Operator" />
159+ <token type =" LiteralNumberInteger" />
160+ <token type =" CommentMultiline" />
161+ <token type =" Punctuation" />
162+ </bygroups >
163+ <push state =" node" />
164+ </rule >
165+
166+ <rule >
167+ <push state =" statement" />
168+ </rule >
169+ </state >
170+
171+ <state name =" node" >
172+ <rule >
173+ <include state =" whitespace" />
174+ </rule >
175+ <rule >
176+ <include state =" macro" />
177+ </rule >
178+
179+ <rule pattern =" ([^/*@\s& ]+|/)(@?)((?:0x)?[0-9a-fA-F,]*)(\s*(?:/[*][^*/]*?[*]/\s*)*)(\{)" >
180+ <bygroups >
181+ <token type =" NameFunction" />
182+ <token type =" Operator" />
183+ <token type =" LiteralNumberInteger" />
184+ <token type =" CommentMultiline" />
185+ <token type =" Punctuation" />
186+ </bygroups >
187+ <push />
188+ </rule >
189+
190+ <rule pattern =" ([a-zA-Z0-9_]+)(\s*)(:)" >
191+ <bygroups >
192+ <token type =" NameLabel" />
193+ <token type =" Text" />
194+ <token type =" Punctuation" />
195+ </bygroups >
196+ </rule >
197+
198+ <rule pattern =" \}" >
199+ <token type =" Punctuation" />
200+ <pop depth =" 1" />
201+ </rule >
202+ <rule >
203+ <include state =" basic_statements" />
204+ </rule >
205+ <rule pattern =" ;" >
206+ <token type =" Punctuation" />
207+ </rule >
208+ </state >
209+
210+ <state name =" statement" >
211+ <rule >
212+ <include state =" whitespace" />
213+ </rule >
214+ <rule pattern =" ([a-zA-Z0-9_]+)(\s*)(:)" >
215+ <bygroups >
216+ <token type =" NameLabel" />
217+ <token type =" Text" />
218+ <token type =" Punctuation" />
219+ </bygroups >
220+ <pop depth =" 1" />
221+ </rule >
222+ <rule >
223+ <include state =" basic_statements" />
224+ </rule >
225+ <rule pattern =" ;" >
226+ <token type =" Punctuation" />
227+ <pop depth =" 1" />
228+ </rule >
229+ </state >
230+
231+ <state name =" string" >
232+ <rule pattern =" " " >
233+ <token type =" LiteralString" />
234+ <pop depth =" 1" />
235+ </rule >
236+ <rule
237+ pattern =" \\([\\abfnrtv" \' ]|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})" >
238+ <token type =" LiteralStringEscape" />
239+ </rule >
240+ <rule pattern =" [^\\" \n]+" >
241+ <token type =" LiteralString" />
242+ </rule >
243+ <rule pattern =" \\\n" >
244+ <token type =" LiteralString" />
245+ </rule >
246+ <rule pattern =" \\" >
247+ <token type =" LiteralString" />
248+ </rule >
249+ </state >
250+ </rules >
251+ </lexer >
0 commit comments