1use crate::TokenTrait;
2pub type SyntaxNode = rowan::SyntaxNode<Lang>;
3#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, logos :: Logos)]
4# [logos (subpattern HEX = r#"([0-9]|[A-F]|[a-f])"#)]
5# [logos (subpattern UCHAR = r#"(\\u(?&HEX)(?&HEX)(?&HEX)(?&HEX)|\\U(?&HEX)(?&HEX)(?&HEX)(?&HEX)(?&HEX)(?&HEX)(?&HEX)(?&HEX))"#)]
6# [logos (subpattern IRIREF = r#"<(([^\x{00}-\x{20}<>"{}|^`\\]|(?&UCHAR)))*>"#)]
7# [logos (subpattern PN_CHARS_BASE = r#"([A-Z]|[a-z]|[\x{00C0}-\x{00D6}]|[\x{00D8}-\x{00F6}]|[\x{00F8}-\x{02FF}]|[\x{0370}-\x{037D}]|[\x{037F}-\x{1FFF}]|[\x{200C}-\x{200D}]|[\x{2070}-\x{218F}]|[\x{2C00}-\x{2FEF}]|[\x{3001}-\x{D7FF}]|[\x{F900}-\x{FDCF}]|[\x{FDF0}-\x{FFFD}]|[\x{10000}-\x{EFFFF}])"#)]
8# [logos (subpattern PN_CHARS_U = r#"((?&PN_CHARS_BASE)|_)"#)]
9# [logos (subpattern PN_CHARS = r#"((?&PN_CHARS_U)|-|[0-9]|\u00B7|[\x{0300}-\x{036F}]|[\x{203F}-\x{2040}])"#)]
10# [logos (subpattern PN_PREFIX = r#"(?&PN_CHARS_BASE)((((?&PN_CHARS)|\.))*(?&PN_CHARS))?"#)]
11# [logos (subpattern PNAME_NS = r#"((?&PN_PREFIX))?:"#)]
12# [logos (subpattern PERCENT = r#"%(?&HEX)(?&HEX)"#)]
13# [logos (subpattern PN_LOCAL_ESC = r#"\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|/|\?|#|@|%)"#)]
14# [logos (subpattern PLX = r#"((?&PERCENT)|(?&PN_LOCAL_ESC))"#)]
15# [logos (subpattern PN_LOCAL = r#"((?&PN_CHARS_U)|:|[0-9]|(?&PLX))((((?&PN_CHARS)|\.|:|(?&PLX)))*((?&PN_CHARS)|:|(?&PLX)))?"#)]
16# [logos (subpattern PNAME_LN = r#"(?&PNAME_NS)(?&PN_LOCAL)"#)]
17# [logos (subpattern BLANK_NODE_LABEL = r#"_:((?&PN_CHARS_U)|[0-9])((((?&PN_CHARS)|\.))*(?&PN_CHARS))?"#)]
18# [logos (subpattern LANGTAG = r#"@([a-zA-Z])+(-([a-zA-Z0-9])+)*"#)]
19# [logos (subpattern INTEGER = r#"([+-])?([0-9])+"#)]
20# [logos (subpattern DECIMAL = r#"([+-])?([0-9])*\.([0-9])+"#)]
21# [logos (subpattern EXPONENT = r#"[eE]([+-])?([0-9])+"#)]
22# [logos (subpattern DOUBLE = r#"([+-])?(([0-9])+\.([0-9])*(?&EXPONENT)|\.([0-9])+(?&EXPONENT)|([0-9])+(?&EXPONENT))"#)]
23# [logos (subpattern ECHAR = r#"\\[tbnrf"'\\]"#)]
24# [logos (subpattern STRING_LITERAL_QUOTE = r#""(([^\x{22}\x{5C}\x{A}\x{D}]|(?&ECHAR)|(?&UCHAR)))*""#)]
25# [logos (subpattern STRING_LITERAL_SINGLE_QUOTE = r#"'(([^\x{27}\x{5C}\x{A}\x{D}]|(?&ECHAR)|(?&UCHAR)))*'"#)]
26# [logos (subpattern STRING_LITERAL_LONG_SINGLE_QUOTE = r#"'''((('|''))?([^'\\]|(?&ECHAR)|(?&UCHAR)))*'''"#)]
27# [logos (subpattern STRING_LITERAL_LONG_QUOTE = r#""""((("|""))?([^"\\]|(?&ECHAR)|(?&UCHAR)))*""""#)]
28# [logos (subpattern WS = r#"(\u0020|\u0009|\u000D|\u000A)"#)]
29#[repr(u16)]
30pub enum SyntaxKind {
31 Eof = 0,
32 #[regex(r"[ \t\n\r]+")]
33 WhiteSpace,
34 #[regex(r"#[^\n]*", allow_greedy = true)]
35 Comment,
36 #[doc = r" producings"]
37 BlankNode,
38 BooleanLiteral,
39 NumericLiteral,
40 PrefixedName,
41 Rdfliteral,
42 MyString,
43 Base,
44 BlankNodePropertyList,
45 BlankNodePropertyList2,
46 Collection,
47 Directive,
48 Iri,
49 Literal,
50 Object,
51 ObjectList,
52 Predicate,
53 PredicateObjectList,
54 PrefixId,
55 SparqlBase,
56 SparqlPrefix,
57 Statement,
58 Subject,
59 Triples,
60 TurtleDoc,
61 Verb,
62 #[doc = r" terminals"]
63 #[token("(")]
64 ClOpen,
65 #[token(")")]
66 ClClose,
67 #[token(",")]
68 Comma,
69 #[token(".")]
70 Stop,
71 #[token(";")]
72 Colon,
73 #[token("@base")]
74 BaseToken,
75 #[token("@prefix")]
76 PrefixToken,
77 #[token("BASE", ignore(case))]
78 SparqlBaseToken,
79 #[token("PREFIX", ignore(case))]
80 SparqlPrefixToken,
81 #[token("[")]
82 SqOpen,
83 #[token("]")]
84 SqClose,
85 #[token("^^")]
86 Datatype,
87 #[token("a")]
88 Alit,
89 #[token("false")]
90 FalseLit,
91 #[token("true")]
92 TrueLit,
93 #[regex("(?&BLANK_NODE_LABEL)")]
94 BlankNodeLabel,
95 #[regex("(?&DECIMAL)")]
96 Decimal,
97 #[regex("(?&DOUBLE)")]
98 Double,
99 #[regex("(?&INTEGER)")]
100 Integer,
101 #[regex("(?&IRIREF)")]
102 Iriref,
103 #[regex("(?&LANGTAG)")]
104 Langtag,
105 #[regex("(?&PNAME_LN)")]
106 PnameLn,
107 #[regex("(?&PNAME_NS)")]
108 PnameNs,
109 #[regex("(?&STRING_LITERAL_LONG_QUOTE)")]
110 StringLiteralLongQuote,
111 #[regex("(?&STRING_LITERAL_LONG_SINGLE_QUOTE)")]
112 StringLiteralLongSingleQuote,
113 #[regex("(?&STRING_LITERAL_QUOTE)")]
114 StringLiteralQuote,
115 #[regex("(?&STRING_LITERAL_SINGLE_QUOTE)")]
116 StringLiteralSingleQuote,
117 Error,
118 ROOT,
119}
120impl From<SyntaxKind> for rowan::SyntaxKind {
121 fn from(kind: SyntaxKind) -> Self {
122 Self(kind as u16)
123 }
124}
125impl From<rowan::SyntaxKind> for SyntaxKind {
126 fn from(value: rowan::SyntaxKind) -> Self {
127 assert!(value.0 <= SyntaxKind::ROOT as u16);
128 unsafe { std::mem::transmute::<u16, SyntaxKind>(value.0) }
129 }
130}
131#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
132pub enum Lang {}
133impl rowan::Language for Lang {
134 type Kind = SyntaxKind;
135 fn kind_from_raw(raw: rowan::SyntaxKind) -> Self::Kind {
136 assert!(raw.0 <= SyntaxKind::ROOT as u16);
137 unsafe { std::mem::transmute::<u16, SyntaxKind>(raw.0) }
138 }
139 fn kind_to_raw(kind: Self::Kind) -> rowan::SyntaxKind {
140 kind.into()
141 }
142}
143mod definitions {
144 use super::*;
145 #[derive(Debug, Clone, Copy)]
146 pub struct Rule {
147 pub kind: SyntaxKind,
148 pub state: usize,
149 }
150 impl Rule {
151 pub fn new(kind: SyntaxKind) -> Self {
152 match kind {
153 SyntaxKind::TurtleDoc => Rule {
154 kind,
155 state: 1usize,
156 },
157 SyntaxKind::Statement => Rule {
158 kind,
159 state: 1usize,
160 },
161 SyntaxKind::Directive => Rule {
162 kind,
163 state: 1usize,
164 },
165 SyntaxKind::PrefixId => Rule {
166 kind,
167 state: 4usize,
168 },
169 SyntaxKind::Base => Rule {
170 kind,
171 state: 3usize,
172 },
173 SyntaxKind::SparqlBase => Rule {
174 kind,
175 state: 2usize,
176 },
177 SyntaxKind::SparqlPrefix => Rule {
178 kind,
179 state: 3usize,
180 },
181 SyntaxKind::Triples => Rule {
182 kind,
183 state: 1usize,
184 },
185 SyntaxKind::PredicateObjectList => Rule {
186 kind,
187 state: 7usize,
188 },
189 SyntaxKind::ObjectList => Rule {
190 kind,
191 state: 4usize,
192 },
193 SyntaxKind::Verb => Rule {
194 kind,
195 state: 1usize,
196 },
197 SyntaxKind::Subject => Rule {
198 kind,
199 state: 1usize,
200 },
201 SyntaxKind::Predicate => Rule {
202 kind,
203 state: 1usize,
204 },
205 SyntaxKind::Object => Rule {
206 kind,
207 state: 1usize,
208 },
209 SyntaxKind::Literal => Rule {
210 kind,
211 state: 1usize,
212 },
213 SyntaxKind::BlankNodePropertyList2 => Rule {
214 kind,
215 state: 4usize,
216 },
217 SyntaxKind::BlankNodePropertyList => Rule {
218 kind,
219 state: 3usize,
220 },
221 SyntaxKind::Collection => Rule {
222 kind,
223 state: 4usize,
224 },
225 SyntaxKind::NumericLiteral => Rule {
226 kind,
227 state: 1usize,
228 },
229 SyntaxKind::Rdfliteral => Rule {
230 kind,
231 state: 6usize,
232 },
233 SyntaxKind::BooleanLiteral => Rule {
234 kind,
235 state: 1usize,
236 },
237 SyntaxKind::MyString => Rule {
238 kind,
239 state: 1usize,
240 },
241 SyntaxKind::Iri => Rule {
242 kind,
243 state: 1usize,
244 },
245 SyntaxKind::PrefixedName => Rule {
246 kind,
247 state: 1usize,
248 },
249 SyntaxKind::BlankNode => Rule {
250 kind,
251 state: 1usize,
252 },
253 SyntaxKind::ClOpen => Rule { kind, state: 0 },
254 SyntaxKind::ClClose => Rule { kind, state: 0 },
255 SyntaxKind::Comma => Rule { kind, state: 0 },
256 SyntaxKind::Stop => Rule { kind, state: 0 },
257 SyntaxKind::Colon => Rule { kind, state: 0 },
258 SyntaxKind::BaseToken => Rule { kind, state: 0 },
259 SyntaxKind::PrefixToken => Rule { kind, state: 0 },
260 SyntaxKind::SparqlBaseToken => Rule { kind, state: 0 },
261 SyntaxKind::SparqlPrefixToken => Rule { kind, state: 0 },
262 SyntaxKind::SqOpen => Rule { kind, state: 0 },
263 SyntaxKind::SqClose => Rule { kind, state: 0 },
264 SyntaxKind::Datatype => Rule { kind, state: 0 },
265 SyntaxKind::Alit => Rule { kind, state: 0 },
266 SyntaxKind::FalseLit => Rule { kind, state: 0 },
267 SyntaxKind::TrueLit => Rule { kind, state: 0 },
268 SyntaxKind::BlankNodeLabel => Rule { kind, state: 0 },
269 SyntaxKind::Decimal => Rule { kind, state: 0 },
270 SyntaxKind::Double => Rule { kind, state: 0 },
271 SyntaxKind::Integer => Rule { kind, state: 0 },
272 SyntaxKind::Iriref => Rule { kind, state: 0 },
273 SyntaxKind::Langtag => Rule { kind, state: 0 },
274 SyntaxKind::PnameLn => Rule { kind, state: 0 },
275 SyntaxKind::PnameNs => Rule { kind, state: 0 },
276 SyntaxKind::StringLiteralLongQuote => Rule { kind, state: 0 },
277 SyntaxKind::StringLiteralLongSingleQuote => Rule { kind, state: 0 },
278 SyntaxKind::StringLiteralQuote => Rule { kind, state: 0 },
279 SyntaxKind::StringLiteralSingleQuote => Rule { kind, state: 0 },
280 _ => panic!("Unknown rule kind {:?}", kind),
281 }
282 }
283 }
284 pub fn first_tokens(kind: SyntaxKind) -> &'static [SyntaxKind] {
285 match kind {
286 SyntaxKind::BlankNode => &[SyntaxKind::SqOpen],
287 SyntaxKind::BooleanLiteral => &[SyntaxKind::FalseLit, SyntaxKind::TrueLit],
288 SyntaxKind::NumericLiteral => &[],
289 SyntaxKind::PrefixedName => &[],
290 SyntaxKind::Rdfliteral => &[],
291 SyntaxKind::MyString => &[],
292 SyntaxKind::Base => &[SyntaxKind::BaseToken],
293 SyntaxKind::BlankNodePropertyList => &[SyntaxKind::SqOpen],
294 SyntaxKind::BlankNodePropertyList2 => &[SyntaxKind::SqOpen],
295 SyntaxKind::Collection => &[SyntaxKind::ClOpen],
296 SyntaxKind::Directive => &[
297 SyntaxKind::BaseToken,
298 SyntaxKind::PrefixToken,
299 SyntaxKind::SparqlBaseToken,
300 SyntaxKind::SparqlPrefixToken,
301 ],
302 SyntaxKind::Iri => &[],
303 SyntaxKind::Literal => &[SyntaxKind::FalseLit, SyntaxKind::TrueLit],
304 SyntaxKind::Object => &[
305 SyntaxKind::ClOpen,
306 SyntaxKind::FalseLit,
307 SyntaxKind::SqOpen,
308 SyntaxKind::TrueLit,
309 ],
310 SyntaxKind::ObjectList => &[
311 SyntaxKind::ClOpen,
312 SyntaxKind::FalseLit,
313 SyntaxKind::SqOpen,
314 SyntaxKind::TrueLit,
315 ],
316 SyntaxKind::Predicate => &[],
317 SyntaxKind::PredicateObjectList => &[SyntaxKind::Alit],
318 SyntaxKind::PrefixId => &[SyntaxKind::PrefixToken],
319 SyntaxKind::SparqlBase => &[SyntaxKind::SparqlBaseToken],
320 SyntaxKind::SparqlPrefix => &[SyntaxKind::SparqlPrefixToken],
321 SyntaxKind::Statement => &[
322 SyntaxKind::BaseToken,
323 SyntaxKind::ClOpen,
324 SyntaxKind::PrefixToken,
325 SyntaxKind::SparqlBaseToken,
326 SyntaxKind::SparqlPrefixToken,
327 SyntaxKind::SqOpen,
328 ],
329 SyntaxKind::Subject => &[SyntaxKind::ClOpen, SyntaxKind::SqOpen],
330 SyntaxKind::Triples => &[SyntaxKind::ClOpen, SyntaxKind::SqOpen],
331 SyntaxKind::TurtleDoc => &[
332 SyntaxKind::BaseToken,
333 SyntaxKind::ClOpen,
334 SyntaxKind::PrefixToken,
335 SyntaxKind::SparqlBaseToken,
336 SyntaxKind::SparqlPrefixToken,
337 SyntaxKind::SqOpen,
338 ],
339 SyntaxKind::Verb => &[SyntaxKind::Alit],
340 SyntaxKind::ClOpen => &[SyntaxKind::ClOpen],
341 SyntaxKind::ClClose => &[SyntaxKind::ClClose],
342 SyntaxKind::Comma => &[SyntaxKind::Comma],
343 SyntaxKind::Stop => &[SyntaxKind::Stop],
344 SyntaxKind::Colon => &[SyntaxKind::Colon],
345 SyntaxKind::BaseToken => &[SyntaxKind::BaseToken],
346 SyntaxKind::PrefixToken => &[SyntaxKind::PrefixToken],
347 SyntaxKind::SparqlBaseToken => &[SyntaxKind::SparqlBaseToken],
348 SyntaxKind::SparqlPrefixToken => &[SyntaxKind::SparqlPrefixToken],
349 SyntaxKind::SqOpen => &[SyntaxKind::SqOpen],
350 SyntaxKind::SqClose => &[SyntaxKind::SqClose],
351 SyntaxKind::Datatype => &[SyntaxKind::Datatype],
352 SyntaxKind::Alit => &[SyntaxKind::Alit],
353 SyntaxKind::FalseLit => &[SyntaxKind::FalseLit],
354 SyntaxKind::TrueLit => &[SyntaxKind::TrueLit],
355 SyntaxKind::BlankNodeLabel => &[SyntaxKind::BlankNodeLabel],
356 SyntaxKind::Decimal => &[SyntaxKind::Decimal],
357 SyntaxKind::Double => &[SyntaxKind::Double],
358 SyntaxKind::Integer => &[SyntaxKind::Integer],
359 SyntaxKind::Iriref => &[SyntaxKind::Iriref],
360 SyntaxKind::Langtag => &[SyntaxKind::Langtag],
361 SyntaxKind::PnameLn => &[SyntaxKind::PnameLn],
362 SyntaxKind::PnameNs => &[SyntaxKind::PnameNs],
363 SyntaxKind::StringLiteralLongQuote => &[SyntaxKind::StringLiteralLongQuote],
364 SyntaxKind::StringLiteralLongSingleQuote => &[SyntaxKind::StringLiteralLongSingleQuote],
365 SyntaxKind::StringLiteralQuote => &[SyntaxKind::StringLiteralQuote],
366 SyntaxKind::StringLiteralSingleQuote => &[SyntaxKind::StringLiteralSingleQuote],
367 _ => &[],
368 }
369 }
370 #[doc = r" Returns the minimum error cost that `kind` must incur when `tok`"]
371 #[doc = r" is the current token. 0 means the token is reachable (or the rule"]
372 #[doc = r" is nullable); positive means the rule cannot make progress without"]
373 #[doc = r" at least that much error cost."]
374 pub fn min_error_for_token(kind: SyntaxKind, tok: SyntaxKind) -> isize {
375 match kind {
376 SyntaxKind::BlankNode => match tok {
377 SyntaxKind::BlankNodeLabel | SyntaxKind::SqClose | SyntaxKind::SqOpen => 0,
378 _ => kind.max_error_value(),
379 },
380 SyntaxKind::BooleanLiteral => match tok {
381 SyntaxKind::FalseLit | SyntaxKind::TrueLit => 0,
382 _ => kind.max_error_value(),
383 },
384 SyntaxKind::NumericLiteral => match tok {
385 SyntaxKind::Decimal | SyntaxKind::Double | SyntaxKind::Integer => 0,
386 _ => kind.max_error_value(),
387 },
388 SyntaxKind::PrefixedName => match tok {
389 SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
390 _ => kind.max_error_value(),
391 },
392 SyntaxKind::Rdfliteral => match tok {
393 SyntaxKind::Datatype
394 | SyntaxKind::Iriref
395 | SyntaxKind::Langtag
396 | SyntaxKind::PnameLn
397 | SyntaxKind::PnameNs
398 | SyntaxKind::StringLiteralLongQuote
399 | SyntaxKind::StringLiteralLongSingleQuote
400 | SyntaxKind::StringLiteralQuote
401 | SyntaxKind::StringLiteralSingleQuote => 0,
402 _ => kind.max_error_value(),
403 },
404 SyntaxKind::MyString => match tok {
405 SyntaxKind::StringLiteralLongQuote
406 | SyntaxKind::StringLiteralLongSingleQuote
407 | SyntaxKind::StringLiteralQuote
408 | SyntaxKind::StringLiteralSingleQuote => 0,
409 _ => kind.max_error_value(),
410 },
411 SyntaxKind::Base => match tok {
412 SyntaxKind::BaseToken | SyntaxKind::Iriref | SyntaxKind::Stop => 0,
413 _ => kind.max_error_value(),
414 },
415 SyntaxKind::BlankNodePropertyList => match tok {
416 SyntaxKind::Alit
417 | SyntaxKind::BlankNodeLabel
418 | SyntaxKind::ClClose
419 | SyntaxKind::ClOpen
420 | SyntaxKind::Colon
421 | SyntaxKind::Comma
422 | SyntaxKind::Datatype
423 | SyntaxKind::Decimal
424 | SyntaxKind::Double
425 | SyntaxKind::FalseLit
426 | SyntaxKind::Integer
427 | SyntaxKind::Iriref
428 | SyntaxKind::Langtag
429 | SyntaxKind::PnameLn
430 | SyntaxKind::PnameNs
431 | SyntaxKind::SqClose
432 | SyntaxKind::SqOpen
433 | SyntaxKind::StringLiteralLongQuote
434 | SyntaxKind::StringLiteralLongSingleQuote
435 | SyntaxKind::StringLiteralQuote
436 | SyntaxKind::StringLiteralSingleQuote
437 | SyntaxKind::TrueLit => 0,
438 _ => kind.max_error_value(),
439 },
440 SyntaxKind::BlankNodePropertyList2 => match tok {
441 SyntaxKind::Alit
442 | SyntaxKind::BlankNodeLabel
443 | SyntaxKind::ClClose
444 | SyntaxKind::ClOpen
445 | SyntaxKind::Colon
446 | SyntaxKind::Comma
447 | SyntaxKind::Datatype
448 | SyntaxKind::Decimal
449 | SyntaxKind::Double
450 | SyntaxKind::FalseLit
451 | SyntaxKind::Integer
452 | SyntaxKind::Iriref
453 | SyntaxKind::Langtag
454 | SyntaxKind::PnameLn
455 | SyntaxKind::PnameNs
456 | SyntaxKind::SqClose
457 | SyntaxKind::SqOpen
458 | SyntaxKind::StringLiteralLongQuote
459 | SyntaxKind::StringLiteralLongSingleQuote
460 | SyntaxKind::StringLiteralQuote
461 | SyntaxKind::StringLiteralSingleQuote
462 | SyntaxKind::TrueLit => 0,
463 _ => kind.max_error_value(),
464 },
465 SyntaxKind::Collection => match tok {
466 SyntaxKind::Alit
467 | SyntaxKind::BlankNodeLabel
468 | SyntaxKind::ClClose
469 | SyntaxKind::ClOpen
470 | SyntaxKind::Colon
471 | SyntaxKind::Comma
472 | SyntaxKind::Datatype
473 | SyntaxKind::Decimal
474 | SyntaxKind::Double
475 | SyntaxKind::FalseLit
476 | SyntaxKind::Integer
477 | SyntaxKind::Iriref
478 | SyntaxKind::Langtag
479 | SyntaxKind::PnameLn
480 | SyntaxKind::PnameNs
481 | SyntaxKind::SqClose
482 | SyntaxKind::SqOpen
483 | SyntaxKind::StringLiteralLongQuote
484 | SyntaxKind::StringLiteralLongSingleQuote
485 | SyntaxKind::StringLiteralQuote
486 | SyntaxKind::StringLiteralSingleQuote
487 | SyntaxKind::TrueLit => 0,
488 _ => kind.max_error_value(),
489 },
490 SyntaxKind::Directive => match tok {
491 SyntaxKind::BaseToken
492 | SyntaxKind::Iriref
493 | SyntaxKind::PnameNs
494 | SyntaxKind::PrefixToken
495 | SyntaxKind::SparqlBaseToken
496 | SyntaxKind::SparqlPrefixToken
497 | SyntaxKind::Stop => 0,
498 _ => kind.max_error_value(),
499 },
500 SyntaxKind::Iri => match tok {
501 SyntaxKind::Iriref | SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
502 _ => kind.max_error_value(),
503 },
504 SyntaxKind::Literal => match tok {
505 SyntaxKind::Datatype
506 | SyntaxKind::Decimal
507 | SyntaxKind::Double
508 | SyntaxKind::FalseLit
509 | SyntaxKind::Integer
510 | SyntaxKind::Iriref
511 | SyntaxKind::Langtag
512 | SyntaxKind::PnameLn
513 | SyntaxKind::PnameNs
514 | SyntaxKind::StringLiteralLongQuote
515 | SyntaxKind::StringLiteralLongSingleQuote
516 | SyntaxKind::StringLiteralQuote
517 | SyntaxKind::StringLiteralSingleQuote
518 | SyntaxKind::TrueLit => 0,
519 _ => kind.max_error_value(),
520 },
521 SyntaxKind::Object => match tok {
522 SyntaxKind::Alit
523 | SyntaxKind::BlankNodeLabel
524 | SyntaxKind::ClClose
525 | SyntaxKind::ClOpen
526 | SyntaxKind::Colon
527 | SyntaxKind::Comma
528 | SyntaxKind::Datatype
529 | SyntaxKind::Decimal
530 | SyntaxKind::Double
531 | SyntaxKind::FalseLit
532 | SyntaxKind::Integer
533 | SyntaxKind::Iriref
534 | SyntaxKind::Langtag
535 | SyntaxKind::PnameLn
536 | SyntaxKind::PnameNs
537 | SyntaxKind::SqClose
538 | SyntaxKind::SqOpen
539 | SyntaxKind::StringLiteralLongQuote
540 | SyntaxKind::StringLiteralLongSingleQuote
541 | SyntaxKind::StringLiteralQuote
542 | SyntaxKind::StringLiteralSingleQuote
543 | SyntaxKind::TrueLit => 0,
544 _ => kind.max_error_value(),
545 },
546 SyntaxKind::ObjectList => match tok {
547 SyntaxKind::Alit
548 | SyntaxKind::BlankNodeLabel
549 | SyntaxKind::ClClose
550 | SyntaxKind::ClOpen
551 | SyntaxKind::Colon
552 | SyntaxKind::Comma
553 | SyntaxKind::Datatype
554 | SyntaxKind::Decimal
555 | SyntaxKind::Double
556 | SyntaxKind::FalseLit
557 | SyntaxKind::Integer
558 | SyntaxKind::Iriref
559 | SyntaxKind::Langtag
560 | SyntaxKind::PnameLn
561 | SyntaxKind::PnameNs
562 | SyntaxKind::SqClose
563 | SyntaxKind::SqOpen
564 | SyntaxKind::StringLiteralLongQuote
565 | SyntaxKind::StringLiteralLongSingleQuote
566 | SyntaxKind::StringLiteralQuote
567 | SyntaxKind::StringLiteralSingleQuote
568 | SyntaxKind::TrueLit => 0,
569 _ => kind.max_error_value(),
570 },
571 SyntaxKind::Predicate => match tok {
572 SyntaxKind::Iriref | SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
573 _ => kind.max_error_value(),
574 },
575 SyntaxKind::PredicateObjectList => match tok {
576 SyntaxKind::Alit
577 | SyntaxKind::BlankNodeLabel
578 | SyntaxKind::ClClose
579 | SyntaxKind::ClOpen
580 | SyntaxKind::Colon
581 | SyntaxKind::Comma
582 | SyntaxKind::Datatype
583 | SyntaxKind::Decimal
584 | SyntaxKind::Double
585 | SyntaxKind::FalseLit
586 | SyntaxKind::Integer
587 | SyntaxKind::Iriref
588 | SyntaxKind::Langtag
589 | SyntaxKind::PnameLn
590 | SyntaxKind::PnameNs
591 | SyntaxKind::SqClose
592 | SyntaxKind::SqOpen
593 | SyntaxKind::StringLiteralLongQuote
594 | SyntaxKind::StringLiteralLongSingleQuote
595 | SyntaxKind::StringLiteralQuote
596 | SyntaxKind::StringLiteralSingleQuote
597 | SyntaxKind::TrueLit => 0,
598 _ => kind.max_error_value(),
599 },
600 SyntaxKind::PrefixId => match tok {
601 SyntaxKind::Iriref
602 | SyntaxKind::PnameNs
603 | SyntaxKind::PrefixToken
604 | SyntaxKind::Stop => 0,
605 _ => kind.max_error_value(),
606 },
607 SyntaxKind::SparqlBase => match tok {
608 SyntaxKind::Iriref | SyntaxKind::SparqlBaseToken => 0,
609 _ => kind.max_error_value(),
610 },
611 SyntaxKind::SparqlPrefix => match tok {
612 SyntaxKind::Iriref | SyntaxKind::PnameNs | SyntaxKind::SparqlPrefixToken => 0,
613 _ => kind.max_error_value(),
614 },
615 SyntaxKind::Statement => match tok {
616 SyntaxKind::Alit
617 | SyntaxKind::BaseToken
618 | SyntaxKind::BlankNodeLabel
619 | SyntaxKind::ClClose
620 | SyntaxKind::ClOpen
621 | SyntaxKind::Colon
622 | SyntaxKind::Comma
623 | SyntaxKind::Datatype
624 | SyntaxKind::Decimal
625 | SyntaxKind::Double
626 | SyntaxKind::FalseLit
627 | SyntaxKind::Integer
628 | SyntaxKind::Iriref
629 | SyntaxKind::Langtag
630 | SyntaxKind::PnameLn
631 | SyntaxKind::PnameNs
632 | SyntaxKind::PrefixToken
633 | SyntaxKind::SparqlBaseToken
634 | SyntaxKind::SparqlPrefixToken
635 | SyntaxKind::SqClose
636 | SyntaxKind::SqOpen
637 | SyntaxKind::Stop
638 | SyntaxKind::StringLiteralLongQuote
639 | SyntaxKind::StringLiteralLongSingleQuote
640 | SyntaxKind::StringLiteralQuote
641 | SyntaxKind::StringLiteralSingleQuote
642 | SyntaxKind::TrueLit => 0,
643 _ => kind.max_error_value(),
644 },
645 SyntaxKind::Subject => match tok {
646 SyntaxKind::Alit
647 | SyntaxKind::BlankNodeLabel
648 | SyntaxKind::ClClose
649 | SyntaxKind::ClOpen
650 | SyntaxKind::Colon
651 | SyntaxKind::Comma
652 | SyntaxKind::Datatype
653 | SyntaxKind::Decimal
654 | SyntaxKind::Double
655 | SyntaxKind::FalseLit
656 | SyntaxKind::Integer
657 | SyntaxKind::Iriref
658 | SyntaxKind::Langtag
659 | SyntaxKind::PnameLn
660 | SyntaxKind::PnameNs
661 | SyntaxKind::SqClose
662 | SyntaxKind::SqOpen
663 | SyntaxKind::StringLiteralLongQuote
664 | SyntaxKind::StringLiteralLongSingleQuote
665 | SyntaxKind::StringLiteralQuote
666 | SyntaxKind::StringLiteralSingleQuote
667 | SyntaxKind::TrueLit => 0,
668 _ => kind.max_error_value(),
669 },
670 SyntaxKind::Triples => match tok {
671 SyntaxKind::Alit
672 | SyntaxKind::BlankNodeLabel
673 | SyntaxKind::ClClose
674 | SyntaxKind::ClOpen
675 | SyntaxKind::Colon
676 | SyntaxKind::Comma
677 | SyntaxKind::Datatype
678 | SyntaxKind::Decimal
679 | SyntaxKind::Double
680 | SyntaxKind::FalseLit
681 | SyntaxKind::Integer
682 | SyntaxKind::Iriref
683 | SyntaxKind::Langtag
684 | SyntaxKind::PnameLn
685 | SyntaxKind::PnameNs
686 | SyntaxKind::SqClose
687 | SyntaxKind::SqOpen
688 | SyntaxKind::StringLiteralLongQuote
689 | SyntaxKind::StringLiteralLongSingleQuote
690 | SyntaxKind::StringLiteralQuote
691 | SyntaxKind::StringLiteralSingleQuote
692 | SyntaxKind::TrueLit => 0,
693 _ => kind.max_error_value(),
694 },
695 SyntaxKind::Verb => match tok {
696 SyntaxKind::Alit
697 | SyntaxKind::Iriref
698 | SyntaxKind::PnameLn
699 | SyntaxKind::PnameNs => 0,
700 _ => kind.max_error_value(),
701 },
702 SyntaxKind::ClOpen => match tok {
703 SyntaxKind::ClOpen => 0,
704 _ => kind.max_error_value(),
705 },
706 SyntaxKind::ClClose => match tok {
707 SyntaxKind::ClClose => 0,
708 _ => kind.max_error_value(),
709 },
710 SyntaxKind::Comma => match tok {
711 SyntaxKind::Comma => 0,
712 _ => kind.max_error_value(),
713 },
714 SyntaxKind::Stop => match tok {
715 SyntaxKind::Stop => 0,
716 _ => kind.max_error_value(),
717 },
718 SyntaxKind::Colon => match tok {
719 SyntaxKind::Colon => 0,
720 _ => kind.max_error_value(),
721 },
722 SyntaxKind::BaseToken => match tok {
723 SyntaxKind::BaseToken => 0,
724 _ => kind.max_error_value(),
725 },
726 SyntaxKind::PrefixToken => match tok {
727 SyntaxKind::PrefixToken => 0,
728 _ => kind.max_error_value(),
729 },
730 SyntaxKind::SparqlBaseToken => match tok {
731 SyntaxKind::SparqlBaseToken => 0,
732 _ => kind.max_error_value(),
733 },
734 SyntaxKind::SparqlPrefixToken => match tok {
735 SyntaxKind::SparqlPrefixToken => 0,
736 _ => kind.max_error_value(),
737 },
738 SyntaxKind::SqOpen => match tok {
739 SyntaxKind::SqOpen => 0,
740 _ => kind.max_error_value(),
741 },
742 SyntaxKind::SqClose => match tok {
743 SyntaxKind::SqClose => 0,
744 _ => kind.max_error_value(),
745 },
746 SyntaxKind::Datatype => match tok {
747 SyntaxKind::Datatype => 0,
748 _ => kind.max_error_value(),
749 },
750 SyntaxKind::Alit => match tok {
751 SyntaxKind::Alit => 0,
752 _ => kind.max_error_value(),
753 },
754 SyntaxKind::FalseLit => match tok {
755 SyntaxKind::FalseLit => 0,
756 _ => kind.max_error_value(),
757 },
758 SyntaxKind::TrueLit => match tok {
759 SyntaxKind::TrueLit => 0,
760 _ => kind.max_error_value(),
761 },
762 SyntaxKind::BlankNodeLabel => match tok {
763 SyntaxKind::BlankNodeLabel => 0,
764 _ => kind.max_error_value(),
765 },
766 SyntaxKind::Decimal => match tok {
767 SyntaxKind::Decimal => 0,
768 _ => kind.max_error_value(),
769 },
770 SyntaxKind::Double => match tok {
771 SyntaxKind::Double => 0,
772 _ => kind.max_error_value(),
773 },
774 SyntaxKind::Integer => match tok {
775 SyntaxKind::Integer => 0,
776 _ => kind.max_error_value(),
777 },
778 SyntaxKind::Iriref => match tok {
779 SyntaxKind::Iriref => 0,
780 _ => kind.max_error_value(),
781 },
782 SyntaxKind::Langtag => match tok {
783 SyntaxKind::Langtag => 0,
784 _ => kind.max_error_value(),
785 },
786 SyntaxKind::PnameLn => match tok {
787 SyntaxKind::PnameLn => 0,
788 _ => kind.max_error_value(),
789 },
790 SyntaxKind::PnameNs => match tok {
791 SyntaxKind::PnameNs => 0,
792 _ => kind.max_error_value(),
793 },
794 SyntaxKind::StringLiteralLongQuote => match tok {
795 SyntaxKind::StringLiteralLongQuote => 0,
796 _ => kind.max_error_value(),
797 },
798 SyntaxKind::StringLiteralLongSingleQuote => match tok {
799 SyntaxKind::StringLiteralLongSingleQuote => 0,
800 _ => kind.max_error_value(),
801 },
802 SyntaxKind::StringLiteralQuote => match tok {
803 SyntaxKind::StringLiteralQuote => 0,
804 _ => kind.max_error_value(),
805 },
806 SyntaxKind::StringLiteralSingleQuote => match tok {
807 SyntaxKind::StringLiteralSingleQuote => 0,
808 _ => kind.max_error_value(),
809 },
810 _ => 0,
811 }
812 }
813 #[doc = r" Precomputed dist(q, a): minimum insertion cost to reach a point"]
814 #[doc = r" where terminal `terminal` can be matched, starting from parser"]
815 #[doc = r" state `(kind, state)`. Returns 0 as the conservative default"]
816 #[doc = r" (admissible — parent context might accept the terminal after a pop)."]
817 pub fn state_dist(kind: SyntaxKind, state: usize, terminal: SyntaxKind) -> isize {
818 match (kind, state, terminal) {
819 (SyntaxKind::BlankNode, 1usize, _) => match terminal {
820 SyntaxKind::BlankNodeLabel | SyntaxKind::SqOpen => 0,
821 _ => 1isize,
822 },
823 (SyntaxKind::BlankNode, 2usize, _) => match terminal {
824 SyntaxKind::BlankNodeLabel => 0,
825 _ => 1isize,
826 },
827 (SyntaxKind::BlankNode, 3usize, _) => match terminal {
828 SyntaxKind::SqClose => 0,
829 _ => 2isize,
830 },
831 (SyntaxKind::BlankNode, 4usize, _) => match terminal {
832 SyntaxKind::Alit => 4isize,
833 SyntaxKind::BlankNodeLabel => 4isize,
834 SyntaxKind::Decimal => 4isize,
835 SyntaxKind::Double => 4isize,
836 SyntaxKind::FalseLit => 4isize,
837 SyntaxKind::Integer => 4isize,
838 SyntaxKind::Iriref => 4isize,
839 SyntaxKind::Langtag => 4isize,
840 SyntaxKind::PnameLn => 4isize,
841 SyntaxKind::PnameNs => 4isize,
842 SyntaxKind::StringLiteralLongQuote => 4isize,
843 SyntaxKind::StringLiteralLongSingleQuote => 4isize,
844 SyntaxKind::StringLiteralQuote => 4isize,
845 SyntaxKind::StringLiteralSingleQuote => 4isize,
846 SyntaxKind::TrueLit => 4isize,
847 SyntaxKind::BaseToken => 4isize,
848 SyntaxKind::ClClose => 4isize,
849 SyntaxKind::ClOpen => 4isize,
850 SyntaxKind::Colon => 4isize,
851 SyntaxKind::Comma => 4isize,
852 SyntaxKind::Datatype => 4isize,
853 SyntaxKind::PrefixToken => 4isize,
854 SyntaxKind::SparqlBaseToken => 4isize,
855 SyntaxKind::SparqlPrefixToken => 4isize,
856 SyntaxKind::SqClose => 2isize,
857 SyntaxKind::Stop => 4isize,
858 _ => 0,
859 },
860 (SyntaxKind::BooleanLiteral, 1usize, _) => match terminal {
861 SyntaxKind::FalseLit | SyntaxKind::TrueLit => 0,
862 _ => 1isize,
863 },
864 (SyntaxKind::BooleanLiteral, 2usize, _) => match terminal {
865 SyntaxKind::TrueLit => 0,
866 _ => 1isize,
867 },
868 (SyntaxKind::BooleanLiteral, 3usize, _) => match terminal {
869 SyntaxKind::FalseLit => 0,
870 _ => 1isize,
871 },
872 (SyntaxKind::NumericLiteral, 1usize, _) => match terminal {
873 SyntaxKind::Decimal | SyntaxKind::Double | SyntaxKind::Integer => 0,
874 _ => 1isize,
875 },
876 (SyntaxKind::NumericLiteral, 2usize, _) => match terminal {
877 SyntaxKind::Integer => 0,
878 _ => 1isize,
879 },
880 (SyntaxKind::NumericLiteral, 3usize, _) => match terminal {
881 SyntaxKind::Decimal => 0,
882 _ => 1isize,
883 },
884 (SyntaxKind::NumericLiteral, 4usize, _) => match terminal {
885 SyntaxKind::Double => 0,
886 _ => 1isize,
887 },
888 (SyntaxKind::PrefixedName, 1usize, _) => match terminal {
889 SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
890 _ => 1isize,
891 },
892 (SyntaxKind::PrefixedName, 2usize, _) => match terminal {
893 SyntaxKind::PnameLn => 0,
894 _ => 1isize,
895 },
896 (SyntaxKind::PrefixedName, 3usize, _) => match terminal {
897 SyntaxKind::PnameNs => 0,
898 _ => 1isize,
899 },
900 (SyntaxKind::Rdfliteral, 2usize, _) => match terminal {
901 SyntaxKind::Langtag | SyntaxKind::Datatype => 0,
902 _ => 1isize,
903 },
904 (SyntaxKind::Rdfliteral, 3usize, _) => match terminal {
905 SyntaxKind::Langtag => 0,
906 _ => 1isize,
907 },
908 (SyntaxKind::Rdfliteral, 4usize, _) => match terminal {
909 SyntaxKind::Iriref | SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
910 _ => 1isize,
911 },
912 (SyntaxKind::Rdfliteral, 5usize, _) => match terminal {
913 SyntaxKind::Alit => 2isize,
914 SyntaxKind::BlankNodeLabel => 2isize,
915 SyntaxKind::Decimal => 2isize,
916 SyntaxKind::Double => 2isize,
917 SyntaxKind::FalseLit => 2isize,
918 SyntaxKind::Integer => 2isize,
919 SyntaxKind::Iriref => 1isize,
920 SyntaxKind::Langtag => 2isize,
921 SyntaxKind::PnameLn => 1isize,
922 SyntaxKind::PnameNs => 1isize,
923 SyntaxKind::StringLiteralLongQuote => 2isize,
924 SyntaxKind::StringLiteralLongSingleQuote => 2isize,
925 SyntaxKind::StringLiteralQuote => 2isize,
926 SyntaxKind::StringLiteralSingleQuote => 2isize,
927 SyntaxKind::TrueLit => 2isize,
928 SyntaxKind::BaseToken => 2isize,
929 SyntaxKind::ClClose => 2isize,
930 SyntaxKind::ClOpen => 2isize,
931 SyntaxKind::Colon => 2isize,
932 SyntaxKind::Comma => 2isize,
933 SyntaxKind::PrefixToken => 2isize,
934 SyntaxKind::SparqlBaseToken => 2isize,
935 SyntaxKind::SparqlPrefixToken => 2isize,
936 SyntaxKind::SqClose => 2isize,
937 SyntaxKind::SqOpen => 2isize,
938 SyntaxKind::Stop => 2isize,
939 _ => 0,
940 },
941 (SyntaxKind::Rdfliteral, 6usize, _) => match terminal {
942 SyntaxKind::StringLiteralLongQuote
943 | SyntaxKind::StringLiteralLongSingleQuote
944 | SyntaxKind::StringLiteralQuote
945 | SyntaxKind::StringLiteralSingleQuote => 0,
946 _ => 1isize,
947 },
948 (SyntaxKind::MyString, 1usize, _) => match terminal {
949 SyntaxKind::StringLiteralLongQuote
950 | SyntaxKind::StringLiteralLongSingleQuote
951 | SyntaxKind::StringLiteralQuote
952 | SyntaxKind::StringLiteralSingleQuote => 0,
953 _ => 1isize,
954 },
955 (SyntaxKind::MyString, 2usize, _) => match terminal {
956 SyntaxKind::StringLiteralQuote => 0,
957 _ => 1isize,
958 },
959 (SyntaxKind::MyString, 3usize, _) => match terminal {
960 SyntaxKind::StringLiteralSingleQuote => 0,
961 _ => 1isize,
962 },
963 (SyntaxKind::MyString, 4usize, _) => match terminal {
964 SyntaxKind::StringLiteralLongSingleQuote => 0,
965 _ => 1isize,
966 },
967 (SyntaxKind::MyString, 5usize, _) => match terminal {
968 SyntaxKind::StringLiteralLongQuote => 0,
969 _ => 1isize,
970 },
971 (SyntaxKind::Base, 1usize, _) => match terminal {
972 SyntaxKind::Stop => 0,
973 _ => 3isize,
974 },
975 (SyntaxKind::Base, 2usize, _) => match terminal {
976 SyntaxKind::Alit => 4isize,
977 SyntaxKind::BlankNodeLabel => 4isize,
978 SyntaxKind::Decimal => 4isize,
979 SyntaxKind::Double => 4isize,
980 SyntaxKind::FalseLit => 4isize,
981 SyntaxKind::Integer => 4isize,
982 SyntaxKind::Langtag => 4isize,
983 SyntaxKind::PnameLn => 4isize,
984 SyntaxKind::PnameNs => 4isize,
985 SyntaxKind::StringLiteralLongQuote => 4isize,
986 SyntaxKind::StringLiteralLongSingleQuote => 4isize,
987 SyntaxKind::StringLiteralQuote => 4isize,
988 SyntaxKind::StringLiteralSingleQuote => 4isize,
989 SyntaxKind::TrueLit => 4isize,
990 SyntaxKind::BaseToken => 4isize,
991 SyntaxKind::ClClose => 4isize,
992 SyntaxKind::ClOpen => 4isize,
993 SyntaxKind::Colon => 4isize,
994 SyntaxKind::Comma => 4isize,
995 SyntaxKind::Datatype => 4isize,
996 SyntaxKind::PrefixToken => 4isize,
997 SyntaxKind::SparqlBaseToken => 4isize,
998 SyntaxKind::SparqlPrefixToken => 4isize,
999 SyntaxKind::SqClose => 4isize,
1000 SyntaxKind::SqOpen => 4isize,
1001 SyntaxKind::Stop => 1isize,
1002 _ => 0,
1003 },
1004 (SyntaxKind::Base, 3usize, _) => match terminal {
1005 SyntaxKind::Alit => 104isize,
1006 SyntaxKind::BlankNodeLabel => 104isize,
1007 SyntaxKind::Decimal => 104isize,
1008 SyntaxKind::Double => 104isize,
1009 SyntaxKind::FalseLit => 104isize,
1010 SyntaxKind::Integer => 104isize,
1011 SyntaxKind::Iriref => 100isize,
1012 SyntaxKind::Langtag => 104isize,
1013 SyntaxKind::PnameLn => 104isize,
1014 SyntaxKind::PnameNs => 104isize,
1015 SyntaxKind::StringLiteralLongQuote => 104isize,
1016 SyntaxKind::StringLiteralLongSingleQuote => 104isize,
1017 SyntaxKind::StringLiteralQuote => 104isize,
1018 SyntaxKind::StringLiteralSingleQuote => 104isize,
1019 SyntaxKind::TrueLit => 104isize,
1020 SyntaxKind::ClClose => 104isize,
1021 SyntaxKind::ClOpen => 104isize,
1022 SyntaxKind::Colon => 104isize,
1023 SyntaxKind::Comma => 104isize,
1024 SyntaxKind::Datatype => 104isize,
1025 SyntaxKind::PrefixToken => 104isize,
1026 SyntaxKind::SparqlBaseToken => 104isize,
1027 SyntaxKind::SparqlPrefixToken => 104isize,
1028 SyntaxKind::SqClose => 104isize,
1029 SyntaxKind::SqOpen => 104isize,
1030 SyntaxKind::Stop => 101isize,
1031 _ => 0,
1032 },
1033 (SyntaxKind::BlankNodePropertyList, 1usize, _) => match terminal {
1034 SyntaxKind::SqClose => 0,
1035 _ => 2isize,
1036 },
1037 (SyntaxKind::BlankNodePropertyList, 2usize, _) => match terminal {
1038 SyntaxKind::Alit
1039 | SyntaxKind::Iriref
1040 | SyntaxKind::PnameLn
1041 | SyntaxKind::PnameNs => 0,
1042 _ => 1isize,
1043 },
1044 (SyntaxKind::BlankNodePropertyList, 3usize, _) => match terminal {
1045 SyntaxKind::Alit => 2isize,
1046 SyntaxKind::BlankNodeLabel => 3isize,
1047 SyntaxKind::Decimal => 3isize,
1048 SyntaxKind::Double => 3isize,
1049 SyntaxKind::FalseLit => 3isize,
1050 SyntaxKind::Integer => 3isize,
1051 SyntaxKind::Iriref => 2isize,
1052 SyntaxKind::Langtag => 3isize,
1053 SyntaxKind::PnameLn => 2isize,
1054 SyntaxKind::PnameNs => 2isize,
1055 SyntaxKind::StringLiteralLongQuote => 3isize,
1056 SyntaxKind::StringLiteralLongSingleQuote => 3isize,
1057 SyntaxKind::StringLiteralQuote => 3isize,
1058 SyntaxKind::StringLiteralSingleQuote => 3isize,
1059 SyntaxKind::TrueLit => 3isize,
1060 SyntaxKind::BaseToken => 3isize,
1061 SyntaxKind::ClClose => 3isize,
1062 SyntaxKind::ClOpen => 3isize,
1063 SyntaxKind::Colon => 3isize,
1064 SyntaxKind::Comma => 3isize,
1065 SyntaxKind::Datatype => 3isize,
1066 SyntaxKind::PrefixToken => 3isize,
1067 SyntaxKind::SparqlBaseToken => 3isize,
1068 SyntaxKind::SparqlPrefixToken => 3isize,
1069 SyntaxKind::SqClose => 3isize,
1070 SyntaxKind::Stop => 3isize,
1071 _ => 0,
1072 },
1073 (SyntaxKind::BlankNodePropertyList2, 1usize, _) => match terminal {
1074 SyntaxKind::SqClose => 0,
1075 _ => 2isize,
1076 },
1077 (SyntaxKind::BlankNodePropertyList2, 2usize, _) => match terminal {
1078 SyntaxKind::Alit
1079 | SyntaxKind::Iriref
1080 | SyntaxKind::PnameLn
1081 | SyntaxKind::PnameNs
1082 | SyntaxKind::SqClose => 0,
1083 _ => 1isize,
1084 },
1085 (SyntaxKind::BlankNodePropertyList2, 3usize, _) => match terminal {
1086 SyntaxKind::Alit
1087 | SyntaxKind::Iriref
1088 | SyntaxKind::PnameLn
1089 | SyntaxKind::PnameNs => 0,
1090 _ => 1isize,
1091 },
1092 (SyntaxKind::BlankNodePropertyList2, 4usize, _) => match terminal {
1093 SyntaxKind::SqOpen => 0,
1094 _ => 2isize,
1095 },
1096 (SyntaxKind::Collection, 1usize, _) => match terminal {
1097 SyntaxKind::ClClose => 0,
1098 _ => 2isize,
1099 },
1100 (SyntaxKind::Collection, 2usize, _) => match terminal {
1101 SyntaxKind::BlankNodeLabel
1102 | SyntaxKind::Decimal
1103 | SyntaxKind::Double
1104 | SyntaxKind::FalseLit
1105 | SyntaxKind::Integer
1106 | SyntaxKind::Iriref
1107 | SyntaxKind::PnameLn
1108 | SyntaxKind::PnameNs
1109 | SyntaxKind::StringLiteralLongQuote
1110 | SyntaxKind::StringLiteralLongSingleQuote
1111 | SyntaxKind::StringLiteralQuote
1112 | SyntaxKind::StringLiteralSingleQuote
1113 | SyntaxKind::TrueLit
1114 | SyntaxKind::ClClose
1115 | SyntaxKind::ClOpen
1116 | SyntaxKind::SqOpen => 0,
1117 _ => 1isize,
1118 },
1119 (SyntaxKind::Collection, 3usize, _) => match terminal {
1120 SyntaxKind::BlankNodeLabel
1121 | SyntaxKind::Decimal
1122 | SyntaxKind::Double
1123 | SyntaxKind::FalseLit
1124 | SyntaxKind::Integer
1125 | SyntaxKind::Iriref
1126 | SyntaxKind::PnameLn
1127 | SyntaxKind::PnameNs
1128 | SyntaxKind::StringLiteralLongQuote
1129 | SyntaxKind::StringLiteralLongSingleQuote
1130 | SyntaxKind::StringLiteralQuote
1131 | SyntaxKind::StringLiteralSingleQuote
1132 | SyntaxKind::TrueLit
1133 | SyntaxKind::ClOpen
1134 | SyntaxKind::SqOpen => 0,
1135 _ => 1isize,
1136 },
1137 (SyntaxKind::Collection, 4usize, _) => match terminal {
1138 SyntaxKind::ClOpen => 0,
1139 _ => 2isize,
1140 },
1141 (SyntaxKind::Directive, 1usize, _) => match terminal {
1142 SyntaxKind::Alit => 101isize,
1143 SyntaxKind::BlankNodeLabel => 101isize,
1144 SyntaxKind::Decimal => 101isize,
1145 SyntaxKind::Double => 101isize,
1146 SyntaxKind::FalseLit => 101isize,
1147 SyntaxKind::Integer => 101isize,
1148 SyntaxKind::Iriref => 100isize,
1149 SyntaxKind::Langtag => 101isize,
1150 SyntaxKind::PnameLn => 101isize,
1151 SyntaxKind::PnameNs => 100isize,
1152 SyntaxKind::StringLiteralLongQuote => 101isize,
1153 SyntaxKind::StringLiteralLongSingleQuote => 101isize,
1154 SyntaxKind::StringLiteralQuote => 101isize,
1155 SyntaxKind::StringLiteralSingleQuote => 101isize,
1156 SyntaxKind::TrueLit => 101isize,
1157 SyntaxKind::ClClose => 101isize,
1158 SyntaxKind::ClOpen => 101isize,
1159 SyntaxKind::Colon => 101isize,
1160 SyntaxKind::Comma => 101isize,
1161 SyntaxKind::Datatype => 101isize,
1162 SyntaxKind::SqClose => 101isize,
1163 SyntaxKind::SqOpen => 101isize,
1164 SyntaxKind::Stop => 101isize,
1165 _ => 0,
1166 },
1167 (SyntaxKind::Directive, 2usize, _) => match terminal {
1168 SyntaxKind::Alit => 105isize,
1169 SyntaxKind::BlankNodeLabel => 105isize,
1170 SyntaxKind::Decimal => 105isize,
1171 SyntaxKind::Double => 105isize,
1172 SyntaxKind::FalseLit => 105isize,
1173 SyntaxKind::Integer => 105isize,
1174 SyntaxKind::Iriref => 101isize,
1175 SyntaxKind::Langtag => 105isize,
1176 SyntaxKind::PnameLn => 105isize,
1177 SyntaxKind::PnameNs => 100isize,
1178 SyntaxKind::StringLiteralLongQuote => 105isize,
1179 SyntaxKind::StringLiteralLongSingleQuote => 105isize,
1180 SyntaxKind::StringLiteralQuote => 105isize,
1181 SyntaxKind::StringLiteralSingleQuote => 105isize,
1182 SyntaxKind::TrueLit => 105isize,
1183 SyntaxKind::BaseToken => 105isize,
1184 SyntaxKind::ClClose => 105isize,
1185 SyntaxKind::ClOpen => 105isize,
1186 SyntaxKind::Colon => 105isize,
1187 SyntaxKind::Comma => 105isize,
1188 SyntaxKind::Datatype => 105isize,
1189 SyntaxKind::SparqlBaseToken => 105isize,
1190 SyntaxKind::SparqlPrefixToken => 105isize,
1191 SyntaxKind::SqClose => 105isize,
1192 SyntaxKind::SqOpen => 105isize,
1193 SyntaxKind::Stop => 102isize,
1194 _ => 0,
1195 },
1196 (SyntaxKind::Directive, 3usize, _) => match terminal {
1197 SyntaxKind::Alit => 104isize,
1198 SyntaxKind::BlankNodeLabel => 104isize,
1199 SyntaxKind::Decimal => 104isize,
1200 SyntaxKind::Double => 104isize,
1201 SyntaxKind::FalseLit => 104isize,
1202 SyntaxKind::Integer => 104isize,
1203 SyntaxKind::Iriref => 100isize,
1204 SyntaxKind::Langtag => 104isize,
1205 SyntaxKind::PnameLn => 104isize,
1206 SyntaxKind::PnameNs => 104isize,
1207 SyntaxKind::StringLiteralLongQuote => 104isize,
1208 SyntaxKind::StringLiteralLongSingleQuote => 104isize,
1209 SyntaxKind::StringLiteralQuote => 104isize,
1210 SyntaxKind::StringLiteralSingleQuote => 104isize,
1211 SyntaxKind::TrueLit => 104isize,
1212 SyntaxKind::ClClose => 104isize,
1213 SyntaxKind::ClOpen => 104isize,
1214 SyntaxKind::Colon => 104isize,
1215 SyntaxKind::Comma => 104isize,
1216 SyntaxKind::Datatype => 104isize,
1217 SyntaxKind::PrefixToken => 104isize,
1218 SyntaxKind::SparqlBaseToken => 104isize,
1219 SyntaxKind::SparqlPrefixToken => 104isize,
1220 SyntaxKind::SqClose => 104isize,
1221 SyntaxKind::SqOpen => 104isize,
1222 SyntaxKind::Stop => 101isize,
1223 _ => 0,
1224 },
1225 (SyntaxKind::Directive, 4usize, _) => match terminal {
1226 SyntaxKind::Alit => 102isize,
1227 SyntaxKind::BlankNodeLabel => 102isize,
1228 SyntaxKind::Decimal => 102isize,
1229 SyntaxKind::Double => 102isize,
1230 SyntaxKind::FalseLit => 102isize,
1231 SyntaxKind::Integer => 102isize,
1232 SyntaxKind::Iriref => 101isize,
1233 SyntaxKind::Langtag => 102isize,
1234 SyntaxKind::PnameLn => 102isize,
1235 SyntaxKind::PnameNs => 100isize,
1236 SyntaxKind::StringLiteralLongQuote => 102isize,
1237 SyntaxKind::StringLiteralLongSingleQuote => 102isize,
1238 SyntaxKind::StringLiteralQuote => 102isize,
1239 SyntaxKind::StringLiteralSingleQuote => 102isize,
1240 SyntaxKind::TrueLit => 102isize,
1241 SyntaxKind::BaseToken => 102isize,
1242 SyntaxKind::ClClose => 102isize,
1243 SyntaxKind::ClOpen => 102isize,
1244 SyntaxKind::Colon => 102isize,
1245 SyntaxKind::Comma => 102isize,
1246 SyntaxKind::Datatype => 102isize,
1247 SyntaxKind::PrefixToken => 102isize,
1248 SyntaxKind::SparqlBaseToken => 102isize,
1249 SyntaxKind::SqClose => 102isize,
1250 SyntaxKind::SqOpen => 102isize,
1251 SyntaxKind::Stop => 102isize,
1252 _ => 0,
1253 },
1254 (SyntaxKind::Directive, 5usize, _) => match terminal {
1255 SyntaxKind::Alit => 101isize,
1256 SyntaxKind::BlankNodeLabel => 101isize,
1257 SyntaxKind::Decimal => 101isize,
1258 SyntaxKind::Double => 101isize,
1259 SyntaxKind::FalseLit => 101isize,
1260 SyntaxKind::Integer => 101isize,
1261 SyntaxKind::Iriref => 100isize,
1262 SyntaxKind::Langtag => 101isize,
1263 SyntaxKind::PnameLn => 101isize,
1264 SyntaxKind::PnameNs => 101isize,
1265 SyntaxKind::StringLiteralLongQuote => 101isize,
1266 SyntaxKind::StringLiteralLongSingleQuote => 101isize,
1267 SyntaxKind::StringLiteralQuote => 101isize,
1268 SyntaxKind::StringLiteralSingleQuote => 101isize,
1269 SyntaxKind::TrueLit => 101isize,
1270 SyntaxKind::BaseToken => 101isize,
1271 SyntaxKind::ClClose => 101isize,
1272 SyntaxKind::ClOpen => 101isize,
1273 SyntaxKind::Colon => 101isize,
1274 SyntaxKind::Comma => 101isize,
1275 SyntaxKind::Datatype => 101isize,
1276 SyntaxKind::PrefixToken => 101isize,
1277 SyntaxKind::SparqlPrefixToken => 101isize,
1278 SyntaxKind::SqClose => 101isize,
1279 SyntaxKind::SqOpen => 101isize,
1280 SyntaxKind::Stop => 101isize,
1281 _ => 0,
1282 },
1283 (SyntaxKind::Iri, 1usize, _) => match terminal {
1284 SyntaxKind::Iriref | SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
1285 _ => 1isize,
1286 },
1287 (SyntaxKind::Iri, 2usize, _) => match terminal {
1288 SyntaxKind::Iriref => 0,
1289 _ => 1isize,
1290 },
1291 (SyntaxKind::Iri, 3usize, _) => match terminal {
1292 SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
1293 _ => 1isize,
1294 },
1295 (SyntaxKind::Literal, 1usize, _) => match terminal {
1296 SyntaxKind::Decimal
1297 | SyntaxKind::Double
1298 | SyntaxKind::FalseLit
1299 | SyntaxKind::Integer
1300 | SyntaxKind::StringLiteralLongQuote
1301 | SyntaxKind::StringLiteralLongSingleQuote
1302 | SyntaxKind::StringLiteralQuote
1303 | SyntaxKind::StringLiteralSingleQuote
1304 | SyntaxKind::TrueLit => 0,
1305 _ => 1isize,
1306 },
1307 (SyntaxKind::Literal, 2usize, _) => match terminal {
1308 SyntaxKind::StringLiteralLongQuote
1309 | SyntaxKind::StringLiteralLongSingleQuote
1310 | SyntaxKind::StringLiteralQuote
1311 | SyntaxKind::StringLiteralSingleQuote => 0,
1312 _ => 1isize,
1313 },
1314 (SyntaxKind::Literal, 3usize, _) => match terminal {
1315 SyntaxKind::Decimal | SyntaxKind::Double | SyntaxKind::Integer => 0,
1316 _ => 1isize,
1317 },
1318 (SyntaxKind::Literal, 4usize, _) => match terminal {
1319 SyntaxKind::FalseLit | SyntaxKind::TrueLit => 0,
1320 _ => 1isize,
1321 },
1322 (SyntaxKind::Object, 1usize, _) => match terminal {
1323 SyntaxKind::BlankNodeLabel
1324 | SyntaxKind::Decimal
1325 | SyntaxKind::Double
1326 | SyntaxKind::FalseLit
1327 | SyntaxKind::Integer
1328 | SyntaxKind::Iriref
1329 | SyntaxKind::PnameLn
1330 | SyntaxKind::PnameNs
1331 | SyntaxKind::StringLiteralLongQuote
1332 | SyntaxKind::StringLiteralLongSingleQuote
1333 | SyntaxKind::StringLiteralQuote
1334 | SyntaxKind::StringLiteralSingleQuote
1335 | SyntaxKind::TrueLit
1336 | SyntaxKind::ClOpen
1337 | SyntaxKind::SqOpen => 0,
1338 _ => 1isize,
1339 },
1340 (SyntaxKind::Object, 2usize, _) => match terminal {
1341 SyntaxKind::Iriref | SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
1342 _ => 1isize,
1343 },
1344 (SyntaxKind::Object, 3usize, _) => match terminal {
1345 SyntaxKind::BlankNodeLabel => 0,
1346 _ => 1isize,
1347 },
1348 (SyntaxKind::Object, 4usize, _) => match terminal {
1349 SyntaxKind::SqOpen => 0,
1350 _ => 2isize,
1351 },
1352 (SyntaxKind::Object, 5usize, _) => match terminal {
1353 SyntaxKind::ClOpen => 0,
1354 _ => 2isize,
1355 },
1356 (SyntaxKind::Object, 6usize, _) => match terminal {
1357 SyntaxKind::Decimal
1358 | SyntaxKind::Double
1359 | SyntaxKind::FalseLit
1360 | SyntaxKind::Integer
1361 | SyntaxKind::StringLiteralLongQuote
1362 | SyntaxKind::StringLiteralLongSingleQuote
1363 | SyntaxKind::StringLiteralQuote
1364 | SyntaxKind::StringLiteralSingleQuote
1365 | SyntaxKind::TrueLit => 0,
1366 _ => 1isize,
1367 },
1368 (SyntaxKind::ObjectList, 2usize, _) => match terminal {
1369 SyntaxKind::BlankNodeLabel
1370 | SyntaxKind::Decimal
1371 | SyntaxKind::Double
1372 | SyntaxKind::FalseLit
1373 | SyntaxKind::Integer
1374 | SyntaxKind::Iriref
1375 | SyntaxKind::PnameLn
1376 | SyntaxKind::PnameNs
1377 | SyntaxKind::StringLiteralLongQuote
1378 | SyntaxKind::StringLiteralLongSingleQuote
1379 | SyntaxKind::StringLiteralQuote
1380 | SyntaxKind::StringLiteralSingleQuote
1381 | SyntaxKind::TrueLit
1382 | SyntaxKind::ClOpen
1383 | SyntaxKind::SqOpen => 0,
1384 _ => 1isize,
1385 },
1386 (SyntaxKind::ObjectList, 3usize, _) => match terminal {
1387 SyntaxKind::Alit => 3isize,
1388 SyntaxKind::BlankNodeLabel => 2isize,
1389 SyntaxKind::Decimal => 2isize,
1390 SyntaxKind::Double => 2isize,
1391 SyntaxKind::FalseLit => 2isize,
1392 SyntaxKind::Integer => 2isize,
1393 SyntaxKind::Iriref => 2isize,
1394 SyntaxKind::Langtag => 3isize,
1395 SyntaxKind::PnameLn => 2isize,
1396 SyntaxKind::PnameNs => 2isize,
1397 SyntaxKind::StringLiteralLongQuote => 2isize,
1398 SyntaxKind::StringLiteralLongSingleQuote => 2isize,
1399 SyntaxKind::StringLiteralQuote => 2isize,
1400 SyntaxKind::StringLiteralSingleQuote => 2isize,
1401 SyntaxKind::TrueLit => 2isize,
1402 SyntaxKind::BaseToken => 3isize,
1403 SyntaxKind::ClClose => 3isize,
1404 SyntaxKind::ClOpen => 2isize,
1405 SyntaxKind::Colon => 3isize,
1406 SyntaxKind::Datatype => 3isize,
1407 SyntaxKind::PrefixToken => 3isize,
1408 SyntaxKind::SparqlBaseToken => 3isize,
1409 SyntaxKind::SparqlPrefixToken => 3isize,
1410 SyntaxKind::SqClose => 3isize,
1411 SyntaxKind::SqOpen => 2isize,
1412 SyntaxKind::Stop => 3isize,
1413 _ => 0,
1414 },
1415 (SyntaxKind::ObjectList, 4usize, _) => match terminal {
1416 SyntaxKind::BlankNodeLabel
1417 | SyntaxKind::Decimal
1418 | SyntaxKind::Double
1419 | SyntaxKind::FalseLit
1420 | SyntaxKind::Integer
1421 | SyntaxKind::Iriref
1422 | SyntaxKind::PnameLn
1423 | SyntaxKind::PnameNs
1424 | SyntaxKind::StringLiteralLongQuote
1425 | SyntaxKind::StringLiteralLongSingleQuote
1426 | SyntaxKind::StringLiteralQuote
1427 | SyntaxKind::StringLiteralSingleQuote
1428 | SyntaxKind::TrueLit
1429 | SyntaxKind::ClOpen
1430 | SyntaxKind::SqOpen => 0,
1431 _ => 1isize,
1432 },
1433 (SyntaxKind::Predicate, 1usize, _) => match terminal {
1434 SyntaxKind::Iriref | SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
1435 _ => 1isize,
1436 },
1437 (SyntaxKind::PredicateObjectList, 3usize, _) => match terminal {
1438 SyntaxKind::BlankNodeLabel
1439 | SyntaxKind::Decimal
1440 | SyntaxKind::Double
1441 | SyntaxKind::FalseLit
1442 | SyntaxKind::Integer
1443 | SyntaxKind::Iriref
1444 | SyntaxKind::PnameLn
1445 | SyntaxKind::PnameNs
1446 | SyntaxKind::StringLiteralLongQuote
1447 | SyntaxKind::StringLiteralLongSingleQuote
1448 | SyntaxKind::StringLiteralQuote
1449 | SyntaxKind::StringLiteralSingleQuote
1450 | SyntaxKind::TrueLit
1451 | SyntaxKind::ClOpen
1452 | SyntaxKind::SqOpen => 0,
1453 _ => 1isize,
1454 },
1455 (SyntaxKind::PredicateObjectList, 4usize, _) => match terminal {
1456 SyntaxKind::Alit
1457 | SyntaxKind::Iriref
1458 | SyntaxKind::PnameLn
1459 | SyntaxKind::PnameNs => 0,
1460 _ => 1isize,
1461 },
1462 (SyntaxKind::PredicateObjectList, 5usize, _) => match terminal {
1463 SyntaxKind::Colon => 0,
1464 _ => 2isize,
1465 },
1466 (SyntaxKind::PredicateObjectList, 6usize, _) => match terminal {
1467 SyntaxKind::BlankNodeLabel
1468 | SyntaxKind::Decimal
1469 | SyntaxKind::Double
1470 | SyntaxKind::FalseLit
1471 | SyntaxKind::Integer
1472 | SyntaxKind::Iriref
1473 | SyntaxKind::PnameLn
1474 | SyntaxKind::PnameNs
1475 | SyntaxKind::StringLiteralLongQuote
1476 | SyntaxKind::StringLiteralLongSingleQuote
1477 | SyntaxKind::StringLiteralQuote
1478 | SyntaxKind::StringLiteralSingleQuote
1479 | SyntaxKind::TrueLit
1480 | SyntaxKind::ClOpen
1481 | SyntaxKind::SqOpen => 0,
1482 _ => 1isize,
1483 },
1484 (SyntaxKind::PredicateObjectList, 7usize, _) => match terminal {
1485 SyntaxKind::Alit
1486 | SyntaxKind::Iriref
1487 | SyntaxKind::PnameLn
1488 | SyntaxKind::PnameNs => 0,
1489 _ => 1isize,
1490 },
1491 (SyntaxKind::PrefixId, 1usize, _) => match terminal {
1492 SyntaxKind::Stop => 0,
1493 _ => 3isize,
1494 },
1495 (SyntaxKind::PrefixId, 2usize, _) => match terminal {
1496 SyntaxKind::Alit => 4isize,
1497 SyntaxKind::BlankNodeLabel => 4isize,
1498 SyntaxKind::Decimal => 4isize,
1499 SyntaxKind::Double => 4isize,
1500 SyntaxKind::FalseLit => 4isize,
1501 SyntaxKind::Integer => 4isize,
1502 SyntaxKind::Langtag => 4isize,
1503 SyntaxKind::PnameLn => 4isize,
1504 SyntaxKind::PnameNs => 4isize,
1505 SyntaxKind::StringLiteralLongQuote => 4isize,
1506 SyntaxKind::StringLiteralLongSingleQuote => 4isize,
1507 SyntaxKind::StringLiteralQuote => 4isize,
1508 SyntaxKind::StringLiteralSingleQuote => 4isize,
1509 SyntaxKind::TrueLit => 4isize,
1510 SyntaxKind::BaseToken => 4isize,
1511 SyntaxKind::ClClose => 4isize,
1512 SyntaxKind::ClOpen => 4isize,
1513 SyntaxKind::Colon => 4isize,
1514 SyntaxKind::Comma => 4isize,
1515 SyntaxKind::Datatype => 4isize,
1516 SyntaxKind::PrefixToken => 4isize,
1517 SyntaxKind::SparqlBaseToken => 4isize,
1518 SyntaxKind::SparqlPrefixToken => 4isize,
1519 SyntaxKind::SqClose => 4isize,
1520 SyntaxKind::SqOpen => 4isize,
1521 SyntaxKind::Stop => 1isize,
1522 _ => 0,
1523 },
1524 (SyntaxKind::PrefixId, 3usize, _) => match terminal {
1525 SyntaxKind::Alit => 5isize,
1526 SyntaxKind::BlankNodeLabel => 5isize,
1527 SyntaxKind::Decimal => 5isize,
1528 SyntaxKind::Double => 5isize,
1529 SyntaxKind::FalseLit => 5isize,
1530 SyntaxKind::Integer => 5isize,
1531 SyntaxKind::Iriref => 1isize,
1532 SyntaxKind::Langtag => 5isize,
1533 SyntaxKind::PnameLn => 5isize,
1534 SyntaxKind::StringLiteralLongQuote => 5isize,
1535 SyntaxKind::StringLiteralLongSingleQuote => 5isize,
1536 SyntaxKind::StringLiteralQuote => 5isize,
1537 SyntaxKind::StringLiteralSingleQuote => 5isize,
1538 SyntaxKind::TrueLit => 5isize,
1539 SyntaxKind::BaseToken => 5isize,
1540 SyntaxKind::ClClose => 5isize,
1541 SyntaxKind::ClOpen => 5isize,
1542 SyntaxKind::Colon => 5isize,
1543 SyntaxKind::Comma => 5isize,
1544 SyntaxKind::Datatype => 5isize,
1545 SyntaxKind::PrefixToken => 5isize,
1546 SyntaxKind::SparqlBaseToken => 5isize,
1547 SyntaxKind::SparqlPrefixToken => 5isize,
1548 SyntaxKind::SqClose => 5isize,
1549 SyntaxKind::SqOpen => 5isize,
1550 SyntaxKind::Stop => 2isize,
1551 _ => 0,
1552 },
1553 (SyntaxKind::PrefixId, 4usize, _) => match terminal {
1554 SyntaxKind::Alit => 105isize,
1555 SyntaxKind::BlankNodeLabel => 105isize,
1556 SyntaxKind::Decimal => 105isize,
1557 SyntaxKind::Double => 105isize,
1558 SyntaxKind::FalseLit => 105isize,
1559 SyntaxKind::Integer => 105isize,
1560 SyntaxKind::Iriref => 101isize,
1561 SyntaxKind::Langtag => 105isize,
1562 SyntaxKind::PnameLn => 105isize,
1563 SyntaxKind::PnameNs => 100isize,
1564 SyntaxKind::StringLiteralLongQuote => 105isize,
1565 SyntaxKind::StringLiteralLongSingleQuote => 105isize,
1566 SyntaxKind::StringLiteralQuote => 105isize,
1567 SyntaxKind::StringLiteralSingleQuote => 105isize,
1568 SyntaxKind::TrueLit => 105isize,
1569 SyntaxKind::BaseToken => 105isize,
1570 SyntaxKind::ClClose => 105isize,
1571 SyntaxKind::ClOpen => 105isize,
1572 SyntaxKind::Colon => 105isize,
1573 SyntaxKind::Comma => 105isize,
1574 SyntaxKind::Datatype => 105isize,
1575 SyntaxKind::SparqlBaseToken => 105isize,
1576 SyntaxKind::SparqlPrefixToken => 105isize,
1577 SyntaxKind::SqClose => 105isize,
1578 SyntaxKind::SqOpen => 105isize,
1579 SyntaxKind::Stop => 102isize,
1580 _ => 0,
1581 },
1582 (SyntaxKind::SparqlBase, 1usize, _) => match terminal {
1583 SyntaxKind::Iriref => 0,
1584 _ => 1isize,
1585 },
1586 (SyntaxKind::SparqlBase, 2usize, _) => match terminal {
1587 SyntaxKind::Alit => 101isize,
1588 SyntaxKind::BlankNodeLabel => 101isize,
1589 SyntaxKind::Decimal => 101isize,
1590 SyntaxKind::Double => 101isize,
1591 SyntaxKind::FalseLit => 101isize,
1592 SyntaxKind::Integer => 101isize,
1593 SyntaxKind::Iriref => 100isize,
1594 SyntaxKind::Langtag => 101isize,
1595 SyntaxKind::PnameLn => 101isize,
1596 SyntaxKind::PnameNs => 101isize,
1597 SyntaxKind::StringLiteralLongQuote => 101isize,
1598 SyntaxKind::StringLiteralLongSingleQuote => 101isize,
1599 SyntaxKind::StringLiteralQuote => 101isize,
1600 SyntaxKind::StringLiteralSingleQuote => 101isize,
1601 SyntaxKind::TrueLit => 101isize,
1602 SyntaxKind::BaseToken => 101isize,
1603 SyntaxKind::ClClose => 101isize,
1604 SyntaxKind::ClOpen => 101isize,
1605 SyntaxKind::Colon => 101isize,
1606 SyntaxKind::Comma => 101isize,
1607 SyntaxKind::Datatype => 101isize,
1608 SyntaxKind::PrefixToken => 101isize,
1609 SyntaxKind::SparqlPrefixToken => 101isize,
1610 SyntaxKind::SqClose => 101isize,
1611 SyntaxKind::SqOpen => 101isize,
1612 SyntaxKind::Stop => 101isize,
1613 _ => 0,
1614 },
1615 (SyntaxKind::SparqlPrefix, 1usize, _) => match terminal {
1616 SyntaxKind::Iriref => 0,
1617 _ => 1isize,
1618 },
1619 (SyntaxKind::SparqlPrefix, 2usize, _) => match terminal {
1620 SyntaxKind::Alit => 2isize,
1621 SyntaxKind::BlankNodeLabel => 2isize,
1622 SyntaxKind::Decimal => 2isize,
1623 SyntaxKind::Double => 2isize,
1624 SyntaxKind::FalseLit => 2isize,
1625 SyntaxKind::Integer => 2isize,
1626 SyntaxKind::Iriref => 1isize,
1627 SyntaxKind::Langtag => 2isize,
1628 SyntaxKind::PnameLn => 2isize,
1629 SyntaxKind::StringLiteralLongQuote => 2isize,
1630 SyntaxKind::StringLiteralLongSingleQuote => 2isize,
1631 SyntaxKind::StringLiteralQuote => 2isize,
1632 SyntaxKind::StringLiteralSingleQuote => 2isize,
1633 SyntaxKind::TrueLit => 2isize,
1634 SyntaxKind::BaseToken => 2isize,
1635 SyntaxKind::ClClose => 2isize,
1636 SyntaxKind::ClOpen => 2isize,
1637 SyntaxKind::Colon => 2isize,
1638 SyntaxKind::Comma => 2isize,
1639 SyntaxKind::Datatype => 2isize,
1640 SyntaxKind::PrefixToken => 2isize,
1641 SyntaxKind::SparqlBaseToken => 2isize,
1642 SyntaxKind::SparqlPrefixToken => 2isize,
1643 SyntaxKind::SqClose => 2isize,
1644 SyntaxKind::SqOpen => 2isize,
1645 SyntaxKind::Stop => 2isize,
1646 _ => 0,
1647 },
1648 (SyntaxKind::SparqlPrefix, 3usize, _) => match terminal {
1649 SyntaxKind::Alit => 102isize,
1650 SyntaxKind::BlankNodeLabel => 102isize,
1651 SyntaxKind::Decimal => 102isize,
1652 SyntaxKind::Double => 102isize,
1653 SyntaxKind::FalseLit => 102isize,
1654 SyntaxKind::Integer => 102isize,
1655 SyntaxKind::Iriref => 101isize,
1656 SyntaxKind::Langtag => 102isize,
1657 SyntaxKind::PnameLn => 102isize,
1658 SyntaxKind::PnameNs => 100isize,
1659 SyntaxKind::StringLiteralLongQuote => 102isize,
1660 SyntaxKind::StringLiteralLongSingleQuote => 102isize,
1661 SyntaxKind::StringLiteralQuote => 102isize,
1662 SyntaxKind::StringLiteralSingleQuote => 102isize,
1663 SyntaxKind::TrueLit => 102isize,
1664 SyntaxKind::BaseToken => 102isize,
1665 SyntaxKind::ClClose => 102isize,
1666 SyntaxKind::ClOpen => 102isize,
1667 SyntaxKind::Colon => 102isize,
1668 SyntaxKind::Comma => 102isize,
1669 SyntaxKind::Datatype => 102isize,
1670 SyntaxKind::PrefixToken => 102isize,
1671 SyntaxKind::SparqlBaseToken => 102isize,
1672 SyntaxKind::SqClose => 102isize,
1673 SyntaxKind::SqOpen => 102isize,
1674 SyntaxKind::Stop => 102isize,
1675 _ => 0,
1676 },
1677 (SyntaxKind::Statement, 1usize, _) => match terminal {
1678 SyntaxKind::BlankNodeLabel
1679 | SyntaxKind::Iriref
1680 | SyntaxKind::PnameLn
1681 | SyntaxKind::PnameNs
1682 | SyntaxKind::BaseToken
1683 | SyntaxKind::ClOpen
1684 | SyntaxKind::PrefixToken
1685 | SyntaxKind::SparqlBaseToken
1686 | SyntaxKind::SparqlPrefixToken
1687 | SyntaxKind::SqOpen => 0,
1688 _ => 1isize,
1689 },
1690 (SyntaxKind::Statement, 2usize, _) => match terminal {
1691 SyntaxKind::Alit => 101isize,
1692 SyntaxKind::BlankNodeLabel => 101isize,
1693 SyntaxKind::Decimal => 101isize,
1694 SyntaxKind::Double => 101isize,
1695 SyntaxKind::FalseLit => 101isize,
1696 SyntaxKind::Integer => 101isize,
1697 SyntaxKind::Iriref => 100isize,
1698 SyntaxKind::Langtag => 101isize,
1699 SyntaxKind::PnameLn => 101isize,
1700 SyntaxKind::PnameNs => 100isize,
1701 SyntaxKind::StringLiteralLongQuote => 101isize,
1702 SyntaxKind::StringLiteralLongSingleQuote => 101isize,
1703 SyntaxKind::StringLiteralQuote => 101isize,
1704 SyntaxKind::StringLiteralSingleQuote => 101isize,
1705 SyntaxKind::TrueLit => 101isize,
1706 SyntaxKind::ClClose => 101isize,
1707 SyntaxKind::ClOpen => 101isize,
1708 SyntaxKind::Colon => 101isize,
1709 SyntaxKind::Comma => 101isize,
1710 SyntaxKind::Datatype => 101isize,
1711 SyntaxKind::SqClose => 101isize,
1712 SyntaxKind::SqOpen => 101isize,
1713 SyntaxKind::Stop => 101isize,
1714 _ => 0,
1715 },
1716 (SyntaxKind::Statement, 3usize, _) => match terminal {
1717 SyntaxKind::Stop => 0,
1718 _ => 3isize,
1719 },
1720 (SyntaxKind::Statement, 4usize, _) => match terminal {
1721 SyntaxKind::BlankNodeLabel
1722 | SyntaxKind::Iriref
1723 | SyntaxKind::PnameLn
1724 | SyntaxKind::PnameNs
1725 | SyntaxKind::ClOpen
1726 | SyntaxKind::SqOpen => 0,
1727 _ => 1isize,
1728 },
1729 (SyntaxKind::Subject, 1usize, _) => match terminal {
1730 SyntaxKind::BlankNodeLabel
1731 | SyntaxKind::Iriref
1732 | SyntaxKind::PnameLn
1733 | SyntaxKind::PnameNs
1734 | SyntaxKind::ClOpen
1735 | SyntaxKind::SqOpen => 0,
1736 _ => 1isize,
1737 },
1738 (SyntaxKind::Subject, 2usize, _) => match terminal {
1739 SyntaxKind::Iriref | SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
1740 _ => 1isize,
1741 },
1742 (SyntaxKind::Subject, 3usize, _) => match terminal {
1743 SyntaxKind::BlankNodeLabel | SyntaxKind::SqOpen => 0,
1744 _ => 1isize,
1745 },
1746 (SyntaxKind::Subject, 4usize, _) => match terminal {
1747 SyntaxKind::ClOpen => 0,
1748 _ => 2isize,
1749 },
1750 (SyntaxKind::Triples, 1usize, _) => match terminal {
1751 SyntaxKind::BlankNodeLabel
1752 | SyntaxKind::Iriref
1753 | SyntaxKind::PnameLn
1754 | SyntaxKind::PnameNs
1755 | SyntaxKind::ClOpen
1756 | SyntaxKind::SqOpen => 0,
1757 _ => 1isize,
1758 },
1759 (SyntaxKind::Triples, 3usize, _) => match terminal {
1760 SyntaxKind::Alit
1761 | SyntaxKind::Iriref
1762 | SyntaxKind::PnameLn
1763 | SyntaxKind::PnameNs => 0,
1764 _ => 1isize,
1765 },
1766 (SyntaxKind::Triples, 4usize, _) => match terminal {
1767 SyntaxKind::Alit => 2isize,
1768 SyntaxKind::BlankNodeLabel => 3isize,
1769 SyntaxKind::Decimal => 3isize,
1770 SyntaxKind::Double => 3isize,
1771 SyntaxKind::FalseLit => 3isize,
1772 SyntaxKind::Integer => 3isize,
1773 SyntaxKind::Iriref => 2isize,
1774 SyntaxKind::Langtag => 3isize,
1775 SyntaxKind::PnameLn => 2isize,
1776 SyntaxKind::PnameNs => 2isize,
1777 SyntaxKind::StringLiteralLongQuote => 3isize,
1778 SyntaxKind::StringLiteralLongSingleQuote => 3isize,
1779 SyntaxKind::StringLiteralQuote => 3isize,
1780 SyntaxKind::StringLiteralSingleQuote => 3isize,
1781 SyntaxKind::TrueLit => 3isize,
1782 SyntaxKind::BaseToken => 3isize,
1783 SyntaxKind::ClClose => 3isize,
1784 SyntaxKind::ClOpen => 3isize,
1785 SyntaxKind::Colon => 3isize,
1786 SyntaxKind::Comma => 3isize,
1787 SyntaxKind::Datatype => 3isize,
1788 SyntaxKind::PrefixToken => 3isize,
1789 SyntaxKind::SparqlBaseToken => 3isize,
1790 SyntaxKind::SparqlPrefixToken => 3isize,
1791 SyntaxKind::SqClose => 3isize,
1792 SyntaxKind::Stop => 3isize,
1793 _ => 0,
1794 },
1795 (SyntaxKind::Triples, 5usize, _) => match terminal {
1796 SyntaxKind::Alit
1797 | SyntaxKind::Iriref
1798 | SyntaxKind::PnameLn
1799 | SyntaxKind::PnameNs => 0,
1800 _ => 1isize,
1801 },
1802 (SyntaxKind::Triples, 6usize, _) => match terminal {
1803 SyntaxKind::BlankNodeLabel
1804 | SyntaxKind::Iriref
1805 | SyntaxKind::PnameLn
1806 | SyntaxKind::PnameNs
1807 | SyntaxKind::ClOpen
1808 | SyntaxKind::SqOpen => 0,
1809 _ => 1isize,
1810 },
1811 (SyntaxKind::TurtleDoc, 2usize, _) => match terminal {
1812 SyntaxKind::BlankNodeLabel
1813 | SyntaxKind::Iriref
1814 | SyntaxKind::PnameLn
1815 | SyntaxKind::PnameNs
1816 | SyntaxKind::BaseToken
1817 | SyntaxKind::ClOpen
1818 | SyntaxKind::PrefixToken
1819 | SyntaxKind::SparqlBaseToken
1820 | SyntaxKind::SparqlPrefixToken
1821 | SyntaxKind::SqOpen => 0,
1822 _ => 1isize,
1823 },
1824 (SyntaxKind::Verb, 1usize, _) => match terminal {
1825 SyntaxKind::Alit
1826 | SyntaxKind::Iriref
1827 | SyntaxKind::PnameLn
1828 | SyntaxKind::PnameNs => 0,
1829 _ => 1isize,
1830 },
1831 (SyntaxKind::Verb, 2usize, _) => match terminal {
1832 SyntaxKind::Iriref | SyntaxKind::PnameLn | SyntaxKind::PnameNs => 0,
1833 _ => 1isize,
1834 },
1835 (SyntaxKind::Verb, 3usize, _) => match terminal {
1836 SyntaxKind::Alit => 0,
1837 _ => 1isize,
1838 },
1839 _ => 0,
1840 }
1841 }
1842 impl crate::a_star::ParserTrait for Rule {
1843 type Kind = SyntaxKind;
1844 fn step(
1845 &self,
1846 element: &crate::a_star::Element<Self>,
1847 state: &mut crate::a_star::AStar<Self>,
1848 ) {
1849 match (self.kind, self.state) {
1850 (SyntaxKind::TurtleDoc, 0usize) => {
1851 if let Some(parent) = element.pop() {
1852 state.add_element(parent);
1853 }
1854 }
1855 (SyntaxKind::TurtleDoc, 1usize) => {
1856 state.add_element(element.pop_push(Rule {
1857 kind: self.kind,
1858 state: 2usize,
1859 }));
1860 state.add_element(element.pop_push(Rule {
1861 kind: self.kind,
1862 state: 0usize,
1863 }));
1864 }
1865 (SyntaxKind::TurtleDoc, 2usize) => {
1866 state.add_element_checked(
1867 element
1868 .pop_push(Rule {
1869 kind: self.kind,
1870 state: 1usize,
1871 })
1872 .push(Rule {
1873 kind: SyntaxKind::Statement,
1874 state: 1usize,
1875 }),
1876 SyntaxKind::Statement,
1877 );
1878 }
1879 (SyntaxKind::Statement, 0usize) => {
1880 if let Some(parent) = element.pop() {
1881 state.add_element(parent);
1882 }
1883 }
1884 (SyntaxKind::Statement, 1usize) => {
1885 state.add_element(element.pop_push(Rule {
1886 kind: self.kind,
1887 state: 2usize,
1888 }));
1889 state.add_element(element.pop_push(Rule {
1890 kind: self.kind,
1891 state: 4usize,
1892 }));
1893 }
1894 (SyntaxKind::Statement, 2usize) => {
1895 state.add_element_checked(
1896 element
1897 .pop_push(Rule {
1898 kind: self.kind,
1899 state: 0usize,
1900 })
1901 .push(Rule {
1902 kind: SyntaxKind::Directive,
1903 state: 1usize,
1904 }),
1905 SyntaxKind::Directive,
1906 );
1907 }
1908 (SyntaxKind::Statement, 3usize) => {
1909 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Stop);
1910 state.add_element(matched.pop_push(Rule {
1911 kind: self.kind,
1912 state: 0usize,
1913 }));
1914 if let Some(fb) = fb {
1915 state.add_element(fb.pop_push(Rule {
1916 kind: self.kind,
1917 state: 0usize,
1918 }));
1919 }
1920 }
1921 (SyntaxKind::Statement, 4usize) => {
1922 state.add_element_checked(
1923 element
1924 .pop_push(Rule {
1925 kind: self.kind,
1926 state: 3usize,
1927 })
1928 .push(Rule {
1929 kind: SyntaxKind::Triples,
1930 state: 1usize,
1931 }),
1932 SyntaxKind::Triples,
1933 );
1934 }
1935 (SyntaxKind::Directive, 0usize) => {
1936 if let Some(parent) = element.pop() {
1937 state.add_element(parent);
1938 }
1939 }
1940 (SyntaxKind::Directive, 1usize) => {
1941 state.add_element(element.pop_push(Rule {
1942 kind: self.kind,
1943 state: 2usize,
1944 }));
1945 state.add_element(element.pop_push(Rule {
1946 kind: self.kind,
1947 state: 3usize,
1948 }));
1949 state.add_element(element.pop_push(Rule {
1950 kind: self.kind,
1951 state: 4usize,
1952 }));
1953 state.add_element(element.pop_push(Rule {
1954 kind: self.kind,
1955 state: 5usize,
1956 }));
1957 }
1958 (SyntaxKind::Directive, 2usize) => {
1959 state.add_element_checked(
1960 element
1961 .pop_push(Rule {
1962 kind: self.kind,
1963 state: 0usize,
1964 })
1965 .push(Rule {
1966 kind: SyntaxKind::PrefixId,
1967 state: 4usize,
1968 }),
1969 SyntaxKind::PrefixId,
1970 );
1971 }
1972 (SyntaxKind::Directive, 3usize) => {
1973 state.add_element_checked(
1974 element
1975 .pop_push(Rule {
1976 kind: self.kind,
1977 state: 0usize,
1978 })
1979 .push(Rule {
1980 kind: SyntaxKind::Base,
1981 state: 3usize,
1982 }),
1983 SyntaxKind::Base,
1984 );
1985 }
1986 (SyntaxKind::Directive, 4usize) => {
1987 state.add_element_checked(
1988 element
1989 .pop_push(Rule {
1990 kind: self.kind,
1991 state: 0usize,
1992 })
1993 .push(Rule {
1994 kind: SyntaxKind::SparqlPrefix,
1995 state: 3usize,
1996 }),
1997 SyntaxKind::SparqlPrefix,
1998 );
1999 }
2000 (SyntaxKind::Directive, 5usize) => {
2001 state.add_element_checked(
2002 element
2003 .pop_push(Rule {
2004 kind: self.kind,
2005 state: 0usize,
2006 })
2007 .push(Rule {
2008 kind: SyntaxKind::SparqlBase,
2009 state: 2usize,
2010 }),
2011 SyntaxKind::SparqlBase,
2012 );
2013 }
2014 (SyntaxKind::PrefixId, 0usize) => {
2015 if let Some(parent) = element.pop() {
2016 state.add_element(parent);
2017 }
2018 }
2019 (SyntaxKind::PrefixId, 1usize) => {
2020 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Stop);
2021 state.add_element(matched.pop_push(Rule {
2022 kind: self.kind,
2023 state: 0usize,
2024 }));
2025 if let Some(fb) = fb {
2026 state.add_element(fb.pop_push(Rule {
2027 kind: self.kind,
2028 state: 0usize,
2029 }));
2030 }
2031 }
2032 (SyntaxKind::PrefixId, 2usize) => {
2033 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Iriref);
2034 state.add_element(matched.pop_push(Rule {
2035 kind: self.kind,
2036 state: 1usize,
2037 }));
2038 if let Some(fb) = fb {
2039 state.add_element(fb.pop_push(Rule {
2040 kind: self.kind,
2041 state: 1usize,
2042 }));
2043 }
2044 }
2045 (SyntaxKind::PrefixId, 3usize) => {
2046 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::PnameNs);
2047 state.add_element(matched.pop_push(Rule {
2048 kind: self.kind,
2049 state: 2usize,
2050 }));
2051 if let Some(fb) = fb {
2052 state.add_element(fb.pop_push(Rule {
2053 kind: self.kind,
2054 state: 2usize,
2055 }));
2056 }
2057 }
2058 (SyntaxKind::PrefixId, 4usize) => {
2059 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::PrefixToken);
2060 state.add_element(matched.pop_push(Rule {
2061 kind: self.kind,
2062 state: 3usize,
2063 }));
2064 if let Some(fb) = fb {
2065 state.add_element(fb.pop_push(Rule {
2066 kind: self.kind,
2067 state: 3usize,
2068 }));
2069 }
2070 }
2071 (SyntaxKind::Base, 0usize) => {
2072 if let Some(parent) = element.pop() {
2073 state.add_element(parent);
2074 }
2075 }
2076 (SyntaxKind::Base, 1usize) => {
2077 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Stop);
2078 state.add_element(matched.pop_push(Rule {
2079 kind: self.kind,
2080 state: 0usize,
2081 }));
2082 if let Some(fb) = fb {
2083 state.add_element(fb.pop_push(Rule {
2084 kind: self.kind,
2085 state: 0usize,
2086 }));
2087 }
2088 }
2089 (SyntaxKind::Base, 2usize) => {
2090 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Iriref);
2091 state.add_element(matched.pop_push(Rule {
2092 kind: self.kind,
2093 state: 1usize,
2094 }));
2095 if let Some(fb) = fb {
2096 state.add_element(fb.pop_push(Rule {
2097 kind: self.kind,
2098 state: 1usize,
2099 }));
2100 }
2101 }
2102 (SyntaxKind::Base, 3usize) => {
2103 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::BaseToken);
2104 state.add_element(matched.pop_push(Rule {
2105 kind: self.kind,
2106 state: 2usize,
2107 }));
2108 if let Some(fb) = fb {
2109 state.add_element(fb.pop_push(Rule {
2110 kind: self.kind,
2111 state: 2usize,
2112 }));
2113 }
2114 }
2115 (SyntaxKind::SparqlBase, 0usize) => {
2116 if let Some(parent) = element.pop() {
2117 state.add_element(parent);
2118 }
2119 }
2120 (SyntaxKind::SparqlBase, 1usize) => {
2121 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Iriref);
2122 state.add_element(matched.pop_push(Rule {
2123 kind: self.kind,
2124 state: 0usize,
2125 }));
2126 if let Some(fb) = fb {
2127 state.add_element(fb.pop_push(Rule {
2128 kind: self.kind,
2129 state: 0usize,
2130 }));
2131 }
2132 }
2133 (SyntaxKind::SparqlBase, 2usize) => {
2134 let (matched, fb) =
2135 state.expect_as_inline(element, SyntaxKind::SparqlBaseToken);
2136 state.add_element(matched.pop_push(Rule {
2137 kind: self.kind,
2138 state: 1usize,
2139 }));
2140 if let Some(fb) = fb {
2141 state.add_element(fb.pop_push(Rule {
2142 kind: self.kind,
2143 state: 1usize,
2144 }));
2145 }
2146 }
2147 (SyntaxKind::SparqlPrefix, 0usize) => {
2148 if let Some(parent) = element.pop() {
2149 state.add_element(parent);
2150 }
2151 }
2152 (SyntaxKind::SparqlPrefix, 1usize) => {
2153 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Iriref);
2154 state.add_element(matched.pop_push(Rule {
2155 kind: self.kind,
2156 state: 0usize,
2157 }));
2158 if let Some(fb) = fb {
2159 state.add_element(fb.pop_push(Rule {
2160 kind: self.kind,
2161 state: 0usize,
2162 }));
2163 }
2164 }
2165 (SyntaxKind::SparqlPrefix, 2usize) => {
2166 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::PnameNs);
2167 state.add_element(matched.pop_push(Rule {
2168 kind: self.kind,
2169 state: 1usize,
2170 }));
2171 if let Some(fb) = fb {
2172 state.add_element(fb.pop_push(Rule {
2173 kind: self.kind,
2174 state: 1usize,
2175 }));
2176 }
2177 }
2178 (SyntaxKind::SparqlPrefix, 3usize) => {
2179 let (matched, fb) =
2180 state.expect_as_inline(element, SyntaxKind::SparqlPrefixToken);
2181 state.add_element(matched.pop_push(Rule {
2182 kind: self.kind,
2183 state: 2usize,
2184 }));
2185 if let Some(fb) = fb {
2186 state.add_element(fb.pop_push(Rule {
2187 kind: self.kind,
2188 state: 2usize,
2189 }));
2190 }
2191 }
2192 (SyntaxKind::Triples, 0usize) => {
2193 if let Some(parent) = element.pop() {
2194 state.add_element(parent);
2195 }
2196 }
2197 (SyntaxKind::Triples, 1usize) => {
2198 state.add_element(element.pop_push(Rule {
2199 kind: self.kind,
2200 state: 4usize,
2201 }));
2202 state.add_element(element.pop_push(Rule {
2203 kind: self.kind,
2204 state: 6usize,
2205 }));
2206 }
2207 (SyntaxKind::Triples, 2usize) => {
2208 state.add_element(element.pop_push(Rule {
2209 kind: self.kind,
2210 state: 0usize,
2211 }));
2212 state.add_element(element.pop_push(Rule {
2213 kind: self.kind,
2214 state: 3usize,
2215 }));
2216 }
2217 (SyntaxKind::Triples, 3usize) => {
2218 state.add_element_checked(
2219 element
2220 .pop_push(Rule {
2221 kind: self.kind,
2222 state: 0usize,
2223 })
2224 .push(Rule {
2225 kind: SyntaxKind::PredicateObjectList,
2226 state: 7usize,
2227 }),
2228 SyntaxKind::PredicateObjectList,
2229 );
2230 }
2231 (SyntaxKind::Triples, 4usize) => {
2232 state.add_element_checked(
2233 element
2234 .pop_push(Rule {
2235 kind: self.kind,
2236 state: 2usize,
2237 })
2238 .push(Rule {
2239 kind: SyntaxKind::BlankNodePropertyList,
2240 state: 3usize,
2241 }),
2242 SyntaxKind::BlankNodePropertyList,
2243 );
2244 }
2245 (SyntaxKind::Triples, 5usize) => {
2246 state.add_element(element.pop_push(Rule {
2247 kind: self.kind,
2248 state: 3usize,
2249 }));
2250 }
2251 (SyntaxKind::Triples, 6usize) => {
2252 state.add_element_checked(
2253 element
2254 .pop_push(Rule {
2255 kind: self.kind,
2256 state: 5usize,
2257 })
2258 .push(Rule {
2259 kind: SyntaxKind::Subject,
2260 state: 1usize,
2261 }),
2262 SyntaxKind::Subject,
2263 );
2264 }
2265 (SyntaxKind::PredicateObjectList, 0usize) => {
2266 if let Some(parent) = element.pop() {
2267 state.add_element(parent);
2268 }
2269 }
2270 (SyntaxKind::PredicateObjectList, 1usize) => {
2271 state.add_element(element.pop_push(Rule {
2272 kind: self.kind,
2273 state: 5usize,
2274 }));
2275 state.add_element(element.pop_push(Rule {
2276 kind: self.kind,
2277 state: 0usize,
2278 }));
2279 }
2280 (SyntaxKind::PredicateObjectList, 2usize) => {
2281 state.add_element(element.pop_push(Rule {
2282 kind: self.kind,
2283 state: 1usize,
2284 }));
2285 state.add_element(element.pop_push(Rule {
2286 kind: self.kind,
2287 state: 4usize,
2288 }));
2289 }
2290 (SyntaxKind::PredicateObjectList, 3usize) => {
2291 state.add_element_checked(
2292 element
2293 .pop_push(Rule {
2294 kind: self.kind,
2295 state: 1usize,
2296 })
2297 .push(Rule {
2298 kind: SyntaxKind::ObjectList,
2299 state: 4usize,
2300 }),
2301 SyntaxKind::ObjectList,
2302 );
2303 }
2304 (SyntaxKind::PredicateObjectList, 4usize) => {
2305 state.add_element_checked(
2306 element
2307 .pop_push(Rule {
2308 kind: self.kind,
2309 state: 3usize,
2310 })
2311 .push(Rule {
2312 kind: SyntaxKind::Verb,
2313 state: 1usize,
2314 }),
2315 SyntaxKind::Verb,
2316 );
2317 }
2318 (SyntaxKind::PredicateObjectList, 5usize) => {
2319 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Colon);
2320 state.add_element(matched.pop_push(Rule {
2321 kind: self.kind,
2322 state: 2usize,
2323 }));
2324 if let Some(fb) = fb {
2325 state.add_element(fb.pop_push(Rule {
2326 kind: self.kind,
2327 state: 2usize,
2328 }));
2329 }
2330 }
2331 (SyntaxKind::PredicateObjectList, 6usize) => {
2332 state.add_element(element.pop_push(Rule {
2333 kind: self.kind,
2334 state: 3usize,
2335 }));
2336 }
2337 (SyntaxKind::PredicateObjectList, 7usize) => {
2338 state.add_element_checked(
2339 element
2340 .pop_push(Rule {
2341 kind: self.kind,
2342 state: 6usize,
2343 })
2344 .push(Rule {
2345 kind: SyntaxKind::Verb,
2346 state: 1usize,
2347 }),
2348 SyntaxKind::Verb,
2349 );
2350 }
2351 (SyntaxKind::ObjectList, 0usize) => {
2352 if let Some(parent) = element.pop() {
2353 state.add_element(parent);
2354 }
2355 }
2356 (SyntaxKind::ObjectList, 1usize) => {
2357 state.add_element(element.pop_push(Rule {
2358 kind: self.kind,
2359 state: 3usize,
2360 }));
2361 state.add_element(element.pop_push(Rule {
2362 kind: self.kind,
2363 state: 0usize,
2364 }));
2365 }
2366 (SyntaxKind::ObjectList, 2usize) => {
2367 state.add_element_checked(
2368 element
2369 .pop_push(Rule {
2370 kind: self.kind,
2371 state: 1usize,
2372 })
2373 .push(Rule {
2374 kind: SyntaxKind::Object,
2375 state: 1usize,
2376 }),
2377 SyntaxKind::Object,
2378 );
2379 }
2380 (SyntaxKind::ObjectList, 3usize) => {
2381 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Comma);
2382 state.add_element(matched.pop_push(Rule {
2383 kind: self.kind,
2384 state: 2usize,
2385 }));
2386 if let Some(fb) = fb {
2387 state.add_element(fb.pop_push(Rule {
2388 kind: self.kind,
2389 state: 2usize,
2390 }));
2391 }
2392 }
2393 (SyntaxKind::ObjectList, 4usize) => {
2394 state.add_element(element.pop_push(Rule {
2395 kind: self.kind,
2396 state: 2usize,
2397 }));
2398 }
2399 (SyntaxKind::Verb, 0usize) => {
2400 if let Some(parent) = element.pop() {
2401 state.add_element(parent);
2402 }
2403 }
2404 (SyntaxKind::Verb, 1usize) => {
2405 state.add_element(element.pop_push(Rule {
2406 kind: self.kind,
2407 state: 2usize,
2408 }));
2409 state.add_element_checked(
2410 element.pop_push(Rule {
2411 kind: self.kind,
2412 state: 3usize,
2413 }),
2414 SyntaxKind::Alit,
2415 );
2416 }
2417 (SyntaxKind::Verb, 2usize) => {
2418 state.add_element_checked(
2419 element
2420 .pop_push(Rule {
2421 kind: self.kind,
2422 state: 0usize,
2423 })
2424 .push(Rule {
2425 kind: SyntaxKind::Predicate,
2426 state: 1usize,
2427 }),
2428 SyntaxKind::Predicate,
2429 );
2430 }
2431 (SyntaxKind::Verb, 3usize) => {
2432 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Alit);
2433 state.add_element(matched.pop_push(Rule {
2434 kind: self.kind,
2435 state: 0usize,
2436 }));
2437 if let Some(fb) = fb {
2438 state.add_element(fb.pop_push(Rule {
2439 kind: self.kind,
2440 state: 0usize,
2441 }));
2442 }
2443 }
2444 (SyntaxKind::Subject, 0usize) => {
2445 if let Some(parent) = element.pop() {
2446 state.add_element(parent);
2447 }
2448 }
2449 (SyntaxKind::Subject, 1usize) => {
2450 state.add_element(element.pop_push(Rule {
2451 kind: self.kind,
2452 state: 2usize,
2453 }));
2454 state.add_element(element.pop_push(Rule {
2455 kind: self.kind,
2456 state: 3usize,
2457 }));
2458 state.add_element(element.pop_push(Rule {
2459 kind: self.kind,
2460 state: 4usize,
2461 }));
2462 }
2463 (SyntaxKind::Subject, 2usize) => {
2464 state.add_element_checked(
2465 element
2466 .pop_push(Rule {
2467 kind: self.kind,
2468 state: 0usize,
2469 })
2470 .push(Rule {
2471 kind: SyntaxKind::Iri,
2472 state: 1usize,
2473 }),
2474 SyntaxKind::Iri,
2475 );
2476 }
2477 (SyntaxKind::Subject, 3usize) => {
2478 state.add_element_checked(
2479 element
2480 .pop_push(Rule {
2481 kind: self.kind,
2482 state: 0usize,
2483 })
2484 .push(Rule {
2485 kind: SyntaxKind::BlankNode,
2486 state: 1usize,
2487 }),
2488 SyntaxKind::BlankNode,
2489 );
2490 }
2491 (SyntaxKind::Subject, 4usize) => {
2492 state.add_element_checked(
2493 element
2494 .pop_push(Rule {
2495 kind: self.kind,
2496 state: 0usize,
2497 })
2498 .push(Rule {
2499 kind: SyntaxKind::Collection,
2500 state: 4usize,
2501 }),
2502 SyntaxKind::Collection,
2503 );
2504 }
2505 (SyntaxKind::Predicate, 0usize) => {
2506 if let Some(parent) = element.pop() {
2507 state.add_element(parent);
2508 }
2509 }
2510 (SyntaxKind::Predicate, 1usize) => {
2511 state.add_element_checked(
2512 element
2513 .pop_push(Rule {
2514 kind: self.kind,
2515 state: 0usize,
2516 })
2517 .push(Rule {
2518 kind: SyntaxKind::Iri,
2519 state: 1usize,
2520 }),
2521 SyntaxKind::Iri,
2522 );
2523 }
2524 (SyntaxKind::Object, 0usize) => {
2525 if let Some(parent) = element.pop() {
2526 state.add_element(parent);
2527 }
2528 }
2529 (SyntaxKind::Object, 1usize) => {
2530 state.add_element(element.pop_push(Rule {
2531 kind: self.kind,
2532 state: 2usize,
2533 }));
2534 state.add_element_checked(
2535 element.pop_push(Rule {
2536 kind: self.kind,
2537 state: 3usize,
2538 }),
2539 SyntaxKind::BlankNodeLabel,
2540 );
2541 state.add_element(element.pop_push(Rule {
2542 kind: self.kind,
2543 state: 4usize,
2544 }));
2545 state.add_element(element.pop_push(Rule {
2546 kind: self.kind,
2547 state: 5usize,
2548 }));
2549 state.add_element(element.pop_push(Rule {
2550 kind: self.kind,
2551 state: 6usize,
2552 }));
2553 }
2554 (SyntaxKind::Object, 2usize) => {
2555 state.add_element_checked(
2556 element
2557 .pop_push(Rule {
2558 kind: self.kind,
2559 state: 0usize,
2560 })
2561 .push(Rule {
2562 kind: SyntaxKind::Iri,
2563 state: 1usize,
2564 }),
2565 SyntaxKind::Iri,
2566 );
2567 }
2568 (SyntaxKind::Object, 3usize) => {
2569 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::BlankNodeLabel);
2570 state.add_element(matched.pop_push(Rule {
2571 kind: self.kind,
2572 state: 0usize,
2573 }));
2574 if let Some(fb) = fb {
2575 state.add_element(fb.pop_push(Rule {
2576 kind: self.kind,
2577 state: 0usize,
2578 }));
2579 }
2580 }
2581 (SyntaxKind::Object, 4usize) => {
2582 state.add_element_checked(
2583 element
2584 .pop_push(Rule {
2585 kind: self.kind,
2586 state: 0usize,
2587 })
2588 .push(Rule {
2589 kind: SyntaxKind::BlankNodePropertyList2,
2590 state: 4usize,
2591 }),
2592 SyntaxKind::BlankNodePropertyList2,
2593 );
2594 }
2595 (SyntaxKind::Object, 5usize) => {
2596 state.add_element_checked(
2597 element
2598 .pop_push(Rule {
2599 kind: self.kind,
2600 state: 0usize,
2601 })
2602 .push(Rule {
2603 kind: SyntaxKind::Collection,
2604 state: 4usize,
2605 }),
2606 SyntaxKind::Collection,
2607 );
2608 }
2609 (SyntaxKind::Object, 6usize) => {
2610 state.add_element_checked(
2611 element
2612 .pop_push(Rule {
2613 kind: self.kind,
2614 state: 0usize,
2615 })
2616 .push(Rule {
2617 kind: SyntaxKind::Literal,
2618 state: 1usize,
2619 }),
2620 SyntaxKind::Literal,
2621 );
2622 }
2623 (SyntaxKind::Literal, 0usize) => {
2624 if let Some(parent) = element.pop() {
2625 state.add_element(parent);
2626 }
2627 }
2628 (SyntaxKind::Literal, 1usize) => {
2629 state.add_element(element.pop_push(Rule {
2630 kind: self.kind,
2631 state: 2usize,
2632 }));
2633 state.add_element(element.pop_push(Rule {
2634 kind: self.kind,
2635 state: 3usize,
2636 }));
2637 state.add_element(element.pop_push(Rule {
2638 kind: self.kind,
2639 state: 4usize,
2640 }));
2641 }
2642 (SyntaxKind::Literal, 2usize) => {
2643 state.add_element_checked(
2644 element
2645 .pop_push(Rule {
2646 kind: self.kind,
2647 state: 0usize,
2648 })
2649 .push(Rule {
2650 kind: SyntaxKind::Rdfliteral,
2651 state: 6usize,
2652 }),
2653 SyntaxKind::Rdfliteral,
2654 );
2655 }
2656 (SyntaxKind::Literal, 3usize) => {
2657 state.add_element_checked(
2658 element
2659 .pop_push(Rule {
2660 kind: self.kind,
2661 state: 0usize,
2662 })
2663 .push(Rule {
2664 kind: SyntaxKind::NumericLiteral,
2665 state: 1usize,
2666 }),
2667 SyntaxKind::NumericLiteral,
2668 );
2669 }
2670 (SyntaxKind::Literal, 4usize) => {
2671 state.add_element_checked(
2672 element
2673 .pop_push(Rule {
2674 kind: self.kind,
2675 state: 0usize,
2676 })
2677 .push(Rule {
2678 kind: SyntaxKind::BooleanLiteral,
2679 state: 1usize,
2680 }),
2681 SyntaxKind::BooleanLiteral,
2682 );
2683 }
2684 (SyntaxKind::BlankNodePropertyList2, 0usize) => {
2685 if let Some(parent) = element.pop() {
2686 state.add_element(parent);
2687 }
2688 }
2689 (SyntaxKind::BlankNodePropertyList2, 1usize) => {
2690 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::SqClose);
2691 state.add_element(matched.pop_push(Rule {
2692 kind: self.kind,
2693 state: 0usize,
2694 }));
2695 if let Some(fb) = fb {
2696 state.add_element(fb.pop_push(Rule {
2697 kind: self.kind,
2698 state: 0usize,
2699 }));
2700 }
2701 }
2702 (SyntaxKind::BlankNodePropertyList2, 2usize) => {
2703 state.add_element(element.pop_push(Rule {
2704 kind: self.kind,
2705 state: 1usize,
2706 }));
2707 state.add_element(element.pop_push(Rule {
2708 kind: self.kind,
2709 state: 3usize,
2710 }));
2711 }
2712 (SyntaxKind::BlankNodePropertyList2, 3usize) => {
2713 state.add_element_checked(
2714 element
2715 .pop_push(Rule {
2716 kind: self.kind,
2717 state: 1usize,
2718 })
2719 .push(Rule {
2720 kind: SyntaxKind::PredicateObjectList,
2721 state: 7usize,
2722 }),
2723 SyntaxKind::PredicateObjectList,
2724 );
2725 }
2726 (SyntaxKind::BlankNodePropertyList2, 4usize) => {
2727 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::SqOpen);
2728 state.add_element(matched.pop_push(Rule {
2729 kind: self.kind,
2730 state: 2usize,
2731 }));
2732 if let Some(fb) = fb {
2733 state.add_element(fb.pop_push(Rule {
2734 kind: self.kind,
2735 state: 2usize,
2736 }));
2737 }
2738 }
2739 (SyntaxKind::BlankNodePropertyList, 0usize) => {
2740 if let Some(parent) = element.pop() {
2741 state.add_element(parent);
2742 }
2743 }
2744 (SyntaxKind::BlankNodePropertyList, 1usize) => {
2745 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::SqClose);
2746 state.add_element(matched.pop_push(Rule {
2747 kind: self.kind,
2748 state: 0usize,
2749 }));
2750 if let Some(fb) = fb {
2751 state.add_element(fb.pop_push(Rule {
2752 kind: self.kind,
2753 state: 0usize,
2754 }));
2755 }
2756 }
2757 (SyntaxKind::BlankNodePropertyList, 2usize) => {
2758 state.add_element_checked(
2759 element
2760 .pop_push(Rule {
2761 kind: self.kind,
2762 state: 1usize,
2763 })
2764 .push(Rule {
2765 kind: SyntaxKind::PredicateObjectList,
2766 state: 7usize,
2767 }),
2768 SyntaxKind::PredicateObjectList,
2769 );
2770 }
2771 (SyntaxKind::BlankNodePropertyList, 3usize) => {
2772 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::SqOpen);
2773 state.add_element(matched.pop_push(Rule {
2774 kind: self.kind,
2775 state: 2usize,
2776 }));
2777 if let Some(fb) = fb {
2778 state.add_element(fb.pop_push(Rule {
2779 kind: self.kind,
2780 state: 2usize,
2781 }));
2782 }
2783 }
2784 (SyntaxKind::Collection, 0usize) => {
2785 if let Some(parent) = element.pop() {
2786 state.add_element(parent);
2787 }
2788 }
2789 (SyntaxKind::Collection, 1usize) => {
2790 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::ClClose);
2791 state.add_element(matched.pop_push(Rule {
2792 kind: self.kind,
2793 state: 0usize,
2794 }));
2795 if let Some(fb) = fb {
2796 state.add_element(fb.pop_push(Rule {
2797 kind: self.kind,
2798 state: 0usize,
2799 }));
2800 }
2801 }
2802 (SyntaxKind::Collection, 2usize) => {
2803 state.add_element(element.pop_push(Rule {
2804 kind: self.kind,
2805 state: 3usize,
2806 }));
2807 state.add_element(element.pop_push(Rule {
2808 kind: self.kind,
2809 state: 1usize,
2810 }));
2811 }
2812 (SyntaxKind::Collection, 3usize) => {
2813 state.add_element_checked(
2814 element
2815 .pop_push(Rule {
2816 kind: self.kind,
2817 state: 2usize,
2818 })
2819 .push(Rule {
2820 kind: SyntaxKind::Object,
2821 state: 1usize,
2822 }),
2823 SyntaxKind::Object,
2824 );
2825 }
2826 (SyntaxKind::Collection, 4usize) => {
2827 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::ClOpen);
2828 state.add_element(matched.pop_push(Rule {
2829 kind: self.kind,
2830 state: 2usize,
2831 }));
2832 if let Some(fb) = fb {
2833 state.add_element(fb.pop_push(Rule {
2834 kind: self.kind,
2835 state: 2usize,
2836 }));
2837 }
2838 }
2839 (SyntaxKind::NumericLiteral, 0usize) => {
2840 if let Some(parent) = element.pop() {
2841 state.add_element(parent);
2842 }
2843 }
2844 (SyntaxKind::NumericLiteral, 1usize) => {
2845 state.add_element_checked(
2846 element.pop_push(Rule {
2847 kind: self.kind,
2848 state: 2usize,
2849 }),
2850 SyntaxKind::Integer,
2851 );
2852 state.add_element_checked(
2853 element.pop_push(Rule {
2854 kind: self.kind,
2855 state: 3usize,
2856 }),
2857 SyntaxKind::Decimal,
2858 );
2859 state.add_element_checked(
2860 element.pop_push(Rule {
2861 kind: self.kind,
2862 state: 4usize,
2863 }),
2864 SyntaxKind::Double,
2865 );
2866 }
2867 (SyntaxKind::NumericLiteral, 2usize) => {
2868 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Integer);
2869 state.add_element(matched.pop_push(Rule {
2870 kind: self.kind,
2871 state: 0usize,
2872 }));
2873 if let Some(fb) = fb {
2874 state.add_element(fb.pop_push(Rule {
2875 kind: self.kind,
2876 state: 0usize,
2877 }));
2878 }
2879 }
2880 (SyntaxKind::NumericLiteral, 3usize) => {
2881 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Decimal);
2882 state.add_element(matched.pop_push(Rule {
2883 kind: self.kind,
2884 state: 0usize,
2885 }));
2886 if let Some(fb) = fb {
2887 state.add_element(fb.pop_push(Rule {
2888 kind: self.kind,
2889 state: 0usize,
2890 }));
2891 }
2892 }
2893 (SyntaxKind::NumericLiteral, 4usize) => {
2894 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Double);
2895 state.add_element(matched.pop_push(Rule {
2896 kind: self.kind,
2897 state: 0usize,
2898 }));
2899 if let Some(fb) = fb {
2900 state.add_element(fb.pop_push(Rule {
2901 kind: self.kind,
2902 state: 0usize,
2903 }));
2904 }
2905 }
2906 (SyntaxKind::Rdfliteral, 0usize) => {
2907 if let Some(parent) = element.pop() {
2908 state.add_element(parent);
2909 }
2910 }
2911 (SyntaxKind::Rdfliteral, 1usize) => {
2912 state.add_element(element.pop_push(Rule {
2913 kind: self.kind,
2914 state: 0usize,
2915 }));
2916 state.add_element(element.pop_push(Rule {
2917 kind: self.kind,
2918 state: 2usize,
2919 }));
2920 }
2921 (SyntaxKind::Rdfliteral, 2usize) => {
2922 state.add_element_checked(
2923 element.pop_push(Rule {
2924 kind: self.kind,
2925 state: 3usize,
2926 }),
2927 SyntaxKind::Langtag,
2928 );
2929 state.add_element(element.pop_push(Rule {
2930 kind: self.kind,
2931 state: 5usize,
2932 }));
2933 }
2934 (SyntaxKind::Rdfliteral, 3usize) => {
2935 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Langtag);
2936 state.add_element(matched.pop_push(Rule {
2937 kind: self.kind,
2938 state: 0usize,
2939 }));
2940 if let Some(fb) = fb {
2941 state.add_element(fb.pop_push(Rule {
2942 kind: self.kind,
2943 state: 0usize,
2944 }));
2945 }
2946 }
2947 (SyntaxKind::Rdfliteral, 4usize) => {
2948 state.add_element_checked(
2949 element
2950 .pop_push(Rule {
2951 kind: self.kind,
2952 state: 0usize,
2953 })
2954 .push(Rule {
2955 kind: SyntaxKind::Iri,
2956 state: 1usize,
2957 }),
2958 SyntaxKind::Iri,
2959 );
2960 }
2961 (SyntaxKind::Rdfliteral, 5usize) => {
2962 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Datatype);
2963 state.add_element(matched.pop_push(Rule {
2964 kind: self.kind,
2965 state: 4usize,
2966 }));
2967 if let Some(fb) = fb {
2968 state.add_element(fb.pop_push(Rule {
2969 kind: self.kind,
2970 state: 4usize,
2971 }));
2972 }
2973 }
2974 (SyntaxKind::Rdfliteral, 6usize) => {
2975 state.add_element_checked(
2976 element
2977 .pop_push(Rule {
2978 kind: self.kind,
2979 state: 1usize,
2980 })
2981 .push(Rule {
2982 kind: SyntaxKind::MyString,
2983 state: 1usize,
2984 }),
2985 SyntaxKind::MyString,
2986 );
2987 }
2988 (SyntaxKind::BooleanLiteral, 0usize) => {
2989 if let Some(parent) = element.pop() {
2990 state.add_element(parent);
2991 }
2992 }
2993 (SyntaxKind::BooleanLiteral, 1usize) => {
2994 state.add_element_checked(
2995 element.pop_push(Rule {
2996 kind: self.kind,
2997 state: 2usize,
2998 }),
2999 SyntaxKind::TrueLit,
3000 );
3001 state.add_element_checked(
3002 element.pop_push(Rule {
3003 kind: self.kind,
3004 state: 3usize,
3005 }),
3006 SyntaxKind::FalseLit,
3007 );
3008 }
3009 (SyntaxKind::BooleanLiteral, 2usize) => {
3010 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::TrueLit);
3011 state.add_element(matched.pop_push(Rule {
3012 kind: self.kind,
3013 state: 0usize,
3014 }));
3015 if let Some(fb) = fb {
3016 state.add_element(fb.pop_push(Rule {
3017 kind: self.kind,
3018 state: 0usize,
3019 }));
3020 }
3021 }
3022 (SyntaxKind::BooleanLiteral, 3usize) => {
3023 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::FalseLit);
3024 state.add_element(matched.pop_push(Rule {
3025 kind: self.kind,
3026 state: 0usize,
3027 }));
3028 if let Some(fb) = fb {
3029 state.add_element(fb.pop_push(Rule {
3030 kind: self.kind,
3031 state: 0usize,
3032 }));
3033 }
3034 }
3035 (SyntaxKind::MyString, 0usize) => {
3036 if let Some(parent) = element.pop() {
3037 state.add_element(parent);
3038 }
3039 }
3040 (SyntaxKind::MyString, 1usize) => {
3041 state.add_element_checked(
3042 element.pop_push(Rule {
3043 kind: self.kind,
3044 state: 2usize,
3045 }),
3046 SyntaxKind::StringLiteralQuote,
3047 );
3048 state.add_element_checked(
3049 element.pop_push(Rule {
3050 kind: self.kind,
3051 state: 3usize,
3052 }),
3053 SyntaxKind::StringLiteralSingleQuote,
3054 );
3055 state.add_element_checked(
3056 element.pop_push(Rule {
3057 kind: self.kind,
3058 state: 4usize,
3059 }),
3060 SyntaxKind::StringLiteralLongSingleQuote,
3061 );
3062 state.add_element_checked(
3063 element.pop_push(Rule {
3064 kind: self.kind,
3065 state: 5usize,
3066 }),
3067 SyntaxKind::StringLiteralLongQuote,
3068 );
3069 }
3070 (SyntaxKind::MyString, 2usize) => {
3071 let (matched, fb) =
3072 state.expect_as_inline(element, SyntaxKind::StringLiteralQuote);
3073 state.add_element(matched.pop_push(Rule {
3074 kind: self.kind,
3075 state: 0usize,
3076 }));
3077 if let Some(fb) = fb {
3078 state.add_element(fb.pop_push(Rule {
3079 kind: self.kind,
3080 state: 0usize,
3081 }));
3082 }
3083 }
3084 (SyntaxKind::MyString, 3usize) => {
3085 let (matched, fb) =
3086 state.expect_as_inline(element, SyntaxKind::StringLiteralSingleQuote);
3087 state.add_element(matched.pop_push(Rule {
3088 kind: self.kind,
3089 state: 0usize,
3090 }));
3091 if let Some(fb) = fb {
3092 state.add_element(fb.pop_push(Rule {
3093 kind: self.kind,
3094 state: 0usize,
3095 }));
3096 }
3097 }
3098 (SyntaxKind::MyString, 4usize) => {
3099 let (matched, fb) =
3100 state.expect_as_inline(element, SyntaxKind::StringLiteralLongSingleQuote);
3101 state.add_element(matched.pop_push(Rule {
3102 kind: self.kind,
3103 state: 0usize,
3104 }));
3105 if let Some(fb) = fb {
3106 state.add_element(fb.pop_push(Rule {
3107 kind: self.kind,
3108 state: 0usize,
3109 }));
3110 }
3111 }
3112 (SyntaxKind::MyString, 5usize) => {
3113 let (matched, fb) =
3114 state.expect_as_inline(element, SyntaxKind::StringLiteralLongQuote);
3115 state.add_element(matched.pop_push(Rule {
3116 kind: self.kind,
3117 state: 0usize,
3118 }));
3119 if let Some(fb) = fb {
3120 state.add_element(fb.pop_push(Rule {
3121 kind: self.kind,
3122 state: 0usize,
3123 }));
3124 }
3125 }
3126 (SyntaxKind::Iri, 0usize) => {
3127 if let Some(parent) = element.pop() {
3128 state.add_element(parent);
3129 }
3130 }
3131 (SyntaxKind::Iri, 1usize) => {
3132 state.add_element_checked(
3133 element.pop_push(Rule {
3134 kind: self.kind,
3135 state: 2usize,
3136 }),
3137 SyntaxKind::Iriref,
3138 );
3139 state.add_element(element.pop_push(Rule {
3140 kind: self.kind,
3141 state: 3usize,
3142 }));
3143 }
3144 (SyntaxKind::Iri, 2usize) => {
3145 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::Iriref);
3146 state.add_element(matched.pop_push(Rule {
3147 kind: self.kind,
3148 state: 0usize,
3149 }));
3150 if let Some(fb) = fb {
3151 state.add_element(fb.pop_push(Rule {
3152 kind: self.kind,
3153 state: 0usize,
3154 }));
3155 }
3156 }
3157 (SyntaxKind::Iri, 3usize) => {
3158 state.add_element_checked(
3159 element
3160 .pop_push(Rule {
3161 kind: self.kind,
3162 state: 0usize,
3163 })
3164 .push(Rule {
3165 kind: SyntaxKind::PrefixedName,
3166 state: 1usize,
3167 }),
3168 SyntaxKind::PrefixedName,
3169 );
3170 }
3171 (SyntaxKind::PrefixedName, 0usize) => {
3172 if let Some(parent) = element.pop() {
3173 state.add_element(parent);
3174 }
3175 }
3176 (SyntaxKind::PrefixedName, 1usize) => {
3177 state.add_element_checked(
3178 element.pop_push(Rule {
3179 kind: self.kind,
3180 state: 2usize,
3181 }),
3182 SyntaxKind::PnameLn,
3183 );
3184 state.add_element_checked(
3185 element.pop_push(Rule {
3186 kind: self.kind,
3187 state: 3usize,
3188 }),
3189 SyntaxKind::PnameNs,
3190 );
3191 }
3192 (SyntaxKind::PrefixedName, 2usize) => {
3193 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::PnameLn);
3194 state.add_element(matched.pop_push(Rule {
3195 kind: self.kind,
3196 state: 0usize,
3197 }));
3198 if let Some(fb) = fb {
3199 state.add_element(fb.pop_push(Rule {
3200 kind: self.kind,
3201 state: 0usize,
3202 }));
3203 }
3204 }
3205 (SyntaxKind::PrefixedName, 3usize) => {
3206 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::PnameNs);
3207 state.add_element(matched.pop_push(Rule {
3208 kind: self.kind,
3209 state: 0usize,
3210 }));
3211 if let Some(fb) = fb {
3212 state.add_element(fb.pop_push(Rule {
3213 kind: self.kind,
3214 state: 0usize,
3215 }));
3216 }
3217 }
3218 (SyntaxKind::BlankNode, 0usize) => {
3219 if let Some(parent) = element.pop() {
3220 state.add_element(parent);
3221 }
3222 }
3223 (SyntaxKind::BlankNode, 1usize) => {
3224 state.add_element_checked(
3225 element.pop_push(Rule {
3226 kind: self.kind,
3227 state: 2usize,
3228 }),
3229 SyntaxKind::BlankNodeLabel,
3230 );
3231 state.add_element(element.pop_push(Rule {
3232 kind: self.kind,
3233 state: 4usize,
3234 }));
3235 }
3236 (SyntaxKind::BlankNode, 2usize) => {
3237 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::BlankNodeLabel);
3238 state.add_element(matched.pop_push(Rule {
3239 kind: self.kind,
3240 state: 0usize,
3241 }));
3242 if let Some(fb) = fb {
3243 state.add_element(fb.pop_push(Rule {
3244 kind: self.kind,
3245 state: 0usize,
3246 }));
3247 }
3248 }
3249 (SyntaxKind::BlankNode, 3usize) => {
3250 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::SqClose);
3251 state.add_element(matched.pop_push(Rule {
3252 kind: self.kind,
3253 state: 0usize,
3254 }));
3255 if let Some(fb) = fb {
3256 state.add_element(fb.pop_push(Rule {
3257 kind: self.kind,
3258 state: 0usize,
3259 }));
3260 }
3261 }
3262 (SyntaxKind::BlankNode, 4usize) => {
3263 let (matched, fb) = state.expect_as_inline(element, SyntaxKind::SqOpen);
3264 state.add_element(matched.pop_push(Rule {
3265 kind: self.kind,
3266 state: 3usize,
3267 }));
3268 if let Some(fb) = fb {
3269 state.add_element(fb.pop_push(Rule {
3270 kind: self.kind,
3271 state: 3usize,
3272 }));
3273 }
3274 }
3275 (SyntaxKind::ClOpen, _) => {
3276 let added = state.expect_as(element, SyntaxKind::ClOpen);
3277 if let Some(parent) = added.pop() {
3278 state.add_element(parent);
3279 }
3280 }
3281 (SyntaxKind::ClClose, _) => {
3282 let added = state.expect_as(element, SyntaxKind::ClClose);
3283 if let Some(parent) = added.pop() {
3284 state.add_element(parent);
3285 }
3286 }
3287 (SyntaxKind::Comma, _) => {
3288 let added = state.expect_as(element, SyntaxKind::Comma);
3289 if let Some(parent) = added.pop() {
3290 state.add_element(parent);
3291 }
3292 }
3293 (SyntaxKind::Stop, _) => {
3294 let added = state.expect_as(element, SyntaxKind::Stop);
3295 if let Some(parent) = added.pop() {
3296 state.add_element(parent);
3297 }
3298 }
3299 (SyntaxKind::Colon, _) => {
3300 let added = state.expect_as(element, SyntaxKind::Colon);
3301 if let Some(parent) = added.pop() {
3302 state.add_element(parent);
3303 }
3304 }
3305 (SyntaxKind::BaseToken, _) => {
3306 let added = state.expect_as(element, SyntaxKind::BaseToken);
3307 if let Some(parent) = added.pop() {
3308 state.add_element(parent);
3309 }
3310 }
3311 (SyntaxKind::PrefixToken, _) => {
3312 let added = state.expect_as(element, SyntaxKind::PrefixToken);
3313 if let Some(parent) = added.pop() {
3314 state.add_element(parent);
3315 }
3316 }
3317 (SyntaxKind::SparqlBaseToken, _) => {
3318 let added = state.expect_as(element, SyntaxKind::SparqlBaseToken);
3319 if let Some(parent) = added.pop() {
3320 state.add_element(parent);
3321 }
3322 }
3323 (SyntaxKind::SparqlPrefixToken, _) => {
3324 let added = state.expect_as(element, SyntaxKind::SparqlPrefixToken);
3325 if let Some(parent) = added.pop() {
3326 state.add_element(parent);
3327 }
3328 }
3329 (SyntaxKind::SqOpen, _) => {
3330 let added = state.expect_as(element, SyntaxKind::SqOpen);
3331 if let Some(parent) = added.pop() {
3332 state.add_element(parent);
3333 }
3334 }
3335 (SyntaxKind::SqClose, _) => {
3336 let added = state.expect_as(element, SyntaxKind::SqClose);
3337 if let Some(parent) = added.pop() {
3338 state.add_element(parent);
3339 }
3340 }
3341 (SyntaxKind::Datatype, _) => {
3342 let added = state.expect_as(element, SyntaxKind::Datatype);
3343 if let Some(parent) = added.pop() {
3344 state.add_element(parent);
3345 }
3346 }
3347 (SyntaxKind::Alit, _) => {
3348 let added = state.expect_as(element, SyntaxKind::Alit);
3349 if let Some(parent) = added.pop() {
3350 state.add_element(parent);
3351 }
3352 }
3353 (SyntaxKind::FalseLit, _) => {
3354 let added = state.expect_as(element, SyntaxKind::FalseLit);
3355 if let Some(parent) = added.pop() {
3356 state.add_element(parent);
3357 }
3358 }
3359 (SyntaxKind::TrueLit, _) => {
3360 let added = state.expect_as(element, SyntaxKind::TrueLit);
3361 if let Some(parent) = added.pop() {
3362 state.add_element(parent);
3363 }
3364 }
3365 (SyntaxKind::BlankNodeLabel, _) => {
3366 let added = state.expect_as(element, SyntaxKind::BlankNodeLabel);
3367 if let Some(parent) = added.pop() {
3368 state.add_element(parent);
3369 }
3370 }
3371 (SyntaxKind::Decimal, _) => {
3372 let added = state.expect_as(element, SyntaxKind::Decimal);
3373 if let Some(parent) = added.pop() {
3374 state.add_element(parent);
3375 }
3376 }
3377 (SyntaxKind::Double, _) => {
3378 let added = state.expect_as(element, SyntaxKind::Double);
3379 if let Some(parent) = added.pop() {
3380 state.add_element(parent);
3381 }
3382 }
3383 (SyntaxKind::Integer, _) => {
3384 let added = state.expect_as(element, SyntaxKind::Integer);
3385 if let Some(parent) = added.pop() {
3386 state.add_element(parent);
3387 }
3388 }
3389 (SyntaxKind::Iriref, _) => {
3390 let added = state.expect_as(element, SyntaxKind::Iriref);
3391 if let Some(parent) = added.pop() {
3392 state.add_element(parent);
3393 }
3394 }
3395 (SyntaxKind::Langtag, _) => {
3396 let added = state.expect_as(element, SyntaxKind::Langtag);
3397 if let Some(parent) = added.pop() {
3398 state.add_element(parent);
3399 }
3400 }
3401 (SyntaxKind::PnameLn, _) => {
3402 let added = state.expect_as(element, SyntaxKind::PnameLn);
3403 if let Some(parent) = added.pop() {
3404 state.add_element(parent);
3405 }
3406 }
3407 (SyntaxKind::PnameNs, _) => {
3408 let added = state.expect_as(element, SyntaxKind::PnameNs);
3409 if let Some(parent) = added.pop() {
3410 state.add_element(parent);
3411 }
3412 }
3413 (SyntaxKind::StringLiteralLongQuote, _) => {
3414 let added = state.expect_as(element, SyntaxKind::StringLiteralLongQuote);
3415 if let Some(parent) = added.pop() {
3416 state.add_element(parent);
3417 }
3418 }
3419 (SyntaxKind::StringLiteralLongSingleQuote, _) => {
3420 let added = state.expect_as(element, SyntaxKind::StringLiteralLongSingleQuote);
3421 if let Some(parent) = added.pop() {
3422 state.add_element(parent);
3423 }
3424 }
3425 (SyntaxKind::StringLiteralQuote, _) => {
3426 let added = state.expect_as(element, SyntaxKind::StringLiteralQuote);
3427 if let Some(parent) = added.pop() {
3428 state.add_element(parent);
3429 }
3430 }
3431 (SyntaxKind::StringLiteralSingleQuote, _) => {
3432 let added = state.expect_as(element, SyntaxKind::StringLiteralSingleQuote);
3433 if let Some(parent) = added.pop() {
3434 state.add_element(parent);
3435 }
3436 }
3437 _ => panic!("Aaaah unexpected state {:?}", self),
3438 }
3439 }
3440 fn at(&self) -> usize {
3441 self.state
3442 }
3443 fn element_kind(&self) -> SyntaxKind {
3444 self.kind
3445 }
3446 fn state_dist(&self, terminal: &SyntaxKind) -> isize {
3447 state_dist(self.kind, self.state, *terminal)
3448 }
3449 }
3450}
3451pub use definitions::*;
3452impl TokenTrait for SyntaxKind {
3453 const ERROR: Self = SyntaxKind::Error;
3454 const ROOT: Self = SyntaxKind::ROOT;
3455 fn branch(&self) -> u32 {
3456 *self as u32
3457 }
3458 fn skips(&self) -> bool {
3459 match self {
3460 SyntaxKind::WhiteSpace => true,
3461 SyntaxKind::Error => true,
3462 SyntaxKind::Comment => true,
3463 _ => false,
3464 }
3465 }
3466 fn starting_tokens(&self) -> &'static [SyntaxKind] {
3467 &[]
3468 }
3469 fn min_error_for_token(&self, tok: &SyntaxKind) -> isize {
3470 min_error_for_token(*self, *tok)
3471 }
3472 fn ending_tokens(&self) -> &'static [SyntaxKind] {
3473 &[]
3474 }
3475 fn max_error_value(&self) -> isize {
3476 match self {
3477 SyntaxKind::ClOpen => 2isize,
3478 SyntaxKind::ClClose => 2isize,
3479 SyntaxKind::Comma => 2isize,
3480 SyntaxKind::Stop => 3isize,
3481 SyntaxKind::Colon => 2isize,
3482 SyntaxKind::BaseToken => 100isize,
3483 SyntaxKind::PrefixToken => 100isize,
3484 SyntaxKind::SparqlBaseToken => 100isize,
3485 SyntaxKind::SparqlPrefixToken => 100isize,
3486 SyntaxKind::SqOpen => 2isize,
3487 SyntaxKind::SqClose => 2isize,
3488 _ => 1isize,
3489 }
3490 }
3491 fn bracket_delta(&self) -> i8 {
3492 match self {
3493 SyntaxKind::SqOpen => 1,
3494 SyntaxKind::ClOpen => 1,
3495 SyntaxKind::SqClose => -1,
3496 SyntaxKind::ClClose => -1,
3497 _ => 0,
3498 }
3499 }
3500 fn min_completion_cost(&self) -> isize {
3501 match self {
3502 SyntaxKind::Base => 104isize,
3503 SyntaxKind::BlankNodePropertyList => 6isize,
3504 SyntaxKind::BlankNodePropertyList2 => 4isize,
3505 SyntaxKind::Collection => 4isize,
3506 SyntaxKind::Directive => 101isize,
3507 SyntaxKind::PredicateObjectList => 2isize,
3508 SyntaxKind::PrefixId => 105isize,
3509 SyntaxKind::SparqlBase => 101isize,
3510 SyntaxKind::SparqlPrefix => 102isize,
3511 SyntaxKind::Statement => 6isize,
3512 SyntaxKind::Triples => 3isize,
3513 _ => Self::max_error_value(self),
3514 }
3515 }
3516 fn deletion_cost(&self) -> isize {
3517 match self {
3518 _ => Self::max_error_value(self) * 5,
3519 }
3520 }
3521}
3522pub mod format {
3523 use super::{SyntaxKind, SyntaxNode};
3524 use crate::format::Doc;
3525 use crate::TokenTrait;
3526 use rowan::NodeOrToken;
3527 #[derive(Default)]
3528 struct Hints {
3529 space: bool,
3530 line: bool,
3531 hardline: bool,
3532 blankline: bool,
3533 indent: bool,
3534 dedent: bool,
3535 }
3536 impl Hints {
3537 fn to_docs(&self) -> Vec<Doc> {
3538 let mut v = Vec::new();
3539 if self.indent {
3540 v.push(Doc::nil());
3541 }
3542 if self.dedent {
3543 v.push(Doc::nil());
3544 }
3545 if self.blankline {
3546 v.push(Doc::HardLine);
3547 v.push(Doc::HardLine);
3548 } else if self.hardline {
3549 v.push(Doc::HardLine);
3550 } else if self.line {
3551 v.push(Doc::Line);
3552 } else if self.space {
3553 v.push(Doc::text(" "));
3554 }
3555 v
3556 }
3557 }
3558 fn format_hints(parent: SyntaxKind, token: SyntaxKind) -> (Hints, Hints) {
3559 match (parent, token) {
3560 (SyntaxKind::Triples, SyntaxKind::PredicateObjectList) => (
3561 Hints {
3562 space: true,
3563 line: false,
3564 hardline: false,
3565 blankline: false,
3566 indent: false,
3567 dedent: false,
3568 },
3569 Hints {
3570 space: false,
3571 line: false,
3572 hardline: false,
3573 blankline: false,
3574 indent: false,
3575 dedent: false,
3576 },
3577 ),
3578 (SyntaxKind::Statement, SyntaxKind::Triples) => (
3579 Hints {
3580 space: false,
3581 line: false,
3582 hardline: true,
3583 blankline: false,
3584 indent: false,
3585 dedent: false,
3586 },
3587 Hints {
3588 space: false,
3589 line: false,
3590 hardline: false,
3591 blankline: false,
3592 indent: false,
3593 dedent: false,
3594 },
3595 ),
3596 (SyntaxKind::ObjectList, SyntaxKind::Comma) => (
3597 Hints {
3598 space: false,
3599 line: false,
3600 hardline: false,
3601 blankline: false,
3602 indent: false,
3603 dedent: false,
3604 },
3605 Hints {
3606 space: false,
3607 line: true,
3608 hardline: false,
3609 blankline: false,
3610 indent: false,
3611 dedent: false,
3612 },
3613 ),
3614 (SyntaxKind::BlankNodePropertyList, SyntaxKind::SqOpen) => (
3615 Hints {
3616 space: false,
3617 line: false,
3618 hardline: false,
3619 blankline: false,
3620 indent: false,
3621 dedent: false,
3622 },
3623 Hints {
3624 space: false,
3625 line: true,
3626 hardline: false,
3627 blankline: false,
3628 indent: true,
3629 dedent: false,
3630 },
3631 ),
3632 (SyntaxKind::BlankNodePropertyList, SyntaxKind::SqClose) => (
3633 Hints {
3634 space: false,
3635 line: true,
3636 hardline: false,
3637 blankline: false,
3638 indent: false,
3639 dedent: true,
3640 },
3641 Hints {
3642 space: false,
3643 line: false,
3644 hardline: false,
3645 blankline: false,
3646 indent: false,
3647 dedent: false,
3648 },
3649 ),
3650 (SyntaxKind::BlankNodePropertyList2, SyntaxKind::SqOpen) => (
3651 Hints {
3652 space: false,
3653 line: false,
3654 hardline: false,
3655 blankline: false,
3656 indent: false,
3657 dedent: false,
3658 },
3659 Hints {
3660 space: false,
3661 line: true,
3662 hardline: false,
3663 blankline: false,
3664 indent: true,
3665 dedent: false,
3666 },
3667 ),
3668 (SyntaxKind::BlankNodePropertyList2, SyntaxKind::SqClose) => (
3669 Hints {
3670 space: false,
3671 line: true,
3672 hardline: false,
3673 blankline: false,
3674 indent: false,
3675 dedent: true,
3676 },
3677 Hints {
3678 space: false,
3679 line: false,
3680 hardline: false,
3681 blankline: false,
3682 indent: false,
3683 dedent: false,
3684 },
3685 ),
3686 (SyntaxKind::BlankNode, SyntaxKind::SqOpen) => (
3687 Hints {
3688 space: false,
3689 line: false,
3690 hardline: false,
3691 blankline: false,
3692 indent: false,
3693 dedent: false,
3694 },
3695 Hints {
3696 space: true,
3697 line: false,
3698 hardline: false,
3699 blankline: false,
3700 indent: false,
3701 dedent: false,
3702 },
3703 ),
3704 (SyntaxKind::PrefixId, SyntaxKind::PrefixToken) => (
3705 Hints {
3706 space: false,
3707 line: false,
3708 hardline: false,
3709 blankline: false,
3710 indent: false,
3711 dedent: false,
3712 },
3713 Hints {
3714 space: true,
3715 line: false,
3716 hardline: false,
3717 blankline: false,
3718 indent: false,
3719 dedent: false,
3720 },
3721 ),
3722 (SyntaxKind::PrefixId, SyntaxKind::PnameNs) => (
3723 Hints {
3724 space: false,
3725 line: false,
3726 hardline: false,
3727 blankline: false,
3728 indent: false,
3729 dedent: false,
3730 },
3731 Hints {
3732 space: true,
3733 line: false,
3734 hardline: false,
3735 blankline: false,
3736 indent: false,
3737 dedent: false,
3738 },
3739 ),
3740 (SyntaxKind::Base, SyntaxKind::BaseToken) => (
3741 Hints {
3742 space: false,
3743 line: false,
3744 hardline: false,
3745 blankline: false,
3746 indent: false,
3747 dedent: false,
3748 },
3749 Hints {
3750 space: true,
3751 line: false,
3752 hardline: false,
3753 blankline: false,
3754 indent: false,
3755 dedent: false,
3756 },
3757 ),
3758 (SyntaxKind::SparqlBase, SyntaxKind::SparqlBaseToken) => (
3759 Hints {
3760 space: false,
3761 line: false,
3762 hardline: false,
3763 blankline: false,
3764 indent: false,
3765 dedent: false,
3766 },
3767 Hints {
3768 space: true,
3769 line: false,
3770 hardline: false,
3771 blankline: false,
3772 indent: false,
3773 dedent: false,
3774 },
3775 ),
3776 (SyntaxKind::SparqlPrefix, SyntaxKind::SparqlPrefixToken) => (
3777 Hints {
3778 space: false,
3779 line: false,
3780 hardline: false,
3781 blankline: false,
3782 indent: false,
3783 dedent: false,
3784 },
3785 Hints {
3786 space: true,
3787 line: false,
3788 hardline: false,
3789 blankline: false,
3790 indent: false,
3791 dedent: false,
3792 },
3793 ),
3794 (SyntaxKind::SparqlPrefix, SyntaxKind::PnameNs) => (
3795 Hints {
3796 space: false,
3797 line: false,
3798 hardline: false,
3799 blankline: false,
3800 indent: false,
3801 dedent: false,
3802 },
3803 Hints {
3804 space: true,
3805 line: false,
3806 hardline: false,
3807 blankline: false,
3808 indent: false,
3809 dedent: false,
3810 },
3811 ),
3812 (_, SyntaxKind::Subject) => (
3813 Hints {
3814 space: false,
3815 line: false,
3816 hardline: false,
3817 blankline: false,
3818 indent: false,
3819 dedent: false,
3820 },
3821 Hints {
3822 space: false,
3823 line: false,
3824 hardline: false,
3825 blankline: false,
3826 indent: true,
3827 dedent: false,
3828 },
3829 ),
3830 (_, SyntaxKind::Colon) => (
3831 Hints {
3832 space: false,
3833 line: false,
3834 hardline: false,
3835 blankline: false,
3836 indent: false,
3837 dedent: false,
3838 },
3839 Hints {
3840 space: false,
3841 line: true,
3842 hardline: false,
3843 blankline: false,
3844 indent: false,
3845 dedent: false,
3846 },
3847 ),
3848 (_, SyntaxKind::Stop) => (
3849 Hints {
3850 space: false,
3851 line: false,
3852 hardline: false,
3853 blankline: false,
3854 indent: false,
3855 dedent: false,
3856 },
3857 Hints {
3858 space: false,
3859 line: false,
3860 hardline: true,
3861 blankline: false,
3862 indent: false,
3863 dedent: false,
3864 },
3865 ),
3866 (_, SyntaxKind::ObjectList) => (
3867 Hints {
3868 space: true,
3869 line: false,
3870 hardline: false,
3871 blankline: false,
3872 indent: false,
3873 dedent: false,
3874 },
3875 Hints {
3876 space: false,
3877 line: false,
3878 hardline: false,
3879 blankline: false,
3880 indent: false,
3881 dedent: false,
3882 },
3883 ),
3884 (_, SyntaxKind::ClOpen) => (
3885 Hints {
3886 space: false,
3887 line: false,
3888 hardline: false,
3889 blankline: false,
3890 indent: false,
3891 dedent: false,
3892 },
3893 Hints {
3894 space: false,
3895 line: true,
3896 hardline: false,
3897 blankline: false,
3898 indent: true,
3899 dedent: false,
3900 },
3901 ),
3902 (_, SyntaxKind::ClClose) => (
3903 Hints {
3904 space: false,
3905 line: true,
3906 hardline: false,
3907 blankline: false,
3908 indent: false,
3909 dedent: true,
3910 },
3911 Hints {
3912 space: false,
3913 line: false,
3914 hardline: false,
3915 blankline: false,
3916 indent: false,
3917 dedent: false,
3918 },
3919 ),
3920 _ => (Hints::default(), Hints::default()),
3921 }
3922 }
3923 fn is_group(kind: SyntaxKind) -> bool {
3924 matches!(
3925 kind,
3926 SyntaxKind::PredicateObjectList
3927 | SyntaxKind::ObjectList
3928 | SyntaxKind::BlankNodePropertyList
3929 | SyntaxKind::BlankNodePropertyList2
3930 | SyntaxKind::Collection
3931 )
3932 }
3933 pub fn to_doc(node: &SyntaxNode) -> Doc {
3934 let mut parts: Vec<Vec<Doc>> = vec![vec![]];
3935 for child in node.children_with_tokens() {
3936 match child {
3937 NodeOrToken::Token(t) => {
3938 if t.kind() == SyntaxKind::WhiteSpace {
3939 continue;
3940 }
3941 if t.kind() == SyntaxKind::Comment {
3942 parts
3943 .last_mut()
3944 .unwrap()
3945 .push(Doc::text(t.text().to_string()));
3946 continue;
3947 }
3948 let (before, after) = format_hints(node.kind(), t.kind());
3949 if before.dedent && parts.len() > 1 {
3950 let nested = parts.pop().unwrap_or_default();
3951 let indent_doc = Doc::nest(2, Doc::concat(nested));
3952 parts.last_mut().unwrap().push(indent_doc);
3953 }
3954 parts.last_mut().unwrap().extend(
3955 before
3956 .to_docs()
3957 .into_iter()
3958 .filter(|d| !matches!(d, Doc::Nil)),
3959 );
3960 parts
3961 .last_mut()
3962 .unwrap()
3963 .push(Doc::text(t.text().to_string()));
3964 let after_line: Vec<Doc> = after
3965 .to_docs()
3966 .into_iter()
3967 .filter(|d| !matches!(d, Doc::Nil))
3968 .collect();
3969 if after.indent {
3970 parts.push(after_line);
3971 } else {
3972 parts.last_mut().unwrap().extend(after_line);
3973 }
3974 }
3975 NodeOrToken::Node(n) => {
3976 if n.kind() == SyntaxKind::ERROR {
3977 parts
3978 .last_mut()
3979 .unwrap()
3980 .push(Doc::text(n.text().to_string()));
3981 continue;
3982 }
3983 let is_terminal_wrapper = {
3984 let mut it = n.children_with_tokens().filter(|c| match c {
3985 NodeOrToken::Token(t) => t.kind() != SyntaxKind::WhiteSpace,
3986 NodeOrToken::Node(_) => true,
3987 });
3988 matches!(it.next(), Some(NodeOrToken::Token(_))) && it.next().is_none()
3989 };
3990 if is_terminal_wrapper {
3991 let token_text = n.text().to_string();
3992 let (before, after) = format_hints(node.kind(), n.kind());
3993 if before.dedent && parts.len() > 1 {
3994 let nested = parts.pop().unwrap_or_default();
3995 let indent_doc = Doc::nest(2, Doc::concat(nested));
3996 parts.last_mut().unwrap().push(indent_doc);
3997 }
3998 parts.last_mut().unwrap().extend(
3999 before
4000 .to_docs()
4001 .into_iter()
4002 .filter(|d| !matches!(d, Doc::Nil)),
4003 );
4004 parts.last_mut().unwrap().push(Doc::text(token_text));
4005 let after_line: Vec<Doc> = after
4006 .to_docs()
4007 .into_iter()
4008 .filter(|d| !matches!(d, Doc::Nil))
4009 .collect();
4010 if after.indent {
4011 parts.push(after_line);
4012 } else {
4013 parts.last_mut().unwrap().extend(after_line);
4014 }
4015 } else {
4016 let (before, after) = format_hints(node.kind(), n.kind());
4017 if before.dedent && parts.len() > 1 {
4018 let nested = parts.pop().unwrap_or_default();
4019 let indent_doc = Doc::nest(2, Doc::concat(nested));
4020 parts.last_mut().unwrap().push(indent_doc);
4021 }
4022 parts.last_mut().unwrap().extend(
4023 before
4024 .to_docs()
4025 .into_iter()
4026 .filter(|d| !matches!(d, Doc::Nil)),
4027 );
4028 let child_doc = to_doc(&n);
4029 let child_doc = if is_group(n.kind()) {
4030 Doc::group(child_doc)
4031 } else {
4032 child_doc
4033 };
4034 parts.last_mut().unwrap().push(child_doc);
4035 let after_line: Vec<Doc> = after
4036 .to_docs()
4037 .into_iter()
4038 .filter(|d| !matches!(d, Doc::Nil))
4039 .collect();
4040 if after.indent {
4041 parts.push(after_line);
4042 } else {
4043 parts.last_mut().unwrap().extend(after_line);
4044 }
4045 }
4046 }
4047 }
4048 }
4049 while parts.len() > 1 {
4050 let nested = parts.pop().unwrap();
4051 parts
4052 .last_mut()
4053 .unwrap()
4054 .push(Doc::nest(2, Doc::concat(nested)));
4055 }
4056 Doc::concat(parts.pop().unwrap_or_default())
4057 }
4058 pub fn format(node: &SyntaxNode, width: usize) -> String {
4059 let doc = to_doc(node);
4060 let s = crate::format::render(&doc, width);
4061 let s = s.trim_start_matches('\n').trim_end_matches('\n');
4062 format!("{s}\n")
4063 }
4064}