1use crate::pos::Span;
4#[cfg(feature = "serialize")]
5use serde::Serialize;
6
7#[derive(Clone, Debug, PartialEq)]
8#[cfg_attr(feature = "serialize", derive(Serialize))]
9#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
10pub struct Comment<'s> {
11 pub content: &'s str,
12 pub kind: CommentKind,
13 pub span: Span,
14}
15
16#[derive(Clone, Debug, PartialEq)]
17#[cfg_attr(feature = "serialize", derive(Serialize))]
18pub enum CommentKind {
19 Block,
20 Line,
21}
22
23#[derive(Clone, Debug, PartialEq)]
24#[cfg_attr(feature = "serialize", derive(Serialize))]
25pub enum Token<'s> {
26 Eof(Eof),
27 Ampersand(Ampersand),
28 Asterisk(Asterisk),
29 AsteriskEqual(AsteriskEqual),
30 At(At),
31 AtKeyword(AtKeyword<'s>),
32 AtLBraceVar(AtLBraceVar<'s>),
33 BacktickCode(BacktickCode<'s>),
34 Bar(Bar),
35 BarBar(BarBar),
36 BarEqual(BarEqual),
37 CaretEqual(CaretEqual),
38 Cdc(Cdc),
39 Cdo(Cdo),
40 Colon(Colon),
41 ColonColon(ColonColon),
42 Comma(Comma),
43 Dedent(Dedent),
44 Dimension(Dimension<'s>),
45 DollarEqual(DollarEqual),
46 DollarLBraceVar(DollarLBraceVar<'s>),
47 DollarVar(DollarVar<'s>),
48 Dot(Dot),
49 DotDotDot(DotDotDot),
50 Equal(Equal),
51 EqualEqual(EqualEqual),
52 Exclamation(Exclamation),
53 ExclamationEqual(ExclamationEqual),
54 GreaterThan(GreaterThan),
55 GreaterThanEqual(GreaterThanEqual),
56 Hash(Hash<'s>),
57 HashLBrace(HashLBrace),
58 Ident(Ident<'s>),
59 Indent(Indent),
60 LBrace(LBrace),
61 LBracket(LBracket),
62 LessThan(LessThan),
63 LessThanEqual(LessThanEqual),
64 Linebreak(Linebreak),
65 LParen(LParen),
66 Minus(Minus),
67 Number(Number<'s>),
68 NumberSign(NumberSign),
69 Percent(Percent),
70 Percentage(Percentage<'s>),
71 Placeholder(Placeholder<'s>),
72 Plus(Plus),
73 PlusUnderscore(PlusUnderscore),
74 Question(Question),
75 RBrace(RBrace),
76 RBracket(RBracket),
77 RParen(RParen),
78 Semicolon(Semicolon),
79 Solidus(Solidus),
80 Str(Str<'s>),
81 StrTemplate(StrTemplate<'s>),
82 Tilde(Tilde),
83 TildeEqual(TildeEqual),
84 UrlRaw(UrlRaw<'s>),
85 UrlTemplate(UrlTemplate<'s>),
86}
87
88#[derive(Clone, Debug, PartialEq)]
89#[cfg_attr(feature = "serialize", derive(Serialize))]
90#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
91pub struct TokenWithSpan<'s> {
92 pub token: Token<'s>,
93 pub span: Span,
94}
95
96#[derive(Clone, Debug, PartialEq)]
97#[cfg_attr(feature = "serialize", derive(Serialize))]
98#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
99pub struct Ampersand {}
100
101#[derive(Clone, Debug, PartialEq)]
102#[cfg_attr(feature = "serialize", derive(Serialize))]
103#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
104pub struct Asterisk {}
105
106#[derive(Clone, Debug, PartialEq)]
107#[cfg_attr(feature = "serialize", derive(Serialize))]
108#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
109pub struct AsteriskEqual {}
110
111#[derive(Clone, Debug, PartialEq)]
112#[cfg_attr(feature = "serialize", derive(Serialize))]
113#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
114pub struct At {}
115
116#[derive(Clone, Debug, PartialEq)]
117#[cfg_attr(feature = "serialize", derive(Serialize))]
118#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
119pub struct AtKeyword<'s> {
120 pub ident: Ident<'s>,
121}
122
123#[derive(Clone, Copy, Debug, PartialEq, Eq)]
127#[cfg_attr(feature = "serialize", derive(Serialize))]
128#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
129pub struct Placeholder<'s> {
130 pub index: u32,
131 pub suffix: &'s str,
135}
136
137#[derive(Clone, Debug, PartialEq)]
138#[cfg_attr(feature = "serialize", derive(Serialize))]
139#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
140pub struct AtLBraceVar<'s> {
141 pub ident: Ident<'s>,
142}
143
144#[derive(Clone, Debug, PartialEq)]
145#[cfg_attr(feature = "serialize", derive(Serialize))]
146#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
147pub struct BacktickCode<'s> {
148 pub raw: &'s str,
149}
150
151#[derive(Clone, Debug, PartialEq)]
152#[cfg_attr(feature = "serialize", derive(Serialize))]
153#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
154pub struct Bar {}
155
156#[derive(Clone, Debug, PartialEq)]
157#[cfg_attr(feature = "serialize", derive(Serialize))]
158#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
159pub struct BarBar {}
160
161#[derive(Clone, Debug, PartialEq)]
162#[cfg_attr(feature = "serialize", derive(Serialize))]
163#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
164pub struct BarEqual {}
165
166#[derive(Clone, Debug, PartialEq)]
167#[cfg_attr(feature = "serialize", derive(Serialize))]
168#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
169pub struct CaretEqual {}
170
171#[derive(Clone, Debug, PartialEq)]
173#[cfg_attr(feature = "serialize", derive(Serialize))]
174#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
175pub struct Cdc {}
176
177#[derive(Clone, Debug, PartialEq)]
179#[cfg_attr(feature = "serialize", derive(Serialize))]
180#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
181pub struct Cdo {}
182
183#[derive(Clone, Debug, PartialEq)]
184#[cfg_attr(feature = "serialize", derive(Serialize))]
185#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
186pub struct Colon {}
187
188#[derive(Clone, Debug, PartialEq)]
189#[cfg_attr(feature = "serialize", derive(Serialize))]
190#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
191pub struct ColonColon {}
192
193#[derive(Clone, Debug, PartialEq)]
194#[cfg_attr(feature = "serialize", derive(Serialize))]
195#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
196pub struct Comma {}
197
198#[derive(Clone, Debug, PartialEq)]
199#[cfg_attr(feature = "serialize", derive(Serialize))]
200#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
201pub struct Dedent {}
202
203#[derive(Clone, Debug, PartialEq)]
204#[cfg_attr(feature = "serialize", derive(Serialize))]
205#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
206pub struct Dimension<'s> {
207 pub value: Number<'s>,
208 pub unit: Ident<'s>,
209}
210
211#[derive(Clone, Debug, PartialEq)]
212#[cfg_attr(feature = "serialize", derive(Serialize))]
213#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
214pub struct DollarEqual {}
215
216#[derive(Clone, Debug, PartialEq)]
217#[cfg_attr(feature = "serialize", derive(Serialize))]
218#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
219pub struct DollarLBraceVar<'s> {
220 pub ident: Ident<'s>,
221}
222
223#[derive(Clone, Debug, PartialEq)]
224#[cfg_attr(feature = "serialize", derive(Serialize))]
225#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
226pub struct DollarVar<'s> {
227 pub ident: Ident<'s>,
228}
229
230#[derive(Clone, Debug, PartialEq)]
231#[cfg_attr(feature = "serialize", derive(Serialize))]
232#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
233pub struct Dot {}
234
235#[derive(Clone, Debug, PartialEq)]
236#[cfg_attr(feature = "serialize", derive(Serialize))]
237#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
238pub struct DotDotDot {}
239
240#[derive(Clone, Debug, PartialEq)]
241#[cfg_attr(feature = "serialize", derive(Serialize))]
242#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
243pub struct Eof {}
244
245#[derive(Clone, Debug, PartialEq)]
246#[cfg_attr(feature = "serialize", derive(Serialize))]
247#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
248pub struct Equal {}
249
250#[derive(Clone, Debug, PartialEq)]
251#[cfg_attr(feature = "serialize", derive(Serialize))]
252#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
253pub struct EqualEqual {}
254
255#[derive(Clone, Debug, PartialEq)]
256#[cfg_attr(feature = "serialize", derive(Serialize))]
257#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
258pub struct Exclamation {}
259
260#[derive(Clone, Debug, PartialEq)]
261#[cfg_attr(feature = "serialize", derive(Serialize))]
262#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
263pub struct ExclamationEqual {}
264
265#[derive(Clone, Debug, PartialEq)]
266#[cfg_attr(feature = "serialize", derive(Serialize))]
267#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
268pub struct GreaterThan {}
269
270#[derive(Clone, Debug, PartialEq)]
271#[cfg_attr(feature = "serialize", derive(Serialize))]
272#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
273pub struct GreaterThanEqual {}
274
275#[derive(Clone, Debug, PartialEq)]
276#[cfg_attr(feature = "serialize", derive(Serialize))]
277#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
278pub struct Hash<'s> {
279 pub raw: &'s str,
281 pub escaped: bool,
282}
283
284#[derive(Clone, Debug, PartialEq)]
285#[cfg_attr(feature = "serialize", derive(Serialize))]
286#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
287pub struct HashLBrace {}
288
289#[derive(Clone, Debug, PartialEq)]
290#[cfg_attr(feature = "serialize", derive(Serialize))]
291#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
292pub struct Ident<'s> {
293 pub escaped: bool,
294 pub raw: &'s str,
295}
296
297#[derive(Clone, Debug, PartialEq)]
298#[cfg_attr(feature = "serialize", derive(Serialize))]
299#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
300pub struct Indent {}
301
302#[derive(Clone, Debug, PartialEq)]
303#[cfg_attr(feature = "serialize", derive(Serialize))]
304#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
305pub struct LBrace {}
306
307#[derive(Clone, Debug, PartialEq)]
308#[cfg_attr(feature = "serialize", derive(Serialize))]
309#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
310pub struct LBracket {}
311
312#[derive(Clone, Debug, PartialEq)]
313#[cfg_attr(feature = "serialize", derive(Serialize))]
314#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
315pub struct LessThan {}
316
317#[derive(Clone, Debug, PartialEq)]
318#[cfg_attr(feature = "serialize", derive(Serialize))]
319#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
320pub struct LessThanEqual {}
321
322#[derive(Clone, Debug, PartialEq)]
323#[cfg_attr(feature = "serialize", derive(Serialize))]
324#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
325pub struct Linebreak {}
326
327#[derive(Clone, Debug, PartialEq)]
328#[cfg_attr(feature = "serialize", derive(Serialize))]
329#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
330pub struct LParen {}
331
332#[derive(Clone, Debug, PartialEq)]
333#[cfg_attr(feature = "serialize", derive(Serialize))]
334#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
335pub struct Minus {}
336
337#[derive(Clone, Debug, PartialEq)]
338#[cfg_attr(feature = "serialize", derive(Serialize))]
339#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
340pub struct Number<'s> {
341 pub raw: &'s str,
342}
343
344#[derive(Clone, Debug, PartialEq)]
346#[cfg_attr(feature = "serialize", derive(Serialize))]
347#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
348pub struct NumberSign {}
349
350#[derive(Clone, Debug, PartialEq)]
351#[cfg_attr(feature = "serialize", derive(Serialize))]
352#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
353pub struct Percent {}
354
355#[derive(Clone, Debug, PartialEq)]
356#[cfg_attr(feature = "serialize", derive(Serialize))]
357#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
358pub struct Percentage<'s> {
359 pub value: Number<'s>,
360}
361
362#[derive(Clone, Debug, PartialEq)]
363#[cfg_attr(feature = "serialize", derive(Serialize))]
364#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
365pub struct Plus {}
366
367#[derive(Clone, Debug, PartialEq)]
368#[cfg_attr(feature = "serialize", derive(Serialize))]
369#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
370pub struct PlusUnderscore {}
371
372#[derive(Clone, Debug, PartialEq)]
373#[cfg_attr(feature = "serialize", derive(Serialize))]
374#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
375pub struct Question {}
376
377#[derive(Clone, Debug, PartialEq)]
378#[cfg_attr(feature = "serialize", derive(Serialize))]
379#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
380pub struct RBrace {}
381
382#[derive(Clone, Debug, PartialEq)]
383#[cfg_attr(feature = "serialize", derive(Serialize))]
384#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
385pub struct RBracket {}
386
387#[derive(Clone, Debug, PartialEq)]
388#[cfg_attr(feature = "serialize", derive(Serialize))]
389#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
390pub struct RParen {}
391
392#[derive(Clone, Debug, PartialEq)]
393#[cfg_attr(feature = "serialize", derive(Serialize))]
394#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
395pub struct Semicolon {}
396
397#[derive(Clone, Debug, PartialEq)]
398#[cfg_attr(feature = "serialize", derive(Serialize))]
399#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
400pub struct Solidus {}
401
402#[derive(Clone, Debug, PartialEq)]
403#[cfg_attr(feature = "serialize", derive(Serialize))]
404#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
405pub struct Str<'s> {
406 pub raw: &'s str,
407 pub escaped: bool,
408}
409
410#[derive(Clone, Debug, PartialEq)]
411#[cfg_attr(feature = "serialize", derive(Serialize))]
412#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
413pub struct StrTemplate<'s> {
414 pub raw: &'s str,
415 pub escaped: bool,
416 pub head: bool,
417 pub tail: bool,
418}
419
420#[derive(Clone, Debug, PartialEq)]
421#[cfg_attr(feature = "serialize", derive(Serialize))]
422#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
423pub struct Tilde {}
424
425#[derive(Clone, Debug, PartialEq)]
426#[cfg_attr(feature = "serialize", derive(Serialize))]
427#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
428pub struct TildeEqual {}
429
430#[derive(Clone, Debug, PartialEq)]
431#[cfg_attr(feature = "serialize", derive(Serialize))]
432#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
433pub struct UrlRaw<'s> {
434 pub raw: &'s str,
435 pub escaped: bool,
436}
437
438#[derive(Clone, Debug, PartialEq)]
439#[cfg_attr(feature = "serialize", derive(Serialize))]
440#[cfg_attr(feature = "serialize", serde(tag = "kind", rename_all = "camelCase"))]
441pub struct UrlTemplate<'s> {
442 pub raw: &'s str,
443 pub escaped: bool,
444 pub tail: bool,
445}
446
447include!("token_generated.rs");