Skip to main content

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