Skip to main content

rdf_parsers/trig/
parser.rs

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