diff --git a/SYNTAX.md b/SYNTAX.md index 94469a37..e91f9f5c 100644 --- a/SYNTAX.md +++ b/SYNTAX.md @@ -21,7 +21,6 @@ This document provides a comprehensive guide to the grammar definition syntax us - [Operator Precedence (`%left`, `%right`, `%precedence`, `%prec`)](#operator-precedence) - [Error Type (`%error`)](#error-type-optional) - [Disabling Table Optimization (`%nooptim`)](#no-optimization) -- [Dense Parser Tables (`%dense`)](#dense-parser-table) - [Location Tracking (`%location`)](#location-tracking) - [Variable Substitution](#variable-substitution) - [Advanced Parser Controls](#advanced-parser-controls) @@ -449,17 +448,7 @@ Defines a custom error type returned by reduce actions. If your reduce action re Disables optimization passes on the generated table (which merge states and group equivalent terminals). Use this for debugging or to speed up the parser generation compilation phase itself. ---- - -## Dense Parser Table -``` -%dense; -``` - -Forces the generated parser table to use flat `Vec` indexes instead of `HashMap` lookups. This significantly speeds up token feeding, but can drastically increase the binary size of the generated parser. - ---- ## Location Tracking diff --git a/example/json/src/parser.rs b/example/json/src/parser.rs index 24bb79b5..5afe1ad9 100644 --- a/example/json/src/parser.rs +++ b/example/json/src/parser.rs @@ -5,7 +5,6 @@ %tokentype char; %start Json; %userdata Vec>; -%dense; %location std::ops::Range; Json: Element; diff --git a/rusty_lr_buildscript/src/lib.rs b/rusty_lr_buildscript/src/lib.rs index f5581da2..22036358 100644 --- a/rusty_lr_buildscript/src/lib.rs +++ b/rusty_lr_buildscript/src/lib.rs @@ -16,6 +16,7 @@ //! pub mod output; +pub use rusty_lr_parser::TableLayout; mod split; mod utils; @@ -68,7 +69,8 @@ pub struct Builder { /// if Some, override the settings with these values glr: Option, - dense: Option, + layout: Option, + dense_limit: Option, } impl Builder { @@ -83,7 +85,8 @@ impl Builder { is_executable: false, glr: None, - dense: None, + layout: None, + dense_limit: None, } } @@ -93,8 +96,24 @@ impl Builder { self } /// override the settings + /// Set layout strategy (dense, sparse, auto) + pub fn layout(&mut self, layout: rusty_lr_parser::TableLayout) -> &mut Self { + self.layout = Some(layout); + self + } + /// Set dense limit in bytes for auto-layout detection + pub fn dense_limit(&mut self, limit: usize) -> &mut Self { + self.dense_limit = Some(limit); + self + } + /// Deprecated: use layout(TableLayout::Dense) instead + #[deprecated(since = "0.66.0", note = "Use `layout(TableLayout::Dense)` instead")] pub fn dense(&mut self, dense: bool) -> &mut Self { - self.dense = Some(dense); + self.layout = Some(if dense { + rusty_lr_parser::TableLayout::Dense + } else { + rusty_lr_parser::TableLayout::Sparse + }); self } @@ -576,8 +595,11 @@ impl Builder { if let Some(glr) = self.glr { grammar_args.glr = glr; } - if let Some(dense) = self.dense { - grammar_args.dense = dense; + if let Some(layout) = self.layout { + grammar_args.layout = layout; + } + if let Some(limit) = self.dense_limit { + grammar_args.dense_limit = limit; } let span_manager = grammar_args.span_manager.clone(); diff --git a/rusty_lr_core/src/parser/state.rs b/rusty_lr_core/src/parser/state.rs index b3d2dd3a..0fa54af3 100644 --- a/rusty_lr_core/src/parser/state.rs +++ b/rusty_lr_core/src/parser/state.rs @@ -134,9 +134,6 @@ pub trait State { /// Get the set of production rule for reduce in this state fn expected_reduce_rule(&self) -> impl Iterator + '_; - /// Get the set of rules that this state is trying to parse - fn get_rules(&self) -> &[crate::rule::ShiftedRuleRef]; - fn can_accept_error(&self) -> TriState; } @@ -152,9 +149,6 @@ pub struct SparseState { /// terminal symbol -> reduce rule index pub(crate) reduce_map: HashMap, - /// set of rules that this state is trying to parse - pub(crate) ruleset: Vec, - pub(crate) can_accept_error: TriState, } @@ -193,9 +187,6 @@ impl< fn expected_reduce_rule(&self) -> impl Iterator + '_ { self.reduce_map.values().flat_map(RuleContainer::to_iter) } - fn get_rules(&self) -> &[crate::rule::ShiftedRuleRef] { - &self.ruleset - } fn can_accept_error(&self) -> TriState { self.can_accept_error } @@ -222,9 +213,6 @@ pub struct DenseState { /// reduce_map[i] will contain i+offset 'th class's reduce rule. pub(crate) reduce_offset: usize, - /// set of rules that this state is trying to parse - pub(crate) ruleset: Vec, - pub(crate) can_accept_error: TriState, } impl< @@ -274,10 +262,6 @@ impl< .flat_map(RuleContainer::to_iter) } - fn get_rules(&self) -> &[crate::rule::ShiftedRuleRef] { - &self.ruleset - } - fn can_accept_error(&self) -> TriState { self.can_accept_error } @@ -326,7 +310,6 @@ where ) }) .collect(), - ruleset: builder_state.ruleset.into_iter().collect(), can_accept_error: builder_state.can_accept_error, } } @@ -435,7 +418,6 @@ where shift_nonterm_offset: nonterm_min, reduce_map, reduce_offset: reduce_min, - ruleset: builder_state.ruleset.into_iter().collect(), can_accept_error: builder_state.can_accept_error, } } diff --git a/rusty_lr_executable/src/arg.rs b/rusty_lr_executable/src/arg.rs index ba344345..3f65c25e 100644 --- a/rusty_lr_executable/src/arg.rs +++ b/rusty_lr_executable/src/arg.rs @@ -42,11 +42,32 @@ pub struct Args { #[arg(long)] pub glr: Option, - /// Override the written code and set generated parser table to use dense arrays - #[arg(long)] - pub dense: Option, + /// Set generated parser table layout representation (auto: optimal choice based on table size, dense: O(1) array, sparse: binary search) + #[arg(long, value_enum, default_value_t = TableLayoutArg::Auto)] + pub layout: TableLayoutArg, + + /// Set dense limit in bytes for auto-layout detection + #[arg(long, default_value_t = 32768)] + pub dense_limit: usize, /// Print the details of a specific state #[arg(long)] pub state: Option, } + +#[derive(clap::ValueEnum, Clone, Copy, Debug, PartialEq, Eq)] +pub enum TableLayoutArg { + Auto, + Dense, + Sparse, +} + +impl From for rusty_lr_buildscript::TableLayout { + fn from(arg: TableLayoutArg) -> Self { + match arg { + TableLayoutArg::Auto => rusty_lr_buildscript::TableLayout::Auto, + TableLayoutArg::Dense => rusty_lr_buildscript::TableLayout::Dense, + TableLayoutArg::Sparse => rusty_lr_buildscript::TableLayout::Sparse, + } + } +} diff --git a/rusty_lr_executable/src/main.rs b/rusty_lr_executable/src/main.rs index 3fef05f4..7bbc89da 100644 --- a/rusty_lr_executable/src/main.rs +++ b/rusty_lr_executable/src/main.rs @@ -31,9 +31,8 @@ fn main() { if let Some(glr) = args.glr { builder.glr(glr); } - if let Some(dense) = args.dense { - builder.dense(dense); - } + builder.layout(args.layout.into()); + builder.dense_limit(args.dense_limit); let out = match builder.build_impl() { Ok(out) => out, diff --git a/rusty_lr_parser/src/emit.rs b/rusty_lr_parser/src/emit.rs index 26eac079..6555e73a 100644 --- a/rusty_lr_parser/src/emit.rs +++ b/rusty_lr_parser/src/emit.rs @@ -718,14 +718,11 @@ impl Grammar { let mut shift_nonterm_offsets = Vec::new(); let mut reduce_data = Vec::new(); let mut reduce_offsets = Vec::new(); - let mut ruleset_data = Vec::new(); - let mut ruleset_offsets = Vec::new(); let mut can_accept_error = Vec::new(); shift_term_offsets.push(0); shift_nonterm_offsets.push(0); reduce_offsets.push(0); - ruleset_offsets.push(0); for state in &self.states { // 1. shift_goto_map_term @@ -797,25 +794,6 @@ impl Grammar { } reduce_offsets.push(reduce_data.len() as u32); - // 4. ruleset: Vec - for &rule in &state.ruleset { - let rule_val = rule.rule; - let shifted_val = rule.shifted; - assert!( - rule_val < 65536, - "Rule index {} in ruleset exceeds 16-bit limit (65536)", - rule_val - ); - assert!( - shifted_val < 65536, - "Shifted index {} in ruleset exceeds 16-bit limit (65536)", - shifted_val - ); - let val = (rule_val as u32) | ((shifted_val as u32) << 16); - ruleset_data.push(val); - } - ruleset_offsets.push(ruleset_data.len() as u32); - // 5. can_accept_error: TriState let tri_val = match state.can_accept_error { rusty_lr_core::TriState::False => 0u8, @@ -829,6 +807,42 @@ impl Grammar { let num_states = self.states.len(); let error_used = self.error_used; + // to remove suffix from generated data + let rule_names = rule_names + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + let rule_precedences = rule_precedences + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + let rule_tokens_data = rule_tokens_data + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + let rule_tokens_offsets = rule_tokens_offsets + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + + let shift_term_data = shift_term_data + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + let shift_term_offsets = shift_term_offsets + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + let shift_nonterm_data = shift_nonterm_data + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + let shift_nonterm_offsets = shift_nonterm_offsets + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + let reduce_data = reduce_data + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + let reduce_offsets = reduce_offsets + .into_iter() + .map(proc_macro2::Literal::u32_unsuffixed); + let can_accept_error = can_accept_error + .into_iter() + .map(proc_macro2::Literal::u8_unsuffixed); + // range-compressed Vec based terminal-class_id map stream.extend(quote! { /// A lightweight parser struct that references the static parser tables and production rules. @@ -920,8 +934,6 @@ impl Grammar { // - SHIFT_TERM_OFFSETS & SHIFT_NONTERM_OFFSETS: Boundaries separating transitions for each state // - REDUCE_DATA: Variable-length reduce map encoding (term_class, len, rules...) // - REDUCE_OFFSETS: Boundaries separating reduce maps for each state - // - RULESET_DATA: Packed shifted rule references (shifted_idx << 16) | (rule_idx) - // - RULESET_OFFSETS: Boundaries separating ruleset references for each state // - CAN_ACCEPT_ERROR: TriState (0 = False, 1 = True, 2 = Maybe) static SHIFT_TERM_DATA: &[u32] = &[ #(#shift_term_data),* ]; static SHIFT_TERM_OFFSETS: &[u32] = &[ #(#shift_term_offsets),* ]; @@ -929,8 +941,6 @@ impl Grammar { static SHIFT_NONTERM_OFFSETS: &[u32] = &[ #(#shift_nonterm_offsets),* ]; static REDUCE_DATA: &[u32] = &[ #(#reduce_data),* ]; static REDUCE_OFFSETS: &[u32] = &[ #(#reduce_offsets),* ]; - static RULESET_DATA: &[u32] = &[ #(#ruleset_data),* ]; - static RULESET_OFFSETS: &[u32] = &[ #(#ruleset_offsets),* ]; static CAN_ACCEPT_ERROR: &[u8] = &[ #(#can_accept_error),* ]; let num_states = #num_states; @@ -977,17 +987,6 @@ impl Grammar { idx += 2 + len; } - // Decode the ruleset containing shifted rule references (rule index, shifted dot index) - let ruleset_start = RULESET_OFFSETS[i] as usize; - let ruleset_end = RULESET_OFFSETS[i + 1] as usize; - let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start); - for idx in ruleset_start..ruleset_end { - let val = RULESET_DATA[idx]; - let rule = (val & 0xffff) as usize; - let shifted = (val >> 16) as usize; - ruleset.push(#module_prefix::rule::ShiftedRuleRef { rule, shifted }); - } - let can_accept_error = match CAN_ACCEPT_ERROR[i] { 0 => #module_prefix::TriState::False, 1 => #module_prefix::TriState::True, @@ -999,7 +998,7 @@ impl Grammar { shift_goto_map_term, shift_goto_map_nonterm, reduce_map, - ruleset, + ruleset: Vec::new(), can_accept_error, }; states.push(intermediate.into()); diff --git a/rusty_lr_parser/src/grammar.rs b/rusty_lr_parser/src/grammar.rs index e4716560..a7d6dc9d 100644 --- a/rusty_lr_parser/src/grammar.rs +++ b/rusty_lr_parser/src/grammar.rs @@ -19,6 +19,7 @@ use crate::nonterminal_info::ReduceAction; use crate::nonterminal_info::Rule; use crate::parser::args::GrammarArgs; use crate::parser::args::IdentOrLiteral; +use crate::parser::args::TableLayout; use crate::parser::location::Located; use crate::parser::location::Location; use crate::parser::location::SpanManager; @@ -136,6 +137,8 @@ pub struct Grammar { /// in the generated parser, the dense table `Vec` will be used instead of the sparse table `HashMap`. pub emit_dense: bool, + pub layout: TableLayout, + pub dense_limit: usize, /// type for location pub location_typename: TokenStream, @@ -904,7 +907,9 @@ impl Grammar { other_terminal_index: 0, range_resolver: RangeResolver::new(), - emit_dense: grammar_args.dense, + emit_dense: false, + layout: grammar_args.layout, + dense_limit: grammar_args.dense_limit, location_typename, error_precedence: None, @@ -2726,6 +2731,78 @@ impl Grammar { self.states = new_states; + // Resolve table layout choice (DenseState vs SparseState) dynamically. + // Performance considerations: + // - DenseState: Uses O(1) direct array indexing lookup. It is extremely fast but requires a contiguous array + // allocation spanning from min_symbol to max_symbol. This can lead to memory bloat for large, sparse tables. + // - SparseState: Uses O(log K) binary search on a sorted static slice. It has zero memory bloat but takes + // slightly more CPU cycles and has higher branching overhead in the hot parsing loop. + // - Default/Auto mode: We calculate the estimated memory footprints for both layout types. If the estimated + // DenseState table size fits within `dense_limit` (defaults to 32KB, which comfortably fits inside CPU L1/L2 + // caches), or if the ratio of Dense-to-Sparse size is small (< 2.5x), we favor the O(1) speed of DenseState. + // Otherwise, we default to SparseState to minimize memory and binary footprint. + self.emit_dense = match self.layout { + TableLayout::Dense => true, + TableLayout::Sparse => false, + TableLayout::Auto => { + let mut total_dense_size = 0; + let mut total_sparse_size = 0; + + let term_to_usize = |term: TerminalSymbol| -> usize { + match term { + TerminalSymbol::Term(t) => t, + TerminalSymbol::Error => self.terminal_classes.len(), + TerminalSymbol::Eof => self.terminal_classes.len() + 1, + } + }; + + for state in &self.states { + // Terminal class transitions + let term_span = if !state.shift_goto_map_term.is_empty() { + let min = term_to_usize(state.shift_goto_map_term.first().unwrap().0); + let max = term_to_usize(state.shift_goto_map_term.last().unwrap().0); + max - min + 1 + } else { + 0 + }; + let term_count = state.shift_goto_map_term.len(); + + // Non-terminal transitions + let nonterm_span = if !state.shift_goto_map_nonterm.is_empty() { + let min = state.shift_goto_map_nonterm.first().unwrap().0; + let max = state.shift_goto_map_nonterm.last().unwrap().0; + max - min + 1 + } else { + 0 + }; + let nonterm_count = state.shift_goto_map_nonterm.len(); + + // Reduce rule transitions + let reduce_span = if !state.reduce_map.is_empty() { + let min = term_to_usize(state.reduce_map.first().unwrap().0); + let max = term_to_usize(state.reduce_map.last().unwrap().0); + max - min + 1 + } else { + 0 + }; + let reduce_count = state.reduce_map.len(); + + // Dense table memory estimation: + // Each slot is an Option>, which takes ~4 bytes (assuming 16-bit state index). + total_dense_size += (term_span + nonterm_span + reduce_span) * 4; + + // Sparse table memory estimation: + // Each slot stores a tuple (Symbol, ShiftTarget), taking ~8 bytes. + total_sparse_size += (term_count + nonterm_count + reduce_count) * 8; + } + + // Choose DenseState if it fits in the cache limit, or if the size overhead is reasonable. + total_dense_size <= self.dense_limit + || (total_sparse_size > 0 + && (total_dense_size as f64 / total_sparse_size as f64) < 2.5) + } + }; + collector } } @@ -2905,13 +2982,12 @@ mod tests { %tokentype u8; %start Expr; %glr; - %dense; Expr : b'a'; }; let grammar_args = Grammar::parse_args(input).expect("Failed glr"); assert!(grammar_args.error_recovered.is_empty()); assert!(grammar_args.glr); - assert!(grammar_args.dense); + assert_eq!(grammar_args.layout, TableLayout::Auto); } #[test] diff --git a/rusty_lr_parser/src/lib.rs b/rusty_lr_parser/src/lib.rs index e84b8583..d8419524 100644 --- a/rusty_lr_parser/src/lib.rs +++ b/rusty_lr_parser/src/lib.rs @@ -16,6 +16,7 @@ pub(crate) mod terminalset; pub(crate) mod token; pub mod utils; +pub use parser::args::TableLayout; /// Re-export Location for use by external crates (e.g. rusty_lr_buildscript) pub use parser::location::Location; diff --git a/rusty_lr_parser/src/parser/args.rs b/rusty_lr_parser/src/parser/args.rs index fcab2387..b86d6330 100644 --- a/rusty_lr_parser/src/parser/args.rs +++ b/rusty_lr_parser/src/parser/args.rs @@ -605,6 +605,13 @@ pub struct RecoveredError { pub location: Location, } +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum TableLayout { + Auto, + Dense, + Sparse, +} + /// parsed arguments for the grammar #[derive(Clone)] pub struct GrammarArgs { @@ -623,7 +630,8 @@ pub struct GrammarArgs { pub lalr: bool, pub glr: bool, pub no_optim: bool, - pub dense: bool, + pub layout: TableLayout, + pub dense_limit: usize, pub location_typename: Vec<(Location, TokenStream)>, pub error_recovered: Vec, @@ -644,7 +652,8 @@ impl Default for GrammarArgs { lalr: false, glr: false, no_optim: false, - dense: false, + layout: TableLayout::Auto, + dense_limit: 32768, // default 32KB location_typename: Vec::new(), error_recovered: Vec::new(), span_manager: crate::parser::location::SpanManager::default(), diff --git a/rusty_lr_parser/src/parser/lexer.rs b/rusty_lr_parser/src/parser/lexer.rs index f8e653cd..c95f416f 100644 --- a/rusty_lr_parser/src/parser/lexer.rs +++ b/rusty_lr_parser/src/parser/lexer.rs @@ -63,7 +63,6 @@ pub enum Lexed { Prec(Ident), // %prec Precedence(Ident), // %precedence NoOptim(Ident), // %nooptim - Dense(Ident), // %dense DPrec(Ident), // %dprec Location(Ident), // %location } @@ -145,9 +144,6 @@ impl Lexed { Lexed::NoOptim(ident) => { stream.append(ident); } - Lexed::Dense(ident) => { - stream.append(ident); - } Lexed::DPrec(ident) => { stream.append(ident); } @@ -207,7 +203,6 @@ impl std::fmt::Display for Lexed { Lexed::Prec(_) => write!(f, "prec"), Lexed::Precedence(_) => write!(f, "precedence"), Lexed::NoOptim(_) => write!(f, "nooptim"), - Lexed::Dense(_) => write!(f, "dense"), Lexed::DPrec(_) => write!(f, "dprec"), Lexed::Location(_) => write!(f, "location"), } @@ -229,7 +224,6 @@ fn ident_to_keyword(ident: Ident) -> Option { "prec" => Some(Lexed::Prec(ident)), "precedence" => Some(Lexed::Precedence(ident)), "nooptim" => Some(Lexed::NoOptim(ident)), - "dense" => Some(Lexed::Dense(ident)), "dprec" => Some(Lexed::DPrec(ident)), "location" => Some(Lexed::Location(ident)), _ => None, diff --git a/rusty_lr_parser/src/parser/parser.rs b/rusty_lr_parser/src/parser/parser.rs index 3dfbf037..a53da9de 100644 --- a/rusty_lr_parser/src/parser/parser.rs +++ b/rusty_lr_parser/src/parser/parser.rs @@ -77,7 +77,6 @@ use rusty_lr_core::rule::ReduceType; %token prec Lexed::Prec(_); %token precedence Lexed::Precedence(_); %token nooptim Lexed::NoOptim(_); -%token dense Lexed::Dense(_); %token dprec Lexed::DPrec(_); %token location Lexed::Location(_); @@ -616,16 +615,7 @@ Directive location: @error, }); } - | percent dense semicolon { - data.dense = true; - } - | percent dense error semicolon { - data.error_recovered.push( RecoveredError { - message: "Expected semicolon".to_string(), - link: "https://github.com/ehwan/RustyLR/blob/main/SYNTAX.md#dense-parser-table".to_string(), - location: @error, - }); - } + | percent location! RustCode semicolon! { diff --git a/rusty_lr_parser/src/parser/parser_expanded.rs b/rusty_lr_parser/src/parser/parser_expanded.rs index 1e1e81e2..8367681c 100644 --- a/rusty_lr_parser/src/parser/parser_expanded.rs +++ b/rusty_lr_parser/src/parser/parser_expanded.rs @@ -25,8 +25,8 @@ use std::boxed::Box; /* ====================================Grammar===================================== -# of terminal classes: 43 -# of states: 171 +# of terminal classes: 42 +# of states: 167 0: Rule -> ident RuleType colon RuleLines semicolon 1: RuleType -> parengroup @@ -100,85 +100,82 @@ use std::boxed::Box; 69: Directive -> percent lalr error semicolon 70: Directive -> percent nooptim semicolon 71: Directive -> percent nooptim error semicolon -72: Directive -> percent dense semicolon -73: Directive -> percent dense error semicolon -74: Directive -> percent location [^semicolon]+ semicolon -75: Directive -> percent location semicolon -76: Directive -> percent error semicolon -77: GrammarLine -> Rule -78: GrammarLine -> Directive -79: Grammar -> GrammarLine+ -80: TokenMapped+ -> TokenMapped -81: TokenMapped+ -> TokenMapped+ TokenMapped -82: TokenMapped* -> TokenMapped+ -83: TokenMapped* -> -84: PrecDef+ -> PrecDef -85: PrecDef+ -> PrecDef+ PrecDef -86: PrecDef* -> PrecDef+ -87: PrecDef* -> -88: caret? -> caret -89: caret? -> -90: TerminalSetItem+ -> TerminalSetItem -91: TerminalSetItem+ -> TerminalSetItem+ TerminalSetItem -92: TerminalSetItem* -> TerminalSetItem+ -93: TerminalSetItem* -> -94: Pattern+ -> Pattern -95: Pattern+ -> Pattern+ Pattern -96: Pattern* -> Pattern+ -97: Pattern* -> -98: $sep(Pattern*, pipe, +) -> Pattern* -99: $sep(Pattern*, pipe, +) -> $sep(Pattern*, pipe, +) pipe Pattern* -100: comma? -> comma -101: comma? -> -102: [^semicolon] -> ident -103: [^semicolon] -> colon -104: [^semicolon] -> pipe -105: [^semicolon] -> percent -106: [^semicolon] -> equal -107: [^semicolon] -> plus -108: [^semicolon] -> star -109: [^semicolon] -> question -110: [^semicolon] -> caret -111: [^semicolon] -> minus -112: [^semicolon] -> exclamation -113: [^semicolon] -> dot -114: [^semicolon] -> dollar -115: [^semicolon] -> comma -116: [^semicolon] -> int_literal -117: [^semicolon] -> byte_literal -118: [^semicolon] -> byte_str_literal -119: [^semicolon] -> char_literal -120: [^semicolon] -> str_literal -121: [^semicolon] -> [other_literal, ] -122: [^semicolon] -> parengroup -123: [^semicolon] -> bracegroup -124: [^semicolon] -> lparen -125: [^semicolon] -> rparen -126: [^semicolon] -> lbracket -127: [^semicolon] -> rbracket -128: [^semicolon] -> left -129: [^semicolon] -> right -130: [^semicolon] -> token -131: [^semicolon] -> start -132: [^semicolon] -> tokentype -133: [^semicolon] -> userdata -134: [^semicolon] -> errortype -135: [^semicolon] -> moduleprefix -136: [^semicolon] -> lalr -137: [^semicolon] -> glr -138: [^semicolon] -> prec -139: [^semicolon] -> precedence -140: [^semicolon] -> nooptim -141: [^semicolon] -> dense -142: [^semicolon] -> dprec -143: [^semicolon] -> location -144: [^semicolon]+ -> [^semicolon] -145: [^semicolon]+ -> [^semicolon]+ [^semicolon] -146: IdentOrLiteral+ -> IdentOrLiteral -147: IdentOrLiteral+ -> IdentOrLiteral+ IdentOrLiteral -148: GrammarLine+ -> GrammarLine -149: GrammarLine+ -> GrammarLine GrammarLine+ -150: Augmented -> Grammar eof +72: Directive -> percent location [^semicolon]+ semicolon +73: Directive -> percent location semicolon +74: Directive -> percent error semicolon +75: GrammarLine -> Rule +76: GrammarLine -> Directive +77: Grammar -> GrammarLine+ +78: TokenMapped+ -> TokenMapped +79: TokenMapped+ -> TokenMapped+ TokenMapped +80: TokenMapped* -> TokenMapped+ +81: TokenMapped* -> +82: PrecDef+ -> PrecDef +83: PrecDef+ -> PrecDef+ PrecDef +84: PrecDef* -> PrecDef+ +85: PrecDef* -> +86: caret? -> caret +87: caret? -> +88: TerminalSetItem+ -> TerminalSetItem +89: TerminalSetItem+ -> TerminalSetItem+ TerminalSetItem +90: TerminalSetItem* -> TerminalSetItem+ +91: TerminalSetItem* -> +92: Pattern+ -> Pattern +93: Pattern+ -> Pattern+ Pattern +94: Pattern* -> Pattern+ +95: Pattern* -> +96: $sep(Pattern*, pipe, +) -> Pattern* +97: $sep(Pattern*, pipe, +) -> $sep(Pattern*, pipe, +) pipe Pattern* +98: comma? -> comma +99: comma? -> +100: [^semicolon] -> ident +101: [^semicolon] -> colon +102: [^semicolon] -> pipe +103: [^semicolon] -> percent +104: [^semicolon] -> equal +105: [^semicolon] -> plus +106: [^semicolon] -> star +107: [^semicolon] -> question +108: [^semicolon] -> caret +109: [^semicolon] -> minus +110: [^semicolon] -> exclamation +111: [^semicolon] -> dot +112: [^semicolon] -> dollar +113: [^semicolon] -> comma +114: [^semicolon] -> int_literal +115: [^semicolon] -> byte_literal +116: [^semicolon] -> byte_str_literal +117: [^semicolon] -> char_literal +118: [^semicolon] -> str_literal +119: [^semicolon] -> [other_literal, ] +120: [^semicolon] -> parengroup +121: [^semicolon] -> bracegroup +122: [^semicolon] -> lparen +123: [^semicolon] -> rparen +124: [^semicolon] -> lbracket +125: [^semicolon] -> rbracket +126: [^semicolon] -> left +127: [^semicolon] -> right +128: [^semicolon] -> token +129: [^semicolon] -> start +130: [^semicolon] -> tokentype +131: [^semicolon] -> userdata +132: [^semicolon] -> errortype +133: [^semicolon] -> moduleprefix +134: [^semicolon] -> lalr +135: [^semicolon] -> glr +136: [^semicolon] -> prec +137: [^semicolon] -> precedence +138: [^semicolon] -> nooptim +139: [^semicolon] -> dprec +140: [^semicolon] -> location +141: [^semicolon]+ -> [^semicolon] +142: [^semicolon]+ -> [^semicolon]+ [^semicolon] +143: IdentOrLiteral+ -> IdentOrLiteral +144: IdentOrLiteral+ -> IdentOrLiteral+ IdentOrLiteral +145: GrammarLine+ -> GrammarLine +146: GrammarLine+ -> GrammarLine GrammarLine+ +147: Augmented -> Grammar eof */ // =============================Generated Codes Begin============================== @@ -192,12 +189,8 @@ pub type GrammarRule = ::rusty_lr_core::rule::ProductionRule; /// type alias for DFA state #[allow(non_camel_case_types, dead_code)] -pub type GrammarState = ::rusty_lr_core::parser::state::SparseState< - GrammarTerminalClasses, - GrammarNonTerminals, - u8, - u8, ->; +pub type GrammarState = + ::rusty_lr_core::parser::state::DenseState; /// type alias for `ParseError` #[allow(non_camel_case_types, dead_code)] pub type GrammarParseError = ::rusty_lr_core::parser::deterministic::ParseError< @@ -252,7 +245,6 @@ pub enum GrammarTerminalClasses { prec, precedence, nooptim, - dense, dprec, location, semicolon, @@ -268,10 +260,10 @@ impl GrammarTerminalClasses { #[inline] pub fn from_usize(value: usize) -> Self { debug_assert!( - value < 45usize, + value < 44usize, "Terminal class index {} is out of bounds (max {})", value, - 45usize + 44usize ); unsafe { ::std::mem::transmute(value) } } @@ -316,7 +308,6 @@ impl ::rusty_lr_core::parser::terminalclass::TerminalClass for GrammarTerminalCl GrammarTerminalClasses::prec => "prec", GrammarTerminalClasses::precedence => "precedence", GrammarTerminalClasses::nooptim => "nooptim", - GrammarTerminalClasses::dense => "dense", GrammarTerminalClasses::dprec => "dprec", GrammarTerminalClasses::location => "location", GrammarTerminalClasses::semicolon => "semicolon", @@ -381,7 +372,6 @@ impl ::rusty_lr_core::parser::terminalclass::TerminalClass for GrammarTerminalCl Lexed::Prec(_) => GrammarTerminalClasses::prec, Lexed::Precedence(_) => GrammarTerminalClasses::precedence, Lexed::NoOptim(_) => GrammarTerminalClasses::nooptim, - Lexed::Dense(_) => GrammarTerminalClasses::dense, Lexed::DPrec(_) => GrammarTerminalClasses::dprec, Lexed::Location(_) => GrammarTerminalClasses::location, Lexed::Semicolon(_) => GrammarTerminalClasses::semicolon, @@ -4085,94 +4075,9 @@ impl GrammarDataStack { __data_stack.__stack.push(GrammarData::Empty); Ok(()) } - ///Directive -> percent dense semicolon - #[inline] - fn reduce_Directive_25( - __data_stack: &mut Self, - __location_stack: &mut Vec, - __push_data: bool, - shift: &mut bool, - lookahead: &::rusty_lr_core::TerminalSymbol, - data: &mut GrammarArgs, - __rustylr_location0: &mut Location, - ) -> Result<(), ::rusty_lr_core::DefaultReduceActionError> { - #[cfg(debug_assertions)] - { - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 0usize), Some(& GrammarData::Empty)) - ); - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 1usize), Some(& GrammarData::__terminals(_))) - ); - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 2usize), Some(& GrammarData::__terminals(_))) - ); - } - __location_stack.truncate(__location_stack.len() - 3); - __data_stack.__stack.pop(); - let mut dense = match __data_stack.__stack.pop().unwrap() { - GrammarData::__terminals(val) => val, - _ => unreachable!(), - }; - __data_stack.__stack.pop(); - { - data.dense = true; - }; - __data_stack.__stack.push(GrammarData::Empty); - Ok(()) - } - ///Directive -> percent dense error semicolon - #[inline] - fn reduce_Directive_26( - __data_stack: &mut Self, - __location_stack: &mut Vec, - __push_data: bool, - shift: &mut bool, - lookahead: &::rusty_lr_core::TerminalSymbol, - data: &mut GrammarArgs, - __rustylr_location0: &mut Location, - ) -> Result<(), ::rusty_lr_core::DefaultReduceActionError> { - #[cfg(debug_assertions)] - { - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 0usize), Some(& GrammarData::Empty)) - ); - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 1usize), Some(& GrammarData::Empty)) - ); - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 2usize), Some(& GrammarData::__terminals(_))) - ); - debug_assert!( - matches!(__data_stack.__stack.get(__data_stack.__stack.len() - 1 - - 3usize), Some(& GrammarData::__terminals(_))) - ); - } - __location_stack.pop(); - let mut __rustylr_location_error = __location_stack.pop().unwrap(); - __location_stack.truncate(__location_stack.len() - 2); - __data_stack.__stack.truncate(__data_stack.__stack.len() - 4); - { - data.error_recovered - .push(RecoveredError { - message: "Expected semicolon".to_string(), - link: "https://github.com/ehwan/RustyLR/blob/main/SYNTAX.md#dense-parser-table" - .to_string(), - location: __rustylr_location_error, - }); - }; - __data_stack.__stack.push(GrammarData::Empty); - Ok(()) - } ///Directive -> percent location [^semicolon]+ semicolon #[inline] - fn reduce_Directive_27( + fn reduce_Directive_25( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -4223,7 +4128,7 @@ impl GrammarDataStack { } ///Directive -> percent location semicolon #[inline] - fn reduce_Directive_28( + fn reduce_Directive_26( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -4270,7 +4175,7 @@ impl GrammarDataStack { } ///Directive -> percent error semicolon #[inline] - fn reduce_Directive_29( + fn reduce_Directive_27( __data_stack: &mut Self, __location_stack: &mut Vec, __push_data: bool, @@ -6084,28 +5989,6 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { ) } 75usize => { - Self::reduce_Directive_28( - data_stack, - location_stack, - push_data, - shift, - lookahead, - user_data, - location0, - ) - } - 76usize => { - Self::reduce_Directive_29( - data_stack, - location_stack, - push_data, - shift, - lookahead, - user_data, - location0, - ) - } - 77usize => { Self::reduce_GrammarLine_0( data_stack, location_stack, @@ -6116,7 +5999,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 80usize => { + 78usize => { Self::reduce__TokenMappedPlus15_0( data_stack, location_stack, @@ -6127,7 +6010,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 81usize => { + 79usize => { Self::reduce__TokenMappedPlus15_1( data_stack, location_stack, @@ -6138,7 +6021,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 82usize => { + 80usize => { Self::reduce__TokenMappedStar16_0( data_stack, location_stack, @@ -6149,7 +6032,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 83usize => { + 81usize => { Self::reduce__TokenMappedStar16_1( data_stack, location_stack, @@ -6160,7 +6043,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 84usize => { + 82usize => { Self::reduce__PrecDefPlus17_0( data_stack, location_stack, @@ -6171,7 +6054,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 85usize => { + 83usize => { Self::reduce__PrecDefPlus17_1( data_stack, location_stack, @@ -6182,7 +6065,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 86usize => { + 84usize => { Self::reduce__PrecDefStar18_0( data_stack, location_stack, @@ -6193,7 +6076,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 87usize => { + 85usize => { Self::reduce__PrecDefStar18_1( data_stack, location_stack, @@ -6204,7 +6087,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 88usize => { + 86usize => { Self::reduce__caretQuestion19_0( data_stack, location_stack, @@ -6215,7 +6098,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 89usize => { + 87usize => { Self::reduce__caretQuestion19_1( data_stack, location_stack, @@ -6226,7 +6109,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 90usize => { + 88usize => { Self::reduce__TerminalSetItemPlus20_0( data_stack, location_stack, @@ -6237,7 +6120,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 91usize => { + 89usize => { Self::reduce__TerminalSetItemPlus20_1( data_stack, location_stack, @@ -6248,7 +6131,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 92usize => { + 90usize => { Self::reduce__TerminalSetItemStar21_0( data_stack, location_stack, @@ -6259,7 +6142,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 93usize => { + 91usize => { Self::reduce__TerminalSetItemStar21_1( data_stack, location_stack, @@ -6270,7 +6153,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 94usize => { + 92usize => { Self::reduce__PatternPlus22_0( data_stack, location_stack, @@ -6281,7 +6164,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 95usize => { + 93usize => { Self::reduce__PatternPlus22_1( data_stack, location_stack, @@ -6292,7 +6175,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 96usize => { + 94usize => { Self::reduce__PatternStar23_0( data_stack, location_stack, @@ -6303,7 +6186,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 97usize => { + 95usize => { Self::reduce__PatternStar23_1( data_stack, location_stack, @@ -6314,7 +6197,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 98usize => { + 96usize => { Self::reduce___PatternStar23SepPlus24_0( data_stack, location_stack, @@ -6325,7 +6208,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 99usize => { + 97usize => { Self::reduce___PatternStar23SepPlus24_1( data_stack, location_stack, @@ -6336,7 +6219,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 100usize => { + 98usize => { Self::reduce__commaQuestion25_0( data_stack, location_stack, @@ -6347,7 +6230,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 101usize => { + 99usize => { Self::reduce__commaQuestion25_1( data_stack, location_stack, @@ -6358,7 +6241,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 144usize => { + 141usize => { Self::reduce___TermSet26Plus27_0( data_stack, location_stack, @@ -6369,7 +6252,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 145usize => { + 142usize => { Self::reduce___TermSet26Plus27_1( data_stack, location_stack, @@ -6380,7 +6263,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 146usize => { + 143usize => { Self::reduce__IdentOrLiteralPlus28_0( data_stack, location_stack, @@ -6391,7 +6274,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 147usize => { + 144usize => { Self::reduce__IdentOrLiteralPlus28_1( data_stack, location_stack, @@ -6402,7 +6285,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 148usize => { + 145usize => { Self::reduce__GrammarLinePlus29_0( data_stack, location_stack, @@ -6413,7 +6296,7 @@ impl ::rusty_lr_core::parser::data_stack::DataStack for GrammarDataStack { location0, ) } - 149usize => { + 146usize => { Self::reduce__GrammarLinePlus29_1( data_stack, location_stack, @@ -6464,93 +6347,59 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { RULES .get_or_init(|| { static RULE_NAMES: &[u32] = &[ - 0u32, 1u32, 1u32, 2u32, 2u32, 3u32, 4u32, 4u32, 4u32, 4u32, 4u32, - 5u32, 5u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, 6u32, - 7u32, 7u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, - 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 8u32, 9u32, 9u32, - 10u32, 10u32, 10u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, - 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, - 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, 11u32, - 11u32, 11u32, 11u32, 12u32, 12u32, 13u32, 14u32, 14u32, 15u32, 15u32, - 16u32, 16u32, 17u32, 17u32, 18u32, 18u32, 19u32, 19u32, 20u32, 20u32, - 21u32, 21u32, 22u32, 22u32, 23u32, 23u32, 24u32, 24u32, 25u32, 25u32, - 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, - 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, - 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, - 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, - 26u32, 26u32, 27u32, 27u32, 28u32, 28u32, 29u32, + 0, 1, 1, 2, 2, 3, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, + 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 10, + 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 13, 14, + 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, + 23, 23, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 27, 27, 28, 28, + 29, ]; static RULE_PRECEDENCES: &[u32] = &[ - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 1u32, 1u32, 0u32, 1u32, 1u32, 0u32, 1u32, 1u32, - 0u32, 0u32, 0u32, 5u32, 5u32, 5u32, 5u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 1u32, 0u32, 5u32, 5u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, + 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; static RULE_TOKENS_DATA: &[u32] = &[ - 0u32, 3u32, 4u32, 5u32, 74u32, 30u32, 5u32, 6u32, 7u32, 7u32, 31u32, - 35u32, 19u32, 8u32, 62u32, 21u32, 8u32, 62u32, 86u32, 8u32, 70u32, - 20u32, 8u32, 70u32, 86u32, 8u32, 86u32, 17u32, 0u32, 10u32, 17u32, - 0u32, 0u32, 84u32, 0u32, 0u32, 84u32, 86u32, 26u32, 26u32, 84u32, - 26u32, 26u32, 84u32, 86u32, 22u32, 22u32, 84u32, 22u32, 22u32, 84u32, - 86u32, 38u32, 37u32, 41u32, 40u32, 14u32, 0u32, 17u32, 76u32, 17u32, - 78u32, 17u32, 80u32, 17u32, 82u32, 15u32, 34u32, 47u32, 36u32, 34u32, - 86u32, 36u32, 22u32, 24u32, 26u32, 28u32, 17u32, 84u32, 17u32, 16u32, - 0u32, 34u32, 17u32, 18u32, 17u32, 49u32, 36u32, 16u32, 0u32, 34u32, - 17u32, 18u32, 17u32, 18u32, 76u32, 36u32, 16u32, 0u32, 34u32, 17u32, - 18u32, 17u32, 18u32, 78u32, 36u32, 16u32, 0u32, 34u32, 17u32, 18u32, - 17u32, 86u32, 36u32, 16u32, 0u32, 34u32, 17u32, 18u32, 17u32, 18u32, - 86u32, 36u32, 32u32, 0u32, 22u32, 26u32, 8u32, 46u32, 0u32, 53u32, - 74u32, 8u32, 46u32, 0u32, 74u32, 8u32, 46u32, 86u32, 74u32, 8u32, - 48u32, 0u32, 74u32, 8u32, 48u32, 86u32, 74u32, 8u32, 50u32, 53u32, - 74u32, 8u32, 50u32, 74u32, 8u32, 52u32, 53u32, 74u32, 8u32, 52u32, - 74u32, 8u32, 42u32, 55u32, 74u32, 8u32, 42u32, 86u32, 74u32, 8u32, - 44u32, 55u32, 74u32, 8u32, 44u32, 86u32, 74u32, 8u32, 64u32, 55u32, - 74u32, 8u32, 64u32, 86u32, 74u32, 8u32, 54u32, 53u32, 74u32, 8u32, - 54u32, 74u32, 8u32, 56u32, 53u32, 74u32, 8u32, 56u32, 74u32, 8u32, - 60u32, 74u32, 8u32, 60u32, 86u32, 74u32, 8u32, 58u32, 74u32, 8u32, - 58u32, 86u32, 74u32, 8u32, 66u32, 74u32, 8u32, 66u32, 86u32, 74u32, - 8u32, 68u32, 74u32, 8u32, 68u32, 86u32, 74u32, 8u32, 72u32, 53u32, - 74u32, 8u32, 72u32, 74u32, 8u32, 86u32, 74u32, 1u32, 23u32, 57u32, - 11u32, 29u32, 11u32, 29u32, 9u32, 33u32, 9u32, 33u32, 12u32, 13u32, - 39u32, 13u32, 39u32, 17u32, 43u32, 17u32, 43u32, 45u32, 47u32, 6u32, - 45u32, 18u32, 0u32, 4u32, 6u32, 8u32, 10u32, 76u32, 78u32, 80u32, - 12u32, 84u32, 82u32, 14u32, 16u32, 18u32, 20u32, 22u32, 24u32, 26u32, - 28u32, 2u32, 30u32, 32u32, 34u32, 36u32, 38u32, 40u32, 42u32, 44u32, - 46u32, 48u32, 50u32, 52u32, 54u32, 56u32, 58u32, 60u32, 62u32, 64u32, - 66u32, 68u32, 70u32, 72u32, 51u32, 53u32, 51u32, 21u32, 55u32, 21u32, - 25u32, 25u32, 57u32, 27u32, 88u32, + 0, 3, 4, 5, 72, 30, 5, 6, 7, 7, 31, 35, 19, 8, 62, 21, 8, 62, 84, 8, + 68, 20, 8, 68, 84, 8, 84, 17, 0, 10, 17, 0, 0, 82, 0, 0, 82, 84, 26, + 26, 82, 26, 26, 82, 84, 22, 22, 82, 22, 22, 82, 84, 38, 37, 41, 40, + 14, 0, 17, 74, 17, 76, 17, 78, 17, 80, 15, 34, 47, 36, 34, 84, 36, + 22, 24, 26, 28, 17, 82, 17, 16, 0, 34, 17, 18, 17, 49, 36, 16, 0, 34, + 17, 18, 17, 18, 74, 36, 16, 0, 34, 17, 18, 17, 18, 76, 36, 16, 0, 34, + 17, 18, 17, 84, 36, 16, 0, 34, 17, 18, 17, 18, 84, 36, 32, 0, 22, 26, + 8, 46, 0, 53, 72, 8, 46, 0, 72, 8, 46, 84, 72, 8, 48, 0, 72, 8, 48, + 84, 72, 8, 50, 53, 72, 8, 50, 72, 8, 52, 53, 72, 8, 52, 72, 8, 42, + 55, 72, 8, 42, 84, 72, 8, 44, 55, 72, 8, 44, 84, 72, 8, 64, 55, 72, + 8, 64, 84, 72, 8, 54, 53, 72, 8, 54, 72, 8, 56, 53, 72, 8, 56, 72, 8, + 60, 72, 8, 60, 84, 72, 8, 58, 72, 8, 58, 84, 72, 8, 66, 72, 8, 66, + 84, 72, 8, 70, 53, 72, 8, 70, 72, 8, 84, 72, 1, 23, 57, 11, 29, 11, + 29, 9, 33, 9, 33, 12, 13, 39, 13, 39, 17, 43, 17, 43, 45, 47, 6, 45, + 18, 0, 4, 6, 8, 10, 74, 76, 78, 12, 82, 80, 14, 16, 18, 20, 22, 24, + 26, 28, 2, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, + 58, 60, 62, 64, 66, 68, 70, 51, 53, 51, 21, 55, 21, 25, 25, 57, 27, + 86, ]; static RULE_TOKENS_OFFSETS: &[u32] = &[ - 0u32, 5u32, 6u32, 6u32, 9u32, 10u32, 13u32, 16u32, 19u32, 22u32, - 25u32, 27u32, 28u32, 31u32, 32u32, 35u32, 38u32, 39u32, 42u32, 45u32, - 46u32, 49u32, 52u32, 56u32, 57u32, 58u32, 60u32, 62u32, 64u32, 66u32, - 67u32, 70u32, 73u32, 74u32, 75u32, 76u32, 77u32, 80u32, 88u32, 97u32, - 106u32, 114u32, 123u32, 124u32, 124u32, 125u32, 126u32, 127u32, - 132u32, 136u32, 140u32, 144u32, 148u32, 152u32, 155u32, 159u32, - 162u32, 166u32, 170u32, 174u32, 178u32, 182u32, 186u32, 190u32, - 193u32, 197u32, 200u32, 203u32, 207u32, 210u32, 214u32, 217u32, - 221u32, 224u32, 228u32, 232u32, 235u32, 238u32, 239u32, 240u32, - 241u32, 242u32, 244u32, 245u32, 245u32, 246u32, 248u32, 249u32, - 249u32, 250u32, 250u32, 251u32, 253u32, 254u32, 254u32, 255u32, - 257u32, 258u32, 258u32, 259u32, 262u32, 263u32, 263u32, 264u32, - 265u32, 266u32, 267u32, 268u32, 269u32, 270u32, 271u32, 272u32, - 273u32, 274u32, 275u32, 276u32, 277u32, 278u32, 279u32, 280u32, - 281u32, 282u32, 283u32, 284u32, 285u32, 286u32, 287u32, 288u32, - 289u32, 290u32, 291u32, 292u32, 293u32, 294u32, 295u32, 296u32, - 297u32, 298u32, 299u32, 300u32, 301u32, 302u32, 303u32, 304u32, - 305u32, 306u32, 308u32, 309u32, 311u32, 312u32, 314u32, 316u32, + 0, 5, 6, 6, 9, 10, 13, 16, 19, 22, 25, 27, 28, 31, 32, 35, 38, 39, + 42, 45, 46, 49, 52, 56, 57, 58, 60, 62, 64, 66, 67, 70, 73, 74, 75, + 76, 77, 80, 88, 97, 106, 114, 123, 124, 124, 125, 126, 127, 132, 136, + 140, 144, 148, 152, 155, 159, 162, 166, 170, 174, 178, 182, 186, 190, + 193, 197, 200, 203, 207, 210, 214, 217, 221, 225, 228, 231, 232, 233, + 234, 235, 237, 238, 238, 239, 241, 242, 242, 243, 243, 244, 246, 247, + 247, 248, 250, 251, 251, 252, 255, 256, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 300, 301, 303, 304, 306, + 308, ]; - let num_rules = 151usize; + let num_rules = 148usize; let mut rules = Vec::with_capacity(num_rules); for i in 0..num_rules { let name = GrammarNonTerminals::from_usize(RULE_NAMES[i] as usize); @@ -6606,734 +6455,357 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { STATES .get_or_init(|| { static SHIFT_TERM_DATA: &[u32] = &[ - 2147516416u32, 2150629380u32, 2147549199u32, 2147614722u32, - 2147647488u32, 2147745799u32, 2147778568u32, 2147876875u32, - 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, - 2148040723u32, 2147680261u32, 2147713024u32, 2147745799u32, - 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, - 2147975182u32, 2148007953u32, 2148040723u32, 2147811328u32, - 2147844113u32, 2147713024u32, 2147745799u32, 2147778568u32, - 2147876875u32, 2147909644u32, 2147942413u32, 2147975182u32, - 2148007953u32, 2148040723u32, 2147713024u32, 2147745799u32, - 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, - 2147975182u32, 2148007953u32, 2148040723u32, 2148794411u32, - 2148073478u32, 2148139008u32, 2148270091u32, 2148401165u32, - 2148171818u32, 2148204544u32, 2148237355u32, 2148302890u32, - 2148335627u32, 2148368427u32, 2148433962u32, 2148466701u32, - 2148499499u32, 2148139008u32, 2148270091u32, 2148401165u32, - 2148663316u32, 2148761609u32, 2148892710u32, 2148925479u32, - 2148958248u32, 2148991017u32, 2149023786u32, 2147713024u32, - 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, - 2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32, - 2148827154u32, 2148892710u32, 2148925479u32, 2148958248u32, - 2148991017u32, 2149023786u32, 2147713024u32, 2147745799u32, - 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, - 2147975182u32, 2148007953u32, 2148040723u32, 2148892710u32, - 2148925479u32, 2148958248u32, 2148991017u32, 2147713024u32, - 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, - 2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32, - 2148892710u32, 2148925479u32, 2148958248u32, 2148991017u32, - 2149023786u32, 2149220355u32, 2149285906u32, 2147713024u32, - 2147745799u32, 2147778568u32, 2147876875u32, 2147909644u32, - 2147942413u32, 2147975182u32, 2148007953u32, 2148040723u32, - 2149351433u32, 2148892710u32, 2148925479u32, 2148958248u32, - 2148991017u32, 2149023786u32, 2149580843u32, 2149384230u32, - 2149449767u32, 2149515307u32, 2149416978u32, 2149482514u32, - 2149548050u32, 2149613586u32, 2149679122u32, 2148892710u32, - 2148925479u32, 2148958248u32, 2148991017u32, 2149023786u32, - 2149777411u32, 3080229u32, 2147647488u32, 2147745799u32, - 2147778568u32, 2147876875u32, 2147909644u32, 2147942413u32, - 2147975182u32, 2148007953u32, 2148040723u32, 2148892710u32, - 2148925479u32, 2148958248u32, 2148991017u32, 2149023786u32, - 2147647488u32, 2147745799u32, 2147778568u32, 2147876875u32, - 2147909644u32, 2147942413u32, 2147975182u32, 2148007953u32, - 2148040723u32, 2150006788u32, 2150039583u32, 2150236195u32, - 2150334507u32, 2150072320u32, 2150105099u32, 2150137869u32, - 2150170667u32, 2150268938u32, 2150301739u32, 2150006788u32, - 2150498320u32, 2150662165u32, 2150891542u32, 2151055383u32, - 2151350296u32, 2151514137u32, 2151645210u32, 2151776283u32, - 2151907356u32, 2152038429u32, 2152169502u32, 2152300576u32, - 2152464417u32, 2152595490u32, 2152726564u32, 2152857643u32, - 2150072320u32, 2150105099u32, 2150137869u32, 2150694955u32, - 3244069u32, 2150072320u32, 2150105099u32, 2150137869u32, 3342373u32, - 2150072320u32, 2150105099u32, 2150137869u32, 2150924331u32, - 3473445u32, 2150072320u32, 2150105099u32, 2150137869u32, 3538981u32, - 2151088128u32, 2151284779u32, 2151153664u32, 2151153665u32, - 2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32, - 2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32, - 2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32, - 2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32, - 2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32, - 2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32, - 2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32, - 2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32, - 2151153698u32, 2151153699u32, 2151153700u32, 3637285u32, - 2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32, - 2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32, - 2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32, - 2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32, - 2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32, - 2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32, - 2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32, - 2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32, - 2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32, - 2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32, - 2151252003u32, 2151252004u32, 3735589u32, 2151252006u32, - 2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32, - 3833893u32, 2151383040u32, 2151448619u32, 3932197u32, 3997733u32, - 2151153664u32, 2151153665u32, 2151153666u32, 2151153667u32, - 2151153668u32, 2151153669u32, 2151153670u32, 2151153671u32, - 2151153672u32, 2151153673u32, 2151153674u32, 2151153675u32, - 2151153676u32, 2151153677u32, 2151153678u32, 2151153679u32, - 2151153680u32, 2151153681u32, 2151153682u32, 2151153683u32, - 2151153684u32, 2151153685u32, 2151153686u32, 2151153687u32, - 2151153688u32, 2151153689u32, 2151153690u32, 2151153691u32, - 2151153692u32, 2151153693u32, 2151153694u32, 2151153695u32, - 2151153696u32, 2151153697u32, 2151153698u32, 2151153699u32, - 2151153700u32, 4063269u32, 2151153702u32, 2151153703u32, - 2151153704u32, 2151153705u32, 2151153706u32, 2151251968u32, - 2151251969u32, 2151251970u32, 2151251971u32, 2151251972u32, - 2151251973u32, 2151251974u32, 2151251975u32, 2151251976u32, - 2151251977u32, 2151251978u32, 2151251979u32, 2151251980u32, - 2151251981u32, 2151251982u32, 2151251983u32, 2151251984u32, - 2151251985u32, 2151251986u32, 2151251987u32, 2151251988u32, - 2151251989u32, 2151251990u32, 2151251991u32, 2151251992u32, - 2151251993u32, 2151251994u32, 2151251995u32, 2151251996u32, - 2151251997u32, 2151251998u32, 2151251999u32, 2151252000u32, - 2151252001u32, 2151252002u32, 2151252003u32, 2151252004u32, - 4128805u32, 2151252006u32, 2151252007u32, 2151252008u32, - 2151252009u32, 2151252010u32, 2151153664u32, 2151153665u32, - 2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32, - 2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32, - 2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32, - 2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32, - 2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32, - 2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32, - 2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32, - 2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32, - 2151153698u32, 2151153699u32, 2151153700u32, 4194341u32, - 2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32, - 2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32, - 2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32, - 2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32, - 2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32, - 2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32, - 2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32, - 2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32, - 2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32, - 2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32, - 2151252003u32, 2151252004u32, 4259877u32, 2151252006u32, - 2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32, - 2151153664u32, 2151153665u32, 2151153666u32, 2151153667u32, - 2151153668u32, 2151153669u32, 2151153670u32, 2151153671u32, - 2151153672u32, 2151153673u32, 2151153674u32, 2151153675u32, - 2151153676u32, 2151153677u32, 2151153678u32, 2151153679u32, - 2151153680u32, 2151153681u32, 2151153682u32, 2151153683u32, - 2151153684u32, 2151153685u32, 2151153686u32, 2151153687u32, - 2151153688u32, 2151153689u32, 2151153690u32, 2151153691u32, - 2151153692u32, 2151153693u32, 2151153694u32, 2151153695u32, - 2151153696u32, 2151153697u32, 2151153698u32, 2151153699u32, - 2151153700u32, 4325413u32, 2151153702u32, 2151153703u32, - 2151153704u32, 2151153705u32, 2151153706u32, 2151251968u32, - 2151251969u32, 2151251970u32, 2151251971u32, 2151251972u32, - 2151251973u32, 2151251974u32, 2151251975u32, 2151251976u32, - 2151251977u32, 2151251978u32, 2151251979u32, 2151251980u32, - 2151251981u32, 2151251982u32, 2151251983u32, 2151251984u32, - 2151251985u32, 2151251986u32, 2151251987u32, 2151251988u32, - 2151251989u32, 2151251990u32, 2151251991u32, 2151251992u32, - 2151251993u32, 2151251994u32, 2151251995u32, 2151251996u32, - 2151251997u32, 2151251998u32, 2151251999u32, 2151252000u32, - 2151252001u32, 2151252002u32, 2151252003u32, 2151252004u32, - 4390949u32, 2151252006u32, 2151252007u32, 2151252008u32, - 2151252009u32, 2151252010u32, 2151153664u32, 2151153665u32, - 2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32, - 2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32, - 2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32, - 2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32, - 2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32, - 2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32, - 2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32, - 2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32, - 2151153698u32, 2151153699u32, 2151153700u32, 4456485u32, - 2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32, - 2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32, - 2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32, - 2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32, - 2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32, - 2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32, - 2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32, - 2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32, - 2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32, - 2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32, - 2151252003u32, 2151252004u32, 4522021u32, 2151252006u32, - 2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32, - 4587557u32, 2152103979u32, 4653093u32, 4718629u32, 2152235051u32, - 4784165u32, 2150072320u32, 2150105099u32, 2150137869u32, - 2152333355u32, 4882469u32, 2150072320u32, 2150105099u32, - 2150137869u32, 4948005u32, 5013541u32, 2152529963u32, 5079077u32, - 5144613u32, 2152661035u32, 5210149u32, 2151153664u32, 2151153665u32, - 2151153666u32, 2151153667u32, 2151153668u32, 2151153669u32, - 2151153670u32, 2151153671u32, 2151153672u32, 2151153673u32, - 2151153674u32, 2151153675u32, 2151153676u32, 2151153677u32, - 2151153678u32, 2151153679u32, 2151153680u32, 2151153681u32, - 2151153682u32, 2151153683u32, 2151153684u32, 2151153685u32, - 2151153686u32, 2151153687u32, 2151153688u32, 2151153689u32, - 2151153690u32, 2151153691u32, 2151153692u32, 2151153693u32, - 2151153694u32, 2151153695u32, 2151153696u32, 2151153697u32, - 2151153698u32, 2151153699u32, 2151153700u32, 5275685u32, - 2151153702u32, 2151153703u32, 2151153704u32, 2151153705u32, - 2151153706u32, 2151251968u32, 2151251969u32, 2151251970u32, - 2151251971u32, 2151251972u32, 2151251973u32, 2151251974u32, - 2151251975u32, 2151251976u32, 2151251977u32, 2151251978u32, - 2151251979u32, 2151251980u32, 2151251981u32, 2151251982u32, - 2151251983u32, 2151251984u32, 2151251985u32, 2151251986u32, - 2151251987u32, 2151251988u32, 2151251989u32, 2151251990u32, - 2151251991u32, 2151251992u32, 2151251993u32, 2151251994u32, - 2151251995u32, 2151251996u32, 2151251997u32, 2151251998u32, - 2151251999u32, 2151252000u32, 2151252001u32, 2151252002u32, - 2151252003u32, 2151252004u32, 5341221u32, 2151252006u32, - 2151252007u32, 2151252008u32, 2151252009u32, 2151252010u32, - 5406757u32, 2147516416u32, 2150629380u32, 2153054252u32, + 2147516416, 2150629380, 2147549199, 2147614722, 2147647488, + 2147745799, 2147778568, 2147876875, 2147909644, 2147942413, + 2147975182, 2148007953, 2148040723, 2147680261, 2147713024, + 2147745799, 2147778568, 2147876875, 2147909644, 2147942413, + 2147975182, 2148007953, 2148040723, 2147811328, 2147844113, + 2147713024, 2147745799, 2147778568, 2147876875, 2147909644, + 2147942413, 2147975182, 2148007953, 2148040723, 2147713024, + 2147745799, 2147778568, 2147876875, 2147909644, 2147942413, + 2147975182, 2148007953, 2148040723, 2148794410, 2148073478, + 2148139008, 2148270091, 2148401165, 2148171817, 2148204544, + 2148237354, 2148302889, 2148335627, 2148368426, 2148433961, + 2148466701, 2148499498, 2148139008, 2148270091, 2148401165, + 2148663316, 2148761609, 2148892709, 2148925478, 2148958247, + 2148991016, 2149023785, 2147713024, 2147745799, 2147778568, + 2147876875, 2147909644, 2147942413, 2147975182, 2148007953, + 2148040723, 2148827154, 2148892709, 2148925478, 2148958247, + 2148991016, 2149023785, 2147713024, 2147745799, 2147778568, + 2147876875, 2147909644, 2147942413, 2147975182, 2148007953, + 2148040723, 2148892709, 2148925478, 2148958247, 2148991016, + 2147713024, 2147745799, 2147778568, 2147876875, 2147909644, + 2147942413, 2147975182, 2148007953, 2148040723, 2148892709, + 2148925478, 2148958247, 2148991016, 2149023785, 2149220355, + 2149285906, 2147713024, 2147745799, 2147778568, 2147876875, + 2147909644, 2147942413, 2147975182, 2148007953, 2148040723, + 2149351433, 2148892709, 2148925478, 2148958247, 2148991016, + 2149023785, 2149580842, 2149384229, 2149449766, 2149515306, + 2149416978, 2149482514, 2149548050, 2149613586, 2149679122, + 2148892709, 2148925478, 2148958247, 2148991016, 2149023785, + 2149777411, 3080228, 2147647488, 2147745799, 2147778568, 2147876875, + 2147909644, 2147942413, 2147975182, 2148007953, 2148040723, + 2148892709, 2148925478, 2148958247, 2148991016, 2149023785, + 2147647488, 2147745799, 2147778568, 2147876875, 2147909644, + 2147942413, 2147975182, 2148007953, 2148040723, 2150006788, + 2150039583, 2150236194, 2150334506, 2150072320, 2150105099, + 2150137869, 2150170666, 2150268938, 2150301738, 2150006788, + 2150498320, 2150662165, 2150891542, 2151055383, 2151350296, + 2151514137, 2151645210, 2151776283, 2151907356, 2152038429, + 2152169502, 2152300576, 2152464417, 2152595491, 2152726570, + 2150072320, 2150105099, 2150137869, 2150694954, 3244068, 2150072320, + 2150105099, 2150137869, 3342372, 2150072320, 2150105099, 2150137869, + 2150924330, 3473444, 2150072320, 2150105099, 2150137869, 3538980, + 2151088128, 2151284778, 2151153664, 2151153665, 2151153666, + 2151153667, 2151153668, 2151153669, 2151153670, 2151153671, + 2151153672, 2151153673, 2151153674, 2151153675, 2151153676, + 2151153677, 2151153678, 2151153679, 2151153680, 2151153681, + 2151153682, 2151153683, 2151153684, 2151153685, 2151153686, + 2151153687, 2151153688, 2151153689, 2151153690, 2151153691, + 2151153692, 2151153693, 2151153694, 2151153695, 2151153696, + 2151153697, 2151153698, 2151153699, 3637284, 2151153701, 2151153702, + 2151153703, 2151153704, 2151153705, 2151251968, 2151251969, + 2151251970, 2151251971, 2151251972, 2151251973, 2151251974, + 2151251975, 2151251976, 2151251977, 2151251978, 2151251979, + 2151251980, 2151251981, 2151251982, 2151251983, 2151251984, + 2151251985, 2151251986, 2151251987, 2151251988, 2151251989, + 2151251990, 2151251991, 2151251992, 2151251993, 2151251994, + 2151251995, 2151251996, 2151251997, 2151251998, 2151251999, + 2151252000, 2151252001, 2151252002, 2151252003, 3735588, 2151252005, + 2151252006, 2151252007, 2151252008, 2151252009, 3833892, 2151383040, + 2151448618, 3932196, 3997732, 2151153664, 2151153665, 2151153666, + 2151153667, 2151153668, 2151153669, 2151153670, 2151153671, + 2151153672, 2151153673, 2151153674, 2151153675, 2151153676, + 2151153677, 2151153678, 2151153679, 2151153680, 2151153681, + 2151153682, 2151153683, 2151153684, 2151153685, 2151153686, + 2151153687, 2151153688, 2151153689, 2151153690, 2151153691, + 2151153692, 2151153693, 2151153694, 2151153695, 2151153696, + 2151153697, 2151153698, 2151153699, 4063268, 2151153701, 2151153702, + 2151153703, 2151153704, 2151153705, 2151251968, 2151251969, + 2151251970, 2151251971, 2151251972, 2151251973, 2151251974, + 2151251975, 2151251976, 2151251977, 2151251978, 2151251979, + 2151251980, 2151251981, 2151251982, 2151251983, 2151251984, + 2151251985, 2151251986, 2151251987, 2151251988, 2151251989, + 2151251990, 2151251991, 2151251992, 2151251993, 2151251994, + 2151251995, 2151251996, 2151251997, 2151251998, 2151251999, + 2151252000, 2151252001, 2151252002, 2151252003, 4128804, 2151252005, + 2151252006, 2151252007, 2151252008, 2151252009, 2151153664, + 2151153665, 2151153666, 2151153667, 2151153668, 2151153669, + 2151153670, 2151153671, 2151153672, 2151153673, 2151153674, + 2151153675, 2151153676, 2151153677, 2151153678, 2151153679, + 2151153680, 2151153681, 2151153682, 2151153683, 2151153684, + 2151153685, 2151153686, 2151153687, 2151153688, 2151153689, + 2151153690, 2151153691, 2151153692, 2151153693, 2151153694, + 2151153695, 2151153696, 2151153697, 2151153698, 2151153699, 4194340, + 2151153701, 2151153702, 2151153703, 2151153704, 2151153705, + 2151251968, 2151251969, 2151251970, 2151251971, 2151251972, + 2151251973, 2151251974, 2151251975, 2151251976, 2151251977, + 2151251978, 2151251979, 2151251980, 2151251981, 2151251982, + 2151251983, 2151251984, 2151251985, 2151251986, 2151251987, + 2151251988, 2151251989, 2151251990, 2151251991, 2151251992, + 2151251993, 2151251994, 2151251995, 2151251996, 2151251997, + 2151251998, 2151251999, 2151252000, 2151252001, 2151252002, + 2151252003, 4259876, 2151252005, 2151252006, 2151252007, 2151252008, + 2151252009, 2151153664, 2151153665, 2151153666, 2151153667, + 2151153668, 2151153669, 2151153670, 2151153671, 2151153672, + 2151153673, 2151153674, 2151153675, 2151153676, 2151153677, + 2151153678, 2151153679, 2151153680, 2151153681, 2151153682, + 2151153683, 2151153684, 2151153685, 2151153686, 2151153687, + 2151153688, 2151153689, 2151153690, 2151153691, 2151153692, + 2151153693, 2151153694, 2151153695, 2151153696, 2151153697, + 2151153698, 2151153699, 4325412, 2151153701, 2151153702, 2151153703, + 2151153704, 2151153705, 2151251968, 2151251969, 2151251970, + 2151251971, 2151251972, 2151251973, 2151251974, 2151251975, + 2151251976, 2151251977, 2151251978, 2151251979, 2151251980, + 2151251981, 2151251982, 2151251983, 2151251984, 2151251985, + 2151251986, 2151251987, 2151251988, 2151251989, 2151251990, + 2151251991, 2151251992, 2151251993, 2151251994, 2151251995, + 2151251996, 2151251997, 2151251998, 2151251999, 2151252000, + 2151252001, 2151252002, 2151252003, 4390948, 2151252005, 2151252006, + 2151252007, 2151252008, 2151252009, 2151153664, 2151153665, + 2151153666, 2151153667, 2151153668, 2151153669, 2151153670, + 2151153671, 2151153672, 2151153673, 2151153674, 2151153675, + 2151153676, 2151153677, 2151153678, 2151153679, 2151153680, + 2151153681, 2151153682, 2151153683, 2151153684, 2151153685, + 2151153686, 2151153687, 2151153688, 2151153689, 2151153690, + 2151153691, 2151153692, 2151153693, 2151153694, 2151153695, + 2151153696, 2151153697, 2151153698, 2151153699, 4456484, 2151153701, + 2151153702, 2151153703, 2151153704, 2151153705, 2151251968, + 2151251969, 2151251970, 2151251971, 2151251972, 2151251973, + 2151251974, 2151251975, 2151251976, 2151251977, 2151251978, + 2151251979, 2151251980, 2151251981, 2151251982, 2151251983, + 2151251984, 2151251985, 2151251986, 2151251987, 2151251988, + 2151251989, 2151251990, 2151251991, 2151251992, 2151251993, + 2151251994, 2151251995, 2151251996, 2151251997, 2151251998, + 2151251999, 2151252000, 2151252001, 2151252002, 2151252003, 4522020, + 2151252005, 2151252006, 2151252007, 2151252008, 2151252009, 4587556, + 2152103978, 4653092, 4718628, 2152235050, 4784164, 2150072320, + 2150105099, 2150137869, 2152333354, 4882468, 2150072320, 2150105099, + 2150137869, 4948004, 5013540, 2152529962, 5079076, 2151153664, + 2151153665, 2151153666, 2151153667, 2151153668, 2151153669, + 2151153670, 2151153671, 2151153672, 2151153673, 2151153674, + 2151153675, 2151153676, 2151153677, 2151153678, 2151153679, + 2151153680, 2151153681, 2151153682, 2151153683, 2151153684, + 2151153685, 2151153686, 2151153687, 2151153688, 2151153689, + 2151153690, 2151153691, 2151153692, 2151153693, 2151153694, + 2151153695, 2151153696, 2151153697, 2151153698, 2151153699, 5144612, + 2151153701, 2151153702, 2151153703, 2151153704, 2151153705, + 2151251968, 2151251969, 2151251970, 2151251971, 2151251972, + 2151251973, 2151251974, 2151251975, 2151251976, 2151251977, + 2151251978, 2151251979, 2151251980, 2151251981, 2151251982, + 2151251983, 2151251984, 2151251985, 2151251986, 2151251987, + 2151251988, 2151251989, 2151251990, 2151251991, 2151251992, + 2151251993, 2151251994, 2151251995, 2151251996, 2151251997, + 2151251998, 2151251999, 2151252000, 2151252001, 2151252002, + 2151252003, 5210148, 2151252005, 2151252006, 2151252007, 2151252008, + 2151252009, 5275684, 2147516416, 2150629380, 2152923179, ]; static SHIFT_TERM_OFFSETS: &[u32] = &[ - 0u32, 2u32, 3u32, 3u32, 4u32, 13u32, 14u32, 23u32, 23u32, 23u32, - 24u32, 25u32, 34u32, 34u32, 34u32, 34u32, 34u32, 44u32, 45u32, 45u32, - 48u32, 49u32, 51u32, 51u32, 51u32, 52u32, 54u32, 54u32, 54u32, 55u32, - 57u32, 57u32, 57u32, 57u32, 60u32, 60u32, 61u32, 61u32, 61u32, 67u32, - 76u32, 77u32, 77u32, 82u32, 82u32, 82u32, 82u32, 82u32, 91u32, 95u32, - 104u32, 109u32, 109u32, 111u32, 120u32, 120u32, 120u32, 127u32, - 130u32, 131u32, 131u32, 132u32, 132u32, 133u32, 133u32, 134u32, - 134u32, 135u32, 135u32, 140u32, 142u32, 151u32, 151u32, 151u32, - 156u32, 165u32, 165u32, 166u32, 169u32, 173u32, 173u32, 173u32, - 173u32, 173u32, 173u32, 175u32, 175u32, 175u32, 175u32, 175u32, - 176u32, 176u32, 177u32, 177u32, 177u32, 177u32, 177u32, 192u32, - 196u32, 197u32, 197u32, 197u32, 201u32, 201u32, 201u32, 205u32, - 206u32, 206u32, 210u32, 210u32, 212u32, 255u32, 255u32, 255u32, - 298u32, 298u32, 298u32, 299u32, 299u32, 301u32, 302u32, 302u32, - 303u32, 303u32, 346u32, 346u32, 389u32, 389u32, 432u32, 432u32, - 475u32, 475u32, 518u32, 518u32, 561u32, 561u32, 604u32, 604u32, - 647u32, 647u32, 649u32, 649u32, 650u32, 650u32, 652u32, 652u32, - 653u32, 653u32, 657u32, 658u32, 658u32, 662u32, 662u32, 664u32, - 664u32, 665u32, 665u32, 667u32, 667u32, 668u32, 668u32, 711u32, - 711u32, 754u32, 754u32, 755u32, 755u32, 755u32, 757u32, 757u32, - 758u32, 758u32, + 0, 2, 3, 3, 4, 13, 14, 23, 23, 23, 24, 25, 34, 34, 34, 34, 34, 44, + 45, 45, 48, 49, 51, 51, 51, 52, 54, 54, 54, 55, 57, 57, 57, 57, 60, + 60, 61, 61, 61, 67, 76, 77, 77, 82, 82, 82, 82, 82, 91, 95, 104, 109, + 109, 111, 120, 120, 120, 127, 130, 131, 131, 132, 132, 133, 133, 134, + 134, 135, 135, 140, 142, 151, 151, 151, 156, 165, 165, 166, 169, 173, + 173, 173, 173, 173, 173, 175, 175, 175, 175, 175, 176, 176, 177, 177, + 177, 177, 177, 191, 195, 196, 196, 196, 200, 200, 200, 204, 205, 205, + 209, 209, 211, 253, 253, 253, 295, 295, 295, 296, 296, 298, 299, 299, + 300, 300, 342, 342, 384, 384, 426, 426, 468, 468, 510, 510, 552, 552, + 594, 594, 636, 636, 638, 638, 639, 639, 641, 641, 642, 642, 646, 647, + 647, 651, 651, 653, 653, 654, 654, 696, 696, 738, 738, 739, 739, 739, + 741, 741, 742, 742, ]; static SHIFT_NONTERM_DATA: &[u32] = &[ - 2152923136u32, 5472267u32, 2152955916u32, 2153021453u32, 5537820u32, - 2147581953u32, 2149744642u32, 2150596611u32, 2149842949u32, - 2148696071u32, 2149875720u32, 2149908494u32, 2149974031u32, - 2148696071u32, 2149711880u32, 2148696071u32, 2148728840u32, - 2148696071u32, 2148859912u32, 2149089301u32, 2149154838u32, - 2149187607u32, 2148106258u32, 2148532230u32, 2148565011u32, - 2148630548u32, 2148597766u32, 2148696071u32, 2149318664u32, - 2148696071u32, 2149056520u32, 2148696071u32, 2149122056u32, - 2148696071u32, 2148859912u32, 2149089301u32, 2149253142u32, - 2149646360u32, 2149810179u32, 2149842949u32, 2148696071u32, - 2149875720u32, 2149908494u32, 2149974031u32, 2149941253u32, - 2148696071u32, 2149875720u32, 2150367236u32, 2150400016u32, - 2150465553u32, 2150203402u32, 2150432772u32, 2150531081u32, - 2150760458u32, 2150793243u32, 2150858762u32, 2150760458u32, - 2150989851u32, 2150858762u32, 2151153689u32, 2151186458u32, - 2151251993u32, 2151153689u32, 2151579674u32, 2151251993u32, - 2151153689u32, 2151710746u32, 2151251993u32, 2151153689u32, - 2151841818u32, 2151251993u32, 2151153689u32, 2151972890u32, - 2151251993u32, 2150760458u32, 2152398875u32, 2150858762u32, - 2151153689u32, 2152792090u32, 2151251993u32, 2152923136u32, - 5472267u32, 2152955916u32, 2152988700u32, + 2152792064, 5341195, 2152824844, 2152890381, 5406748, 2147581953, + 2149744642, 2150596611, 2149842949, 2148696071, 2149875720, + 2149908494, 2149974031, 2148696071, 2149711880, 2148696071, + 2148728840, 2148696071, 2148859912, 2149089301, 2149154838, + 2149187607, 2148106258, 2148532230, 2148565011, 2148630548, + 2148597766, 2148696071, 2149318664, 2148696071, 2149056520, + 2148696071, 2149122056, 2148696071, 2148859912, 2149089301, + 2149253142, 2149646360, 2149810179, 2149842949, 2148696071, + 2149875720, 2149908494, 2149974031, 2149941253, 2148696071, + 2149875720, 2150367236, 2150400016, 2150465553, 2150203402, + 2150432772, 2150531081, 2150760458, 2150793243, 2150858762, + 2150760458, 2150989851, 2150858762, 2151153689, 2151186458, + 2151251993, 2151153689, 2151579674, 2151251993, 2151153689, + 2151710746, 2151251993, 2151153689, 2151841818, 2151251993, + 2151153689, 2151972890, 2151251993, 2150760458, 2152398875, + 2150858762, 2151153689, 2152661018, 2151251993, 2152792064, 5341195, + 2152824844, 2152857628, ]; static SHIFT_NONTERM_OFFSETS: &[u32] = &[ - 0u32, 5u32, 6u32, 6u32, 6u32, 13u32, 13u32, 15u32, 15u32, 15u32, - 15u32, 15u32, 17u32, 17u32, 17u32, 17u32, 17u32, 22u32, 23u32, 23u32, - 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, 26u32, - 26u32, 26u32, 26u32, 26u32, 27u32, 27u32, 27u32, 27u32, 27u32, 27u32, - 29u32, 29u32, 29u32, 29u32, 29u32, 29u32, 29u32, 29u32, 31u32, 31u32, - 33u32, 33u32, 33u32, 33u32, 37u32, 37u32, 37u32, 38u32, 38u32, 38u32, - 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, 38u32, - 38u32, 44u32, 44u32, 44u32, 44u32, 47u32, 47u32, 50u32, 50u32, 51u32, - 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, 51u32, - 52u32, 52u32, 53u32, 53u32, 53u32, 53u32, 53u32, 53u32, 55u32, 55u32, - 55u32, 55u32, 56u32, 56u32, 56u32, 58u32, 58u32, 58u32, 59u32, 59u32, - 59u32, 61u32, 61u32, 61u32, 62u32, 62u32, 62u32, 62u32, 62u32, 62u32, - 62u32, 62u32, 62u32, 62u32, 64u32, 64u32, 65u32, 65u32, 67u32, 67u32, - 68u32, 68u32, 70u32, 70u32, 71u32, 71u32, 73u32, 73u32, 74u32, 74u32, - 74u32, 74u32, 74u32, 74u32, 74u32, 74u32, 74u32, 74u32, 76u32, 76u32, - 76u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, 77u32, - 77u32, 79u32, 79u32, 80u32, 80u32, 80u32, 80u32, 80u32, 84u32, 84u32, - 84u32, 84u32, + 0, 5, 6, 6, 6, 13, 13, 15, 15, 15, 15, 15, 17, 17, 17, 17, 17, 22, + 23, 23, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, + 27, 27, 27, 27, 27, 29, 29, 29, 29, 29, 29, 29, 29, 31, 31, 33, 33, + 33, 33, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 44, 44, 44, 44, 47, 47, 50, 50, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 52, 52, 53, 53, 53, 53, 53, 53, 55, 55, 55, 55, 56, + 56, 56, 58, 58, 58, 59, 59, 59, 61, 61, 61, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 64, 64, 65, 65, 67, 67, 68, 68, 70, 70, 71, 71, 73, + 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 77, 77, 77, + 77, 77, 77, 79, 79, 80, 80, 80, 80, 80, 84, 84, 84, 84, ]; static REDUCE_DATA: &[u32] = &[ - 2u32, 1u32, 2u32, 2u32, 1u32, 1u32, 3u32, 1u32, 83u32, 4u32, 1u32, - 83u32, 16u32, 1u32, 83u32, 37u32, 1u32, 83u32, 0u32, 1u32, 24u32, - 3u32, 1u32, 24u32, 4u32, 1u32, 24u32, 7u32, 1u32, 24u32, 8u32, 1u32, - 24u32, 11u32, 1u32, 24u32, 12u32, 1u32, 24u32, 13u32, 1u32, 24u32, - 14u32, 1u32, 24u32, 16u32, 1u32, 24u32, 17u32, 1u32, 24u32, 19u32, - 1u32, 24u32, 37u32, 1u32, 24u32, 38u32, 1u32, 24u32, 39u32, 1u32, - 24u32, 40u32, 1u32, 24u32, 41u32, 1u32, 24u32, 42u32, 1u32, 24u32, - 0u32, 1u32, 24u32, 3u32, 1u32, 24u32, 4u32, 1u32, 24u32, 7u32, 1u32, - 24u32, 8u32, 1u32, 24u32, 9u32, 1u32, 24u32, 11u32, 1u32, 24u32, - 12u32, 1u32, 24u32, 13u32, 1u32, 24u32, 14u32, 1u32, 24u32, 16u32, - 1u32, 24u32, 17u32, 1u32, 24u32, 18u32, 1u32, 24u32, 19u32, 1u32, - 24u32, 37u32, 1u32, 24u32, 38u32, 1u32, 24u32, 39u32, 1u32, 24u32, - 40u32, 1u32, 24u32, 41u32, 1u32, 24u32, 42u32, 1u32, 24u32, 43u32, - 1u32, 24u32, 0u32, 1u32, 23u32, 3u32, 1u32, 23u32, 4u32, 1u32, 23u32, - 7u32, 1u32, 23u32, 8u32, 1u32, 23u32, 9u32, 1u32, 23u32, 11u32, 1u32, - 23u32, 12u32, 1u32, 23u32, 13u32, 1u32, 23u32, 14u32, 1u32, 23u32, - 16u32, 1u32, 23u32, 17u32, 1u32, 23u32, 18u32, 1u32, 23u32, 19u32, - 1u32, 23u32, 37u32, 1u32, 23u32, 38u32, 1u32, 23u32, 39u32, 1u32, - 23u32, 40u32, 1u32, 23u32, 41u32, 1u32, 23u32, 42u32, 1u32, 23u32, - 43u32, 1u32, 23u32, 0u32, 1u32, 32u32, 3u32, 1u32, 32u32, 4u32, 1u32, - 32u32, 7u32, 1u32, 32u32, 8u32, 1u32, 32u32, 9u32, 1u32, 32u32, - 11u32, 1u32, 32u32, 12u32, 1u32, 32u32, 13u32, 1u32, 32u32, 14u32, - 1u32, 32u32, 16u32, 1u32, 32u32, 17u32, 1u32, 32u32, 18u32, 1u32, - 32u32, 19u32, 1u32, 32u32, 37u32, 1u32, 32u32, 38u32, 1u32, 32u32, - 39u32, 1u32, 32u32, 40u32, 1u32, 32u32, 41u32, 1u32, 32u32, 42u32, - 1u32, 32u32, 43u32, 1u32, 32u32, 0u32, 1u32, 33u32, 3u32, 1u32, - 33u32, 4u32, 1u32, 33u32, 7u32, 1u32, 33u32, 8u32, 1u32, 33u32, 9u32, - 1u32, 33u32, 11u32, 1u32, 33u32, 12u32, 1u32, 33u32, 13u32, 1u32, - 33u32, 14u32, 1u32, 33u32, 16u32, 1u32, 33u32, 17u32, 1u32, 33u32, - 18u32, 1u32, 33u32, 19u32, 1u32, 33u32, 37u32, 1u32, 33u32, 38u32, - 1u32, 33u32, 39u32, 1u32, 33u32, 40u32, 1u32, 33u32, 41u32, 1u32, - 33u32, 42u32, 1u32, 33u32, 43u32, 1u32, 33u32, 0u32, 1u32, 34u32, - 3u32, 1u32, 34u32, 4u32, 1u32, 34u32, 7u32, 1u32, 34u32, 8u32, 1u32, - 34u32, 9u32, 1u32, 34u32, 11u32, 1u32, 34u32, 12u32, 1u32, 34u32, - 13u32, 1u32, 34u32, 14u32, 1u32, 34u32, 16u32, 1u32, 34u32, 17u32, - 1u32, 34u32, 18u32, 1u32, 34u32, 19u32, 1u32, 34u32, 37u32, 1u32, - 34u32, 38u32, 1u32, 34u32, 39u32, 1u32, 34u32, 40u32, 1u32, 34u32, - 41u32, 1u32, 34u32, 42u32, 1u32, 34u32, 43u32, 1u32, 34u32, 0u32, - 1u32, 35u32, 3u32, 1u32, 35u32, 4u32, 1u32, 35u32, 7u32, 1u32, 35u32, - 8u32, 1u32, 35u32, 9u32, 1u32, 35u32, 11u32, 1u32, 35u32, 12u32, - 1u32, 35u32, 13u32, 1u32, 35u32, 14u32, 1u32, 35u32, 16u32, 1u32, - 35u32, 17u32, 1u32, 35u32, 18u32, 1u32, 35u32, 19u32, 1u32, 35u32, - 37u32, 1u32, 35u32, 38u32, 1u32, 35u32, 39u32, 1u32, 35u32, 40u32, - 1u32, 35u32, 41u32, 1u32, 35u32, 42u32, 1u32, 35u32, 43u32, 1u32, - 35u32, 3u32, 1u32, 97u32, 18u32, 1u32, 97u32, 0u32, 1u32, 89u32, - 11u32, 1u32, 89u32, 13u32, 1u32, 89u32, 20u32, 1u32, 89u32, 0u32, - 1u32, 88u32, 11u32, 1u32, 88u32, 13u32, 1u32, 88u32, 20u32, 1u32, - 88u32, 20u32, 1u32, 93u32, 0u32, 1u32, 13u32, 11u32, 1u32, 13u32, - 13u32, 1u32, 13u32, 20u32, 1u32, 13u32, 0u32, 1u32, 14u32, 11u32, - 1u32, 14u32, 13u32, 1u32, 14u32, 20u32, 1u32, 14u32, 0u32, 1u32, - 15u32, 11u32, 1u32, 15u32, 13u32, 1u32, 15u32, 20u32, 1u32, 15u32, - 0u32, 1u32, 19u32, 11u32, 1u32, 19u32, 13u32, 1u32, 19u32, 20u32, - 1u32, 19u32, 0u32, 1u32, 20u32, 11u32, 1u32, 20u32, 13u32, 1u32, - 20u32, 20u32, 1u32, 20u32, 0u32, 1u32, 21u32, 11u32, 1u32, 21u32, - 13u32, 1u32, 21u32, 20u32, 1u32, 21u32, 0u32, 1u32, 16u32, 11u32, - 1u32, 16u32, 13u32, 1u32, 16u32, 20u32, 1u32, 16u32, 0u32, 1u32, - 17u32, 11u32, 1u32, 17u32, 13u32, 1u32, 17u32, 20u32, 1u32, 17u32, - 0u32, 1u32, 18u32, 11u32, 1u32, 18u32, 13u32, 1u32, 18u32, 20u32, - 1u32, 18u32, 0u32, 1u32, 90u32, 11u32, 1u32, 90u32, 13u32, 1u32, - 90u32, 20u32, 1u32, 90u32, 20u32, 1u32, 92u32, 0u32, 1u32, 91u32, - 11u32, 1u32, 91u32, 13u32, 1u32, 91u32, 20u32, 1u32, 91u32, 0u32, - 1u32, 22u32, 3u32, 1u32, 22u32, 4u32, 1u32, 22u32, 7u32, 1u32, 22u32, - 8u32, 1u32, 22u32, 9u32, 1u32, 22u32, 11u32, 1u32, 22u32, 12u32, - 1u32, 22u32, 13u32, 1u32, 22u32, 14u32, 1u32, 22u32, 16u32, 1u32, - 22u32, 17u32, 1u32, 22u32, 18u32, 1u32, 22u32, 19u32, 1u32, 22u32, - 37u32, 1u32, 22u32, 38u32, 1u32, 22u32, 39u32, 1u32, 22u32, 40u32, - 1u32, 22u32, 41u32, 1u32, 22u32, 42u32, 1u32, 22u32, 43u32, 1u32, - 22u32, 0u32, 1u32, 29u32, 3u32, 1u32, 29u32, 4u32, 1u32, 29u32, 7u32, - 1u32, 29u32, 8u32, 1u32, 29u32, 9u32, 1u32, 29u32, 11u32, 1u32, - 29u32, 12u32, 1u32, 29u32, 13u32, 1u32, 29u32, 14u32, 1u32, 29u32, - 16u32, 1u32, 29u32, 17u32, 1u32, 29u32, 18u32, 1u32, 29u32, 19u32, - 1u32, 29u32, 37u32, 1u32, 29u32, 38u32, 1u32, 29u32, 39u32, 1u32, - 29u32, 40u32, 1u32, 29u32, 41u32, 1u32, 29u32, 42u32, 1u32, 29u32, - 43u32, 1u32, 29u32, 0u32, 1u32, 31u32, 3u32, 1u32, 31u32, 4u32, 1u32, - 31u32, 7u32, 1u32, 31u32, 8u32, 1u32, 31u32, 9u32, 1u32, 31u32, - 11u32, 1u32, 31u32, 12u32, 1u32, 31u32, 13u32, 1u32, 31u32, 14u32, - 1u32, 31u32, 16u32, 1u32, 31u32, 17u32, 1u32, 31u32, 18u32, 1u32, - 31u32, 19u32, 1u32, 31u32, 37u32, 1u32, 31u32, 38u32, 1u32, 31u32, - 39u32, 1u32, 31u32, 40u32, 1u32, 31u32, 41u32, 1u32, 31u32, 42u32, - 1u32, 31u32, 43u32, 1u32, 31u32, 0u32, 1u32, 94u32, 3u32, 1u32, - 94u32, 7u32, 1u32, 94u32, 8u32, 1u32, 94u32, 11u32, 1u32, 94u32, - 12u32, 1u32, 94u32, 13u32, 1u32, 94u32, 14u32, 1u32, 94u32, 17u32, - 1u32, 94u32, 18u32, 1u32, 94u32, 19u32, 1u32, 94u32, 0u32, 1u32, - 25u32, 3u32, 1u32, 25u32, 4u32, 1u32, 25u32, 7u32, 1u32, 25u32, 8u32, - 1u32, 25u32, 9u32, 1u32, 25u32, 11u32, 1u32, 25u32, 12u32, 1u32, - 25u32, 13u32, 1u32, 25u32, 14u32, 1u32, 25u32, 16u32, 1u32, 25u32, - 17u32, 1u32, 25u32, 18u32, 1u32, 25u32, 19u32, 1u32, 25u32, 37u32, - 1u32, 25u32, 38u32, 1u32, 25u32, 39u32, 1u32, 25u32, 40u32, 1u32, - 25u32, 41u32, 1u32, 25u32, 42u32, 1u32, 25u32, 43u32, 1u32, 25u32, - 0u32, 1u32, 26u32, 3u32, 1u32, 26u32, 4u32, 1u32, 26u32, 7u32, 1u32, - 26u32, 8u32, 1u32, 26u32, 9u32, 1u32, 26u32, 11u32, 1u32, 26u32, - 12u32, 1u32, 26u32, 13u32, 1u32, 26u32, 14u32, 1u32, 26u32, 16u32, - 1u32, 26u32, 17u32, 1u32, 26u32, 18u32, 1u32, 26u32, 19u32, 1u32, - 26u32, 37u32, 1u32, 26u32, 38u32, 1u32, 26u32, 39u32, 1u32, 26u32, - 40u32, 1u32, 26u32, 41u32, 1u32, 26u32, 42u32, 1u32, 26u32, 43u32, - 1u32, 26u32, 0u32, 1u32, 27u32, 3u32, 1u32, 27u32, 4u32, 1u32, 27u32, - 7u32, 1u32, 27u32, 8u32, 1u32, 27u32, 9u32, 1u32, 27u32, 11u32, 1u32, - 27u32, 12u32, 1u32, 27u32, 13u32, 1u32, 27u32, 14u32, 1u32, 27u32, - 16u32, 1u32, 27u32, 17u32, 1u32, 27u32, 18u32, 1u32, 27u32, 19u32, - 1u32, 27u32, 37u32, 1u32, 27u32, 38u32, 1u32, 27u32, 39u32, 1u32, - 27u32, 40u32, 1u32, 27u32, 41u32, 1u32, 27u32, 42u32, 1u32, 27u32, - 43u32, 1u32, 27u32, 0u32, 1u32, 28u32, 3u32, 1u32, 28u32, 4u32, 1u32, - 28u32, 7u32, 1u32, 28u32, 8u32, 1u32, 28u32, 9u32, 1u32, 28u32, - 11u32, 1u32, 28u32, 12u32, 1u32, 28u32, 13u32, 1u32, 28u32, 14u32, - 1u32, 28u32, 16u32, 1u32, 28u32, 17u32, 1u32, 28u32, 18u32, 1u32, - 28u32, 19u32, 1u32, 28u32, 37u32, 1u32, 28u32, 38u32, 1u32, 28u32, - 39u32, 1u32, 28u32, 40u32, 1u32, 28u32, 41u32, 1u32, 28u32, 42u32, - 1u32, 28u32, 43u32, 1u32, 28u32, 0u32, 1u32, 36u32, 3u32, 1u32, - 36u32, 4u32, 1u32, 36u32, 7u32, 1u32, 36u32, 8u32, 1u32, 36u32, 9u32, - 1u32, 36u32, 11u32, 1u32, 36u32, 12u32, 1u32, 36u32, 13u32, 1u32, - 36u32, 14u32, 1u32, 36u32, 16u32, 1u32, 36u32, 17u32, 1u32, 36u32, - 18u32, 1u32, 36u32, 19u32, 1u32, 36u32, 37u32, 1u32, 36u32, 42u32, - 1u32, 36u32, 43u32, 1u32, 36u32, 3u32, 1u32, 96u32, 18u32, 1u32, - 96u32, 0u32, 1u32, 95u32, 3u32, 1u32, 95u32, 7u32, 1u32, 95u32, 8u32, - 1u32, 95u32, 11u32, 1u32, 95u32, 12u32, 1u32, 95u32, 13u32, 1u32, - 95u32, 14u32, 1u32, 95u32, 17u32, 1u32, 95u32, 18u32, 1u32, 95u32, - 19u32, 1u32, 95u32, 3u32, 1u32, 98u32, 18u32, 1u32, 98u32, 3u32, - 1u32, 97u32, 18u32, 1u32, 97u32, 3u32, 1u32, 99u32, 18u32, 1u32, - 99u32, 0u32, 1u32, 30u32, 3u32, 1u32, 30u32, 4u32, 1u32, 30u32, 7u32, - 1u32, 30u32, 8u32, 1u32, 30u32, 9u32, 1u32, 30u32, 11u32, 1u32, - 30u32, 12u32, 1u32, 30u32, 13u32, 1u32, 30u32, 14u32, 1u32, 30u32, - 16u32, 1u32, 30u32, 17u32, 1u32, 30u32, 18u32, 1u32, 30u32, 19u32, - 1u32, 30u32, 37u32, 1u32, 30u32, 38u32, 1u32, 30u32, 39u32, 1u32, - 30u32, 40u32, 1u32, 30u32, 41u32, 1u32, 30u32, 42u32, 1u32, 30u32, - 43u32, 1u32, 30u32, 18u32, 1u32, 101u32, 18u32, 1u32, 100u32, 0u32, - 1u32, 38u32, 3u32, 1u32, 38u32, 4u32, 1u32, 38u32, 7u32, 1u32, 38u32, - 8u32, 1u32, 38u32, 9u32, 1u32, 38u32, 11u32, 1u32, 38u32, 12u32, - 1u32, 38u32, 13u32, 1u32, 38u32, 14u32, 1u32, 38u32, 16u32, 1u32, - 38u32, 17u32, 1u32, 38u32, 18u32, 1u32, 38u32, 19u32, 1u32, 38u32, - 37u32, 1u32, 38u32, 38u32, 1u32, 38u32, 39u32, 1u32, 38u32, 40u32, - 1u32, 38u32, 41u32, 1u32, 38u32, 42u32, 1u32, 38u32, 43u32, 1u32, - 38u32, 0u32, 1u32, 39u32, 3u32, 1u32, 39u32, 4u32, 1u32, 39u32, 7u32, - 1u32, 39u32, 8u32, 1u32, 39u32, 9u32, 1u32, 39u32, 11u32, 1u32, - 39u32, 12u32, 1u32, 39u32, 13u32, 1u32, 39u32, 14u32, 1u32, 39u32, - 16u32, 1u32, 39u32, 17u32, 1u32, 39u32, 18u32, 1u32, 39u32, 19u32, - 1u32, 39u32, 37u32, 1u32, 39u32, 38u32, 1u32, 39u32, 39u32, 1u32, - 39u32, 40u32, 1u32, 39u32, 41u32, 1u32, 39u32, 42u32, 1u32, 39u32, - 43u32, 1u32, 39u32, 0u32, 1u32, 41u32, 3u32, 1u32, 41u32, 4u32, 1u32, - 41u32, 7u32, 1u32, 41u32, 8u32, 1u32, 41u32, 9u32, 1u32, 41u32, - 11u32, 1u32, 41u32, 12u32, 1u32, 41u32, 13u32, 1u32, 41u32, 14u32, - 1u32, 41u32, 16u32, 1u32, 41u32, 17u32, 1u32, 41u32, 18u32, 1u32, - 41u32, 19u32, 1u32, 41u32, 37u32, 1u32, 41u32, 38u32, 1u32, 41u32, - 39u32, 1u32, 41u32, 40u32, 1u32, 41u32, 41u32, 1u32, 41u32, 42u32, - 1u32, 41u32, 43u32, 1u32, 41u32, 0u32, 1u32, 40u32, 3u32, 1u32, - 40u32, 4u32, 1u32, 40u32, 7u32, 1u32, 40u32, 8u32, 1u32, 40u32, 9u32, - 1u32, 40u32, 11u32, 1u32, 40u32, 12u32, 1u32, 40u32, 13u32, 1u32, - 40u32, 14u32, 1u32, 40u32, 16u32, 1u32, 40u32, 17u32, 1u32, 40u32, - 18u32, 1u32, 40u32, 19u32, 1u32, 40u32, 37u32, 1u32, 40u32, 38u32, - 1u32, 40u32, 39u32, 1u32, 40u32, 40u32, 1u32, 40u32, 41u32, 1u32, - 40u32, 42u32, 1u32, 40u32, 43u32, 1u32, 40u32, 0u32, 1u32, 37u32, - 3u32, 1u32, 37u32, 4u32, 1u32, 37u32, 7u32, 1u32, 37u32, 8u32, 1u32, - 37u32, 9u32, 1u32, 37u32, 11u32, 1u32, 37u32, 12u32, 1u32, 37u32, - 13u32, 1u32, 37u32, 14u32, 1u32, 37u32, 16u32, 1u32, 37u32, 17u32, - 1u32, 37u32, 18u32, 1u32, 37u32, 19u32, 1u32, 37u32, 37u32, 1u32, - 37u32, 38u32, 1u32, 37u32, 39u32, 1u32, 37u32, 40u32, 1u32, 37u32, - 41u32, 1u32, 37u32, 42u32, 1u32, 37u32, 43u32, 1u32, 37u32, 0u32, - 1u32, 12u32, 3u32, 1u32, 12u32, 4u32, 1u32, 12u32, 7u32, 1u32, 12u32, - 8u32, 1u32, 12u32, 11u32, 1u32, 12u32, 12u32, 1u32, 12u32, 13u32, - 1u32, 12u32, 14u32, 1u32, 12u32, 16u32, 1u32, 12u32, 17u32, 1u32, - 12u32, 19u32, 1u32, 12u32, 37u32, 1u32, 12u32, 3u32, 1u32, 83u32, - 4u32, 1u32, 83u32, 16u32, 1u32, 83u32, 37u32, 1u32, 83u32, 3u32, - 1u32, 3u32, 37u32, 1u32, 3u32, 0u32, 1u32, 80u32, 3u32, 1u32, 80u32, - 4u32, 1u32, 80u32, 7u32, 1u32, 80u32, 8u32, 1u32, 80u32, 11u32, 1u32, - 80u32, 12u32, 1u32, 80u32, 13u32, 1u32, 80u32, 14u32, 1u32, 80u32, - 16u32, 1u32, 80u32, 17u32, 1u32, 80u32, 19u32, 1u32, 80u32, 37u32, - 1u32, 80u32, 0u32, 1u32, 11u32, 3u32, 1u32, 11u32, 4u32, 1u32, 11u32, - 7u32, 1u32, 11u32, 8u32, 1u32, 11u32, 11u32, 1u32, 11u32, 12u32, - 1u32, 11u32, 13u32, 1u32, 11u32, 14u32, 1u32, 11u32, 16u32, 1u32, - 11u32, 17u32, 1u32, 11u32, 19u32, 1u32, 11u32, 37u32, 1u32, 11u32, - 3u32, 1u32, 82u32, 4u32, 1u32, 82u32, 16u32, 1u32, 82u32, 37u32, - 1u32, 82u32, 0u32, 1u32, 81u32, 3u32, 1u32, 81u32, 4u32, 1u32, 81u32, - 7u32, 1u32, 81u32, 8u32, 1u32, 81u32, 11u32, 1u32, 81u32, 12u32, - 1u32, 81u32, 13u32, 1u32, 81u32, 14u32, 1u32, 81u32, 16u32, 1u32, - 81u32, 17u32, 1u32, 81u32, 19u32, 1u32, 81u32, 37u32, 1u32, 81u32, - 3u32, 1u32, 87u32, 16u32, 1u32, 87u32, 37u32, 1u32, 87u32, 0u32, - 1u32, 44u32, 3u32, 1u32, 44u32, 4u32, 1u32, 44u32, 11u32, 1u32, - 44u32, 13u32, 1u32, 44u32, 16u32, 1u32, 44u32, 37u32, 1u32, 44u32, - 0u32, 1u32, 45u32, 3u32, 1u32, 45u32, 4u32, 1u32, 45u32, 11u32, 1u32, - 45u32, 13u32, 1u32, 45u32, 16u32, 1u32, 45u32, 37u32, 1u32, 45u32, - 0u32, 1u32, 46u32, 3u32, 1u32, 46u32, 4u32, 1u32, 46u32, 11u32, 1u32, - 46u32, 13u32, 1u32, 46u32, 16u32, 1u32, 46u32, 37u32, 1u32, 46u32, - 3u32, 1u32, 7u32, 4u32, 1u32, 7u32, 16u32, 1u32, 7u32, 37u32, 1u32, - 7u32, 3u32, 1u32, 6u32, 4u32, 1u32, 6u32, 16u32, 1u32, 6u32, 37u32, - 1u32, 6u32, 3u32, 1u32, 8u32, 4u32, 1u32, 8u32, 16u32, 1u32, 8u32, - 37u32, 1u32, 8u32, 3u32, 1u32, 9u32, 4u32, 1u32, 9u32, 16u32, 1u32, - 9u32, 37u32, 1u32, 9u32, 3u32, 1u32, 10u32, 4u32, 1u32, 10u32, 16u32, - 1u32, 10u32, 37u32, 1u32, 10u32, 3u32, 1u32, 84u32, 4u32, 1u32, - 84u32, 16u32, 1u32, 84u32, 37u32, 1u32, 84u32, 3u32, 1u32, 86u32, - 16u32, 1u32, 86u32, 37u32, 1u32, 86u32, 3u32, 1u32, 85u32, 4u32, - 1u32, 85u32, 16u32, 1u32, 85u32, 37u32, 1u32, 85u32, 3u32, 1u32, - 43u32, 37u32, 1u32, 43u32, 3u32, 1u32, 42u32, 37u32, 1u32, 42u32, - 3u32, 1u32, 5u32, 37u32, 1u32, 5u32, 0u32, 1u32, 0u32, 4u32, 1u32, - 0u32, 44u32, 1u32, 0u32, 3u32, 1u32, 4u32, 37u32, 1u32, 4u32, 0u32, - 1u32, 57u32, 4u32, 1u32, 57u32, 44u32, 1u32, 57u32, 0u32, 1u32, - 146u32, 11u32, 1u32, 146u32, 13u32, 1u32, 146u32, 37u32, 1u32, - 146u32, 0u32, 1u32, 56u32, 4u32, 1u32, 56u32, 44u32, 1u32, 56u32, - 0u32, 1u32, 147u32, 11u32, 1u32, 147u32, 13u32, 1u32, 147u32, 37u32, - 1u32, 147u32, 0u32, 1u32, 59u32, 4u32, 1u32, 59u32, 44u32, 1u32, - 59u32, 0u32, 1u32, 58u32, 4u32, 1u32, 58u32, 44u32, 1u32, 58u32, - 0u32, 1u32, 48u32, 4u32, 1u32, 48u32, 44u32, 1u32, 48u32, 0u32, 1u32, - 144u32, 1u32, 1u32, 144u32, 2u32, 1u32, 144u32, 3u32, 1u32, 144u32, - 4u32, 1u32, 144u32, 5u32, 1u32, 144u32, 6u32, 1u32, 144u32, 7u32, - 1u32, 144u32, 8u32, 1u32, 144u32, 9u32, 1u32, 144u32, 10u32, 1u32, - 144u32, 11u32, 1u32, 144u32, 12u32, 1u32, 144u32, 13u32, 1u32, - 144u32, 14u32, 1u32, 144u32, 15u32, 1u32, 144u32, 16u32, 1u32, - 144u32, 17u32, 1u32, 144u32, 18u32, 1u32, 144u32, 19u32, 1u32, - 144u32, 20u32, 1u32, 144u32, 21u32, 1u32, 144u32, 22u32, 1u32, - 144u32, 23u32, 1u32, 144u32, 24u32, 1u32, 144u32, 25u32, 1u32, - 144u32, 26u32, 1u32, 144u32, 27u32, 1u32, 144u32, 28u32, 1u32, - 144u32, 29u32, 1u32, 144u32, 30u32, 1u32, 144u32, 31u32, 1u32, - 144u32, 32u32, 1u32, 144u32, 33u32, 1u32, 144u32, 34u32, 1u32, - 144u32, 35u32, 1u32, 144u32, 36u32, 1u32, 144u32, 37u32, 1u32, - 144u32, 38u32, 1u32, 144u32, 39u32, 1u32, 144u32, 40u32, 1u32, - 144u32, 41u32, 1u32, 144u32, 42u32, 1u32, 144u32, 0u32, 1u32, 47u32, - 4u32, 1u32, 47u32, 44u32, 1u32, 47u32, 0u32, 1u32, 145u32, 1u32, - 1u32, 145u32, 2u32, 1u32, 145u32, 3u32, 1u32, 145u32, 4u32, 1u32, - 145u32, 5u32, 1u32, 145u32, 6u32, 1u32, 145u32, 7u32, 1u32, 145u32, - 8u32, 1u32, 145u32, 9u32, 1u32, 145u32, 10u32, 1u32, 145u32, 11u32, - 1u32, 145u32, 12u32, 1u32, 145u32, 13u32, 1u32, 145u32, 14u32, 1u32, - 145u32, 15u32, 1u32, 145u32, 16u32, 1u32, 145u32, 17u32, 1u32, - 145u32, 18u32, 1u32, 145u32, 19u32, 1u32, 145u32, 20u32, 1u32, - 145u32, 21u32, 1u32, 145u32, 22u32, 1u32, 145u32, 23u32, 1u32, - 145u32, 24u32, 1u32, 145u32, 25u32, 1u32, 145u32, 26u32, 1u32, - 145u32, 27u32, 1u32, 145u32, 28u32, 1u32, 145u32, 29u32, 1u32, - 145u32, 30u32, 1u32, 145u32, 31u32, 1u32, 145u32, 32u32, 1u32, - 145u32, 33u32, 1u32, 145u32, 34u32, 1u32, 145u32, 35u32, 1u32, - 145u32, 36u32, 1u32, 145u32, 37u32, 1u32, 145u32, 38u32, 1u32, - 145u32, 39u32, 1u32, 145u32, 40u32, 1u32, 145u32, 41u32, 1u32, - 145u32, 42u32, 1u32, 145u32, 0u32, 1u32, 49u32, 4u32, 1u32, 49u32, - 44u32, 1u32, 49u32, 0u32, 1u32, 50u32, 4u32, 1u32, 50u32, 44u32, - 1u32, 50u32, 0u32, 1u32, 51u32, 4u32, 1u32, 51u32, 44u32, 1u32, - 51u32, 0u32, 1u32, 53u32, 4u32, 1u32, 53u32, 44u32, 1u32, 53u32, - 0u32, 1u32, 52u32, 4u32, 1u32, 52u32, 44u32, 1u32, 52u32, 0u32, 1u32, - 55u32, 4u32, 1u32, 55u32, 44u32, 1u32, 55u32, 0u32, 1u32, 54u32, - 4u32, 1u32, 54u32, 44u32, 1u32, 54u32, 0u32, 1u32, 63u32, 4u32, 1u32, - 63u32, 44u32, 1u32, 63u32, 0u32, 1u32, 62u32, 4u32, 1u32, 62u32, - 44u32, 1u32, 62u32, 0u32, 1u32, 65u32, 4u32, 1u32, 65u32, 44u32, - 1u32, 65u32, 0u32, 1u32, 64u32, 4u32, 1u32, 64u32, 44u32, 1u32, - 64u32, 0u32, 1u32, 68u32, 4u32, 1u32, 68u32, 44u32, 1u32, 68u32, - 0u32, 1u32, 69u32, 4u32, 1u32, 69u32, 44u32, 1u32, 69u32, 0u32, 1u32, - 66u32, 4u32, 1u32, 66u32, 44u32, 1u32, 66u32, 0u32, 1u32, 67u32, - 4u32, 1u32, 67u32, 44u32, 1u32, 67u32, 0u32, 1u32, 61u32, 4u32, 1u32, - 61u32, 44u32, 1u32, 61u32, 0u32, 1u32, 60u32, 4u32, 1u32, 60u32, - 44u32, 1u32, 60u32, 0u32, 1u32, 70u32, 4u32, 1u32, 70u32, 44u32, - 1u32, 70u32, 0u32, 1u32, 71u32, 4u32, 1u32, 71u32, 44u32, 1u32, - 71u32, 0u32, 1u32, 72u32, 4u32, 1u32, 72u32, 44u32, 1u32, 72u32, - 0u32, 1u32, 73u32, 4u32, 1u32, 73u32, 44u32, 1u32, 73u32, 0u32, 1u32, - 75u32, 4u32, 1u32, 75u32, 44u32, 1u32, 75u32, 0u32, 1u32, 74u32, - 4u32, 1u32, 74u32, 44u32, 1u32, 74u32, 0u32, 1u32, 76u32, 4u32, 1u32, - 76u32, 44u32, 1u32, 76u32, 0u32, 1u32, 77u32, 4u32, 1u32, 77u32, - 44u32, 1u32, 77u32, 44u32, 1u32, 148u32, 44u32, 1u32, 149u32, + 2, 1, 2, 2, 1, 1, 3, 1, 81, 4, 1, 81, 16, 1, 81, 36, 1, 81, 0, 1, 24, + 3, 1, 24, 4, 1, 24, 7, 1, 24, 8, 1, 24, 11, 1, 24, 12, 1, 24, 13, 1, + 24, 14, 1, 24, 16, 1, 24, 17, 1, 24, 19, 1, 24, 36, 1, 24, 37, 1, 24, + 38, 1, 24, 39, 1, 24, 40, 1, 24, 41, 1, 24, 0, 1, 24, 3, 1, 24, 4, 1, + 24, 7, 1, 24, 8, 1, 24, 9, 1, 24, 11, 1, 24, 12, 1, 24, 13, 1, 24, + 14, 1, 24, 16, 1, 24, 17, 1, 24, 18, 1, 24, 19, 1, 24, 36, 1, 24, 37, + 1, 24, 38, 1, 24, 39, 1, 24, 40, 1, 24, 41, 1, 24, 42, 1, 24, 0, 1, + 23, 3, 1, 23, 4, 1, 23, 7, 1, 23, 8, 1, 23, 9, 1, 23, 11, 1, 23, 12, + 1, 23, 13, 1, 23, 14, 1, 23, 16, 1, 23, 17, 1, 23, 18, 1, 23, 19, 1, + 23, 36, 1, 23, 37, 1, 23, 38, 1, 23, 39, 1, 23, 40, 1, 23, 41, 1, 23, + 42, 1, 23, 0, 1, 32, 3, 1, 32, 4, 1, 32, 7, 1, 32, 8, 1, 32, 9, 1, + 32, 11, 1, 32, 12, 1, 32, 13, 1, 32, 14, 1, 32, 16, 1, 32, 17, 1, 32, + 18, 1, 32, 19, 1, 32, 36, 1, 32, 37, 1, 32, 38, 1, 32, 39, 1, 32, 40, + 1, 32, 41, 1, 32, 42, 1, 32, 0, 1, 33, 3, 1, 33, 4, 1, 33, 7, 1, 33, + 8, 1, 33, 9, 1, 33, 11, 1, 33, 12, 1, 33, 13, 1, 33, 14, 1, 33, 16, + 1, 33, 17, 1, 33, 18, 1, 33, 19, 1, 33, 36, 1, 33, 37, 1, 33, 38, 1, + 33, 39, 1, 33, 40, 1, 33, 41, 1, 33, 42, 1, 33, 0, 1, 34, 3, 1, 34, + 4, 1, 34, 7, 1, 34, 8, 1, 34, 9, 1, 34, 11, 1, 34, 12, 1, 34, 13, 1, + 34, 14, 1, 34, 16, 1, 34, 17, 1, 34, 18, 1, 34, 19, 1, 34, 36, 1, 34, + 37, 1, 34, 38, 1, 34, 39, 1, 34, 40, 1, 34, 41, 1, 34, 42, 1, 34, 0, + 1, 35, 3, 1, 35, 4, 1, 35, 7, 1, 35, 8, 1, 35, 9, 1, 35, 11, 1, 35, + 12, 1, 35, 13, 1, 35, 14, 1, 35, 16, 1, 35, 17, 1, 35, 18, 1, 35, 19, + 1, 35, 36, 1, 35, 37, 1, 35, 38, 1, 35, 39, 1, 35, 40, 1, 35, 41, 1, + 35, 42, 1, 35, 3, 1, 95, 18, 1, 95, 0, 1, 87, 11, 1, 87, 13, 1, 87, + 20, 1, 87, 0, 1, 86, 11, 1, 86, 13, 1, 86, 20, 1, 86, 20, 1, 91, 0, + 1, 13, 11, 1, 13, 13, 1, 13, 20, 1, 13, 0, 1, 14, 11, 1, 14, 13, 1, + 14, 20, 1, 14, 0, 1, 15, 11, 1, 15, 13, 1, 15, 20, 1, 15, 0, 1, 19, + 11, 1, 19, 13, 1, 19, 20, 1, 19, 0, 1, 20, 11, 1, 20, 13, 1, 20, 20, + 1, 20, 0, 1, 21, 11, 1, 21, 13, 1, 21, 20, 1, 21, 0, 1, 16, 11, 1, + 16, 13, 1, 16, 20, 1, 16, 0, 1, 17, 11, 1, 17, 13, 1, 17, 20, 1, 17, + 0, 1, 18, 11, 1, 18, 13, 1, 18, 20, 1, 18, 0, 1, 88, 11, 1, 88, 13, + 1, 88, 20, 1, 88, 20, 1, 90, 0, 1, 89, 11, 1, 89, 13, 1, 89, 20, 1, + 89, 0, 1, 22, 3, 1, 22, 4, 1, 22, 7, 1, 22, 8, 1, 22, 9, 1, 22, 11, + 1, 22, 12, 1, 22, 13, 1, 22, 14, 1, 22, 16, 1, 22, 17, 1, 22, 18, 1, + 22, 19, 1, 22, 36, 1, 22, 37, 1, 22, 38, 1, 22, 39, 1, 22, 40, 1, 22, + 41, 1, 22, 42, 1, 22, 0, 1, 29, 3, 1, 29, 4, 1, 29, 7, 1, 29, 8, 1, + 29, 9, 1, 29, 11, 1, 29, 12, 1, 29, 13, 1, 29, 14, 1, 29, 16, 1, 29, + 17, 1, 29, 18, 1, 29, 19, 1, 29, 36, 1, 29, 37, 1, 29, 38, 1, 29, 39, + 1, 29, 40, 1, 29, 41, 1, 29, 42, 1, 29, 0, 1, 31, 3, 1, 31, 4, 1, 31, + 7, 1, 31, 8, 1, 31, 9, 1, 31, 11, 1, 31, 12, 1, 31, 13, 1, 31, 14, 1, + 31, 16, 1, 31, 17, 1, 31, 18, 1, 31, 19, 1, 31, 36, 1, 31, 37, 1, 31, + 38, 1, 31, 39, 1, 31, 40, 1, 31, 41, 1, 31, 42, 1, 31, 0, 1, 92, 3, + 1, 92, 7, 1, 92, 8, 1, 92, 11, 1, 92, 12, 1, 92, 13, 1, 92, 14, 1, + 92, 17, 1, 92, 18, 1, 92, 19, 1, 92, 0, 1, 25, 3, 1, 25, 4, 1, 25, 7, + 1, 25, 8, 1, 25, 9, 1, 25, 11, 1, 25, 12, 1, 25, 13, 1, 25, 14, 1, + 25, 16, 1, 25, 17, 1, 25, 18, 1, 25, 19, 1, 25, 36, 1, 25, 37, 1, 25, + 38, 1, 25, 39, 1, 25, 40, 1, 25, 41, 1, 25, 42, 1, 25, 0, 1, 26, 3, + 1, 26, 4, 1, 26, 7, 1, 26, 8, 1, 26, 9, 1, 26, 11, 1, 26, 12, 1, 26, + 13, 1, 26, 14, 1, 26, 16, 1, 26, 17, 1, 26, 18, 1, 26, 19, 1, 26, 36, + 1, 26, 37, 1, 26, 38, 1, 26, 39, 1, 26, 40, 1, 26, 41, 1, 26, 42, 1, + 26, 0, 1, 27, 3, 1, 27, 4, 1, 27, 7, 1, 27, 8, 1, 27, 9, 1, 27, 11, + 1, 27, 12, 1, 27, 13, 1, 27, 14, 1, 27, 16, 1, 27, 17, 1, 27, 18, 1, + 27, 19, 1, 27, 36, 1, 27, 37, 1, 27, 38, 1, 27, 39, 1, 27, 40, 1, 27, + 41, 1, 27, 42, 1, 27, 0, 1, 28, 3, 1, 28, 4, 1, 28, 7, 1, 28, 8, 1, + 28, 9, 1, 28, 11, 1, 28, 12, 1, 28, 13, 1, 28, 14, 1, 28, 16, 1, 28, + 17, 1, 28, 18, 1, 28, 19, 1, 28, 36, 1, 28, 37, 1, 28, 38, 1, 28, 39, + 1, 28, 40, 1, 28, 41, 1, 28, 42, 1, 28, 0, 1, 36, 3, 1, 36, 4, 1, 36, + 7, 1, 36, 8, 1, 36, 9, 1, 36, 11, 1, 36, 12, 1, 36, 13, 1, 36, 14, 1, + 36, 16, 1, 36, 17, 1, 36, 18, 1, 36, 19, 1, 36, 36, 1, 36, 41, 1, 36, + 42, 1, 36, 3, 1, 94, 18, 1, 94, 0, 1, 93, 3, 1, 93, 7, 1, 93, 8, 1, + 93, 11, 1, 93, 12, 1, 93, 13, 1, 93, 14, 1, 93, 17, 1, 93, 18, 1, 93, + 19, 1, 93, 3, 1, 96, 18, 1, 96, 3, 1, 95, 18, 1, 95, 3, 1, 97, 18, 1, + 97, 0, 1, 30, 3, 1, 30, 4, 1, 30, 7, 1, 30, 8, 1, 30, 9, 1, 30, 11, + 1, 30, 12, 1, 30, 13, 1, 30, 14, 1, 30, 16, 1, 30, 17, 1, 30, 18, 1, + 30, 19, 1, 30, 36, 1, 30, 37, 1, 30, 38, 1, 30, 39, 1, 30, 40, 1, 30, + 41, 1, 30, 42, 1, 30, 18, 1, 99, 18, 1, 98, 0, 1, 38, 3, 1, 38, 4, 1, + 38, 7, 1, 38, 8, 1, 38, 9, 1, 38, 11, 1, 38, 12, 1, 38, 13, 1, 38, + 14, 1, 38, 16, 1, 38, 17, 1, 38, 18, 1, 38, 19, 1, 38, 36, 1, 38, 37, + 1, 38, 38, 1, 38, 39, 1, 38, 40, 1, 38, 41, 1, 38, 42, 1, 38, 0, 1, + 39, 3, 1, 39, 4, 1, 39, 7, 1, 39, 8, 1, 39, 9, 1, 39, 11, 1, 39, 12, + 1, 39, 13, 1, 39, 14, 1, 39, 16, 1, 39, 17, 1, 39, 18, 1, 39, 19, 1, + 39, 36, 1, 39, 37, 1, 39, 38, 1, 39, 39, 1, 39, 40, 1, 39, 41, 1, 39, + 42, 1, 39, 0, 1, 41, 3, 1, 41, 4, 1, 41, 7, 1, 41, 8, 1, 41, 9, 1, + 41, 11, 1, 41, 12, 1, 41, 13, 1, 41, 14, 1, 41, 16, 1, 41, 17, 1, 41, + 18, 1, 41, 19, 1, 41, 36, 1, 41, 37, 1, 41, 38, 1, 41, 39, 1, 41, 40, + 1, 41, 41, 1, 41, 42, 1, 41, 0, 1, 40, 3, 1, 40, 4, 1, 40, 7, 1, 40, + 8, 1, 40, 9, 1, 40, 11, 1, 40, 12, 1, 40, 13, 1, 40, 14, 1, 40, 16, + 1, 40, 17, 1, 40, 18, 1, 40, 19, 1, 40, 36, 1, 40, 37, 1, 40, 38, 1, + 40, 39, 1, 40, 40, 1, 40, 41, 1, 40, 42, 1, 40, 0, 1, 37, 3, 1, 37, + 4, 1, 37, 7, 1, 37, 8, 1, 37, 9, 1, 37, 11, 1, 37, 12, 1, 37, 13, 1, + 37, 14, 1, 37, 16, 1, 37, 17, 1, 37, 18, 1, 37, 19, 1, 37, 36, 1, 37, + 37, 1, 37, 38, 1, 37, 39, 1, 37, 40, 1, 37, 41, 1, 37, 42, 1, 37, 0, + 1, 12, 3, 1, 12, 4, 1, 12, 7, 1, 12, 8, 1, 12, 11, 1, 12, 12, 1, 12, + 13, 1, 12, 14, 1, 12, 16, 1, 12, 17, 1, 12, 19, 1, 12, 36, 1, 12, 3, + 1, 81, 4, 1, 81, 16, 1, 81, 36, 1, 81, 3, 1, 3, 36, 1, 3, 0, 1, 78, + 3, 1, 78, 4, 1, 78, 7, 1, 78, 8, 1, 78, 11, 1, 78, 12, 1, 78, 13, 1, + 78, 14, 1, 78, 16, 1, 78, 17, 1, 78, 19, 1, 78, 36, 1, 78, 0, 1, 11, + 3, 1, 11, 4, 1, 11, 7, 1, 11, 8, 1, 11, 11, 1, 11, 12, 1, 11, 13, 1, + 11, 14, 1, 11, 16, 1, 11, 17, 1, 11, 19, 1, 11, 36, 1, 11, 3, 1, 80, + 4, 1, 80, 16, 1, 80, 36, 1, 80, 0, 1, 79, 3, 1, 79, 4, 1, 79, 7, 1, + 79, 8, 1, 79, 11, 1, 79, 12, 1, 79, 13, 1, 79, 14, 1, 79, 16, 1, 79, + 17, 1, 79, 19, 1, 79, 36, 1, 79, 3, 1, 85, 16, 1, 85, 36, 1, 85, 0, + 1, 44, 3, 1, 44, 4, 1, 44, 11, 1, 44, 13, 1, 44, 16, 1, 44, 36, 1, + 44, 0, 1, 45, 3, 1, 45, 4, 1, 45, 11, 1, 45, 13, 1, 45, 16, 1, 45, + 36, 1, 45, 0, 1, 46, 3, 1, 46, 4, 1, 46, 11, 1, 46, 13, 1, 46, 16, 1, + 46, 36, 1, 46, 3, 1, 7, 4, 1, 7, 16, 1, 7, 36, 1, 7, 3, 1, 6, 4, 1, + 6, 16, 1, 6, 36, 1, 6, 3, 1, 8, 4, 1, 8, 16, 1, 8, 36, 1, 8, 3, 1, 9, + 4, 1, 9, 16, 1, 9, 36, 1, 9, 3, 1, 10, 4, 1, 10, 16, 1, 10, 36, 1, + 10, 3, 1, 82, 4, 1, 82, 16, 1, 82, 36, 1, 82, 3, 1, 84, 16, 1, 84, + 36, 1, 84, 3, 1, 83, 4, 1, 83, 16, 1, 83, 36, 1, 83, 3, 1, 43, 36, 1, + 43, 3, 1, 42, 36, 1, 42, 3, 1, 5, 36, 1, 5, 0, 1, 0, 4, 1, 0, 43, 1, + 0, 3, 1, 4, 36, 1, 4, 0, 1, 57, 4, 1, 57, 43, 1, 57, 0, 1, 143, 11, + 1, 143, 13, 1, 143, 36, 1, 143, 0, 1, 56, 4, 1, 56, 43, 1, 56, 0, 1, + 144, 11, 1, 144, 13, 1, 144, 36, 1, 144, 0, 1, 59, 4, 1, 59, 43, 1, + 59, 0, 1, 58, 4, 1, 58, 43, 1, 58, 0, 1, 48, 4, 1, 48, 43, 1, 48, 0, + 1, 141, 1, 1, 141, 2, 1, 141, 3, 1, 141, 4, 1, 141, 5, 1, 141, 6, 1, + 141, 7, 1, 141, 8, 1, 141, 9, 1, 141, 10, 1, 141, 11, 1, 141, 12, 1, + 141, 13, 1, 141, 14, 1, 141, 15, 1, 141, 16, 1, 141, 17, 1, 141, 18, + 1, 141, 19, 1, 141, 20, 1, 141, 21, 1, 141, 22, 1, 141, 23, 1, 141, + 24, 1, 141, 25, 1, 141, 26, 1, 141, 27, 1, 141, 28, 1, 141, 29, 1, + 141, 30, 1, 141, 31, 1, 141, 32, 1, 141, 33, 1, 141, 34, 1, 141, 35, + 1, 141, 36, 1, 141, 37, 1, 141, 38, 1, 141, 39, 1, 141, 40, 1, 141, + 41, 1, 141, 0, 1, 47, 4, 1, 47, 43, 1, 47, 0, 1, 142, 1, 1, 142, 2, + 1, 142, 3, 1, 142, 4, 1, 142, 5, 1, 142, 6, 1, 142, 7, 1, 142, 8, 1, + 142, 9, 1, 142, 10, 1, 142, 11, 1, 142, 12, 1, 142, 13, 1, 142, 14, + 1, 142, 15, 1, 142, 16, 1, 142, 17, 1, 142, 18, 1, 142, 19, 1, 142, + 20, 1, 142, 21, 1, 142, 22, 1, 142, 23, 1, 142, 24, 1, 142, 25, 1, + 142, 26, 1, 142, 27, 1, 142, 28, 1, 142, 29, 1, 142, 30, 1, 142, 31, + 1, 142, 32, 1, 142, 33, 1, 142, 34, 1, 142, 35, 1, 142, 36, 1, 142, + 37, 1, 142, 38, 1, 142, 39, 1, 142, 40, 1, 142, 41, 1, 142, 0, 1, 49, + 4, 1, 49, 43, 1, 49, 0, 1, 50, 4, 1, 50, 43, 1, 50, 0, 1, 51, 4, 1, + 51, 43, 1, 51, 0, 1, 53, 4, 1, 53, 43, 1, 53, 0, 1, 52, 4, 1, 52, 43, + 1, 52, 0, 1, 55, 4, 1, 55, 43, 1, 55, 0, 1, 54, 4, 1, 54, 43, 1, 54, + 0, 1, 63, 4, 1, 63, 43, 1, 63, 0, 1, 62, 4, 1, 62, 43, 1, 62, 0, 1, + 65, 4, 1, 65, 43, 1, 65, 0, 1, 64, 4, 1, 64, 43, 1, 64, 0, 1, 68, 4, + 1, 68, 43, 1, 68, 0, 1, 69, 4, 1, 69, 43, 1, 69, 0, 1, 66, 4, 1, 66, + 43, 1, 66, 0, 1, 67, 4, 1, 67, 43, 1, 67, 0, 1, 61, 4, 1, 61, 43, 1, + 61, 0, 1, 60, 4, 1, 60, 43, 1, 60, 0, 1, 70, 4, 1, 70, 43, 1, 70, 0, + 1, 71, 4, 1, 71, 43, 1, 71, 0, 1, 73, 4, 1, 73, 43, 1, 73, 0, 1, 72, + 4, 1, 72, 43, 1, 72, 0, 1, 74, 4, 1, 74, 43, 1, 74, 0, 1, 75, 4, 1, + 75, 43, 1, 75, 43, 1, 145, 43, 1, 146, ]; static REDUCE_OFFSETS: &[u32] = &[ - 0u32, 0u32, 3u32, 6u32, 6u32, 18u32, 72u32, 72u32, 135u32, 198u32, - 198u32, 198u32, 198u32, 261u32, 324u32, 387u32, 450u32, 456u32, - 468u32, 480u32, 483u32, 495u32, 495u32, 507u32, 519u32, 531u32, - 531u32, 543u32, 555u32, 567u32, 567u32, 579u32, 591u32, 603u32, - 606u32, 618u32, 618u32, 681u32, 744u32, 744u32, 744u32, 744u32, - 807u32, 840u32, 903u32, 966u32, 1029u32, 1092u32, 1092u32, 1143u32, - 1149u32, 1182u32, 1188u32, 1188u32, 1194u32, 1200u32, 1263u32, - 1266u32, 1269u32, 1269u32, 1332u32, 1332u32, 1395u32, 1395u32, - 1458u32, 1458u32, 1521u32, 1521u32, 1584u32, 1623u32, 1623u32, - 1635u32, 1641u32, 1680u32, 1719u32, 1731u32, 1770u32, 1779u32, - 1779u32, 1779u32, 1800u32, 1821u32, 1842u32, 1854u32, 1866u32, - 1866u32, 1878u32, 1890u32, 1902u32, 1914u32, 1923u32, 1935u32, - 1941u32, 1947u32, 1953u32, 1962u32, 1968u32, 1968u32, 1968u32, - 1968u32, 1977u32, 1989u32, 1989u32, 1998u32, 2010u32, 2010u32, - 2010u32, 2019u32, 2019u32, 2028u32, 2028u32, 2028u32, 2037u32, - 2166u32, 2166u32, 2175u32, 2304u32, 2304u32, 2313u32, 2313u32, - 2313u32, 2322u32, 2322u32, 2331u32, 2331u32, 2340u32, 2340u32, - 2349u32, 2349u32, 2358u32, 2358u32, 2367u32, 2367u32, 2376u32, - 2376u32, 2385u32, 2385u32, 2394u32, 2394u32, 2403u32, 2403u32, - 2412u32, 2412u32, 2421u32, 2421u32, 2430u32, 2430u32, 2439u32, - 2439u32, 2439u32, 2448u32, 2448u32, 2457u32, 2457u32, 2466u32, - 2466u32, 2475u32, 2475u32, 2484u32, 2484u32, 2493u32, 2493u32, - 2502u32, 2502u32, 2511u32, 2511u32, 2520u32, 2529u32, 2532u32, - 2535u32, 2535u32, 2535u32, - ]; - static RULESET_DATA: &[u32] = &[ - 0u32, 47u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, 54u32, 55u32, - 56u32, 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, 64u32, 65u32, - 66u32, 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, 74u32, 75u32, - 76u32, 77u32, 78u32, 79u32, 148u32, 149u32, 150u32, 65536u32, 1u32, - 2u32, 65537u32, 131072u32, 196608u32, 3u32, 4u32, 5u32, 11u32, 12u32, - 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, - 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, - 80u32, 81u32, 82u32, 83u32, 65548u32, 65560u32, 131084u32, 22u32, - 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, - 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, - 65560u32, 65559u32, 65573u32, 65574u32, 65575u32, 65576u32, 65577u32, - 131109u32, 131110u32, 131111u32, 131112u32, 131113u32, 22u32, 23u32, - 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32, - 34u32, 35u32, 36u32, 37u32, 196645u32, 38u32, 196646u32, 39u32, - 196647u32, 40u32, 196648u32, 41u32, 196649u32, 65568u32, 65569u32, - 65570u32, 65571u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, - 29u32, 30u32, 65566u32, 31u32, 65567u32, 32u32, 33u32, 34u32, 35u32, - 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 94u32, 95u32, 96u32, 97u32, - 98u32, 99u32, 65558u32, 88u32, 89u32, 65624u32, 13u32, 14u32, 15u32, - 16u32, 17u32, 18u32, 19u32, 20u32, 21u32, 131094u32, 90u32, 91u32, - 92u32, 93u32, 65549u32, 65550u32, 65551u32, 131086u32, 131087u32, - 196622u32, 196623u32, 65555u32, 65556u32, 65557u32, 131092u32, - 131093u32, 196628u32, 196629u32, 65552u32, 65553u32, 65554u32, - 131089u32, 131090u32, 196625u32, 196626u32, 65626u32, 13u32, 14u32, - 15u32, 16u32, 17u32, 18u32, 19u32, 20u32, 21u32, 65627u32, 65628u32, - 131163u32, 196630u32, 262166u32, 65565u32, 65561u32, 65562u32, - 65563u32, 65564u32, 65572u32, 262181u32, 262182u32, 262183u32, - 262184u32, 262185u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, - 28u32, 29u32, 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, - 327717u32, 38u32, 327718u32, 39u32, 327719u32, 40u32, 327720u32, - 41u32, 327721u32, 131103u32, 196639u32, 65561u32, 65562u32, 65563u32, - 65564u32, 65572u32, 65630u32, 131097u32, 131098u32, 131099u32, - 131100u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, - 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 131108u32, 37u32, - 38u32, 39u32, 40u32, 41u32, 65561u32, 65562u32, 65563u32, 65564u32, - 196644u32, 22u32, 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, - 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, - 40u32, 41u32, 65631u32, 65632u32, 65561u32, 65562u32, 65563u32, - 65564u32, 65572u32, 131167u32, 65634u32, 131102u32, 65635u32, 22u32, - 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, - 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 94u32, - 95u32, 96u32, 97u32, 131171u32, 196707u32, 196638u32, 65561u32, - 65562u32, 65563u32, 65564u32, 65572u32, 393253u32, 393254u32, - 393255u32, 393256u32, 393257u32, 100u32, 101u32, 458790u32, - 458791u32, 458793u32, 65636u32, 524326u32, 589862u32, 524327u32, - 589863u32, 524329u32, 589865u32, 458792u32, 524328u32, 458789u32, - 524325u32, 196620u32, 65561u32, 65562u32, 65563u32, 65564u32, - 65572u32, 262144u32, 65539u32, 131075u32, 5u32, 11u32, 12u32, 22u32, - 23u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, - 33u32, 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 80u32, - 81u32, 82u32, 83u32, 196611u32, 65616u32, 65547u32, 65561u32, - 65562u32, 65563u32, 65564u32, 65572u32, 11u32, 12u32, 22u32, 23u32, - 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32, - 34u32, 35u32, 36u32, 37u32, 38u32, 39u32, 40u32, 41u32, 65617u32, - 65618u32, 131153u32, 65541u32, 6u32, 7u32, 8u32, 9u32, 10u32, 84u32, - 85u32, 86u32, 87u32, 65542u32, 65543u32, 65544u32, 65545u32, - 65546u32, 131078u32, 131079u32, 44u32, 45u32, 46u32, 65580u32, - 65581u32, 65582u32, 196615u32, 196614u32, 131080u32, 131081u32, - 196616u32, 196617u32, 131082u32, 65620u32, 6u32, 7u32, 8u32, 9u32, - 10u32, 65621u32, 65622u32, 131157u32, 131077u32, 42u32, 43u32, - 65578u32, 196613u32, 327680u32, 65540u32, 65583u32, 65584u32, - 65585u32, 65586u32, 65587u32, 65588u32, 65589u32, 65590u32, 65591u32, - 65592u32, 65593u32, 65594u32, 65595u32, 65596u32, 65597u32, 65598u32, - 65599u32, 65600u32, 65601u32, 65602u32, 65603u32, 65604u32, 65605u32, - 65606u32, 65607u32, 65608u32, 65609u32, 65610u32, 65611u32, 65612u32, - 44u32, 45u32, 46u32, 131128u32, 131129u32, 146u32, 147u32, 196665u32, - 262201u32, 65682u32, 44u32, 45u32, 46u32, 196664u32, 65683u32, - 262200u32, 131219u32, 44u32, 45u32, 46u32, 131130u32, 131131u32, - 146u32, 147u32, 196667u32, 262203u32, 44u32, 45u32, 46u32, 196666u32, - 65683u32, 262202u32, 131119u32, 131120u32, 131121u32, 196655u32, - 196656u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, - 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, - 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, - 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, - 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, - 141u32, 142u32, 143u32, 144u32, 145u32, 262192u32, 65680u32, - 262191u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, - 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, - 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, - 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, - 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, - 141u32, 142u32, 143u32, 65681u32, 327727u32, 131217u32, 196657u32, - 262193u32, 131122u32, 131123u32, 196658u32, 262194u32, 196659u32, - 262195u32, 131124u32, 131125u32, 102u32, 103u32, 104u32, 105u32, - 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, - 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, - 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, - 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, - 138u32, 139u32, 140u32, 141u32, 142u32, 143u32, 144u32, 145u32, - 196661u32, 196660u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, - 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, - 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, - 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, - 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, - 140u32, 141u32, 142u32, 143u32, 65681u32, 262196u32, 131126u32, - 131127u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, - 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, - 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, - 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, - 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, - 141u32, 142u32, 143u32, 144u32, 145u32, 196663u32, 196662u32, 102u32, - 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, - 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, - 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, - 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, - 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32, - 143u32, 65681u32, 262198u32, 131134u32, 131135u32, 102u32, 103u32, - 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, - 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, - 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, - 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, - 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32, 143u32, - 144u32, 145u32, 196671u32, 196670u32, 102u32, 103u32, 104u32, 105u32, - 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, - 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, - 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, - 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, - 138u32, 139u32, 140u32, 141u32, 142u32, 143u32, 65681u32, 262206u32, - 131136u32, 131137u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, - 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, - 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, - 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, - 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, - 140u32, 141u32, 142u32, 143u32, 144u32, 145u32, 196673u32, 196672u32, - 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, - 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, - 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, - 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, - 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, - 142u32, 143u32, 65681u32, 262208u32, 131140u32, 131141u32, 196676u32, - 196677u32, 262213u32, 131138u32, 131139u32, 196674u32, 196675u32, - 262211u32, 44u32, 45u32, 46u32, 131132u32, 131133u32, 146u32, 147u32, - 196669u32, 262205u32, 44u32, 45u32, 46u32, 196668u32, 65683u32, - 262204u32, 131142u32, 131143u32, 196678u32, 196679u32, 262215u32, - 131144u32, 131145u32, 196680u32, 196681u32, 262217u32, 131146u32, - 131147u32, 102u32, 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, - 109u32, 110u32, 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, - 117u32, 118u32, 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, - 125u32, 126u32, 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, - 133u32, 134u32, 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, - 141u32, 142u32, 143u32, 144u32, 145u32, 196683u32, 196682u32, 102u32, - 103u32, 104u32, 105u32, 106u32, 107u32, 108u32, 109u32, 110u32, - 111u32, 112u32, 113u32, 114u32, 115u32, 116u32, 117u32, 118u32, - 119u32, 120u32, 121u32, 122u32, 123u32, 124u32, 125u32, 126u32, - 127u32, 128u32, 129u32, 130u32, 131u32, 132u32, 133u32, 134u32, - 135u32, 136u32, 137u32, 138u32, 139u32, 140u32, 141u32, 142u32, - 143u32, 65681u32, 262218u32, 131148u32, 196684u32, 65613u32, 0u32, - 47u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, 54u32, 55u32, 56u32, - 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, 64u32, 65u32, 66u32, - 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, 74u32, 75u32, 76u32, - 77u32, 78u32, 148u32, 65684u32, 149u32, 65685u32, 131221u32, - 65686u32, 131222u32, - ]; - static RULESET_OFFSETS: &[u32] = &[ - 0u32, 37u32, 40u32, 41u32, 42u32, 72u32, 74u32, 95u32, 96u32, 97u32, - 102u32, 107u32, 132u32, 133u32, 134u32, 135u32, 136u32, 164u32, - 167u32, 168u32, 182u32, 185u32, 187u32, 188u32, 189u32, 192u32, - 194u32, 195u32, 196u32, 199u32, 201u32, 202u32, 203u32, 204u32, - 215u32, 216u32, 217u32, 218u32, 219u32, 229u32, 254u32, 255u32, - 256u32, 262u32, 263u32, 264u32, 265u32, 266u32, 287u32, 292u32, - 314u32, 320u32, 321u32, 323u32, 348u32, 349u32, 350u32, 362u32, - 366u32, 367u32, 368u32, 369u32, 370u32, 371u32, 372u32, 373u32, - 374u32, 375u32, 376u32, 382u32, 384u32, 412u32, 413u32, 414u32, - 420u32, 444u32, 445u32, 455u32, 460u32, 465u32, 466u32, 467u32, - 468u32, 469u32, 470u32, 472u32, 473u32, 474u32, 475u32, 476u32, - 483u32, 484u32, 487u32, 488u32, 489u32, 490u32, 491u32, 521u32, - 528u32, 529u32, 530u32, 531u32, 536u32, 537u32, 538u32, 545u32, - 546u32, 547u32, 552u32, 553u32, 556u32, 602u32, 603u32, 604u32, - 648u32, 649u32, 650u32, 651u32, 652u32, 654u32, 655u32, 656u32, - 657u32, 658u32, 704u32, 705u32, 749u32, 750u32, 796u32, 797u32, - 841u32, 842u32, 888u32, 889u32, 933u32, 934u32, 980u32, 981u32, - 1025u32, 1026u32, 1028u32, 1029u32, 1030u32, 1031u32, 1033u32, - 1034u32, 1035u32, 1036u32, 1043u32, 1044u32, 1045u32, 1050u32, - 1051u32, 1053u32, 1054u32, 1055u32, 1056u32, 1058u32, 1059u32, - 1060u32, 1061u32, 1107u32, 1108u32, 1152u32, 1153u32, 1154u32, - 1155u32, 1156u32, 1193u32, 1194u32, 1195u32, 1196u32, + 0, 0, 3, 6, 6, 18, 72, 72, 135, 198, 198, 198, 198, 261, 324, 387, + 450, 456, 468, 480, 483, 495, 495, 507, 519, 531, 531, 543, 555, 567, + 567, 579, 591, 603, 606, 618, 618, 681, 744, 744, 744, 744, 807, 840, + 903, 966, 1029, 1092, 1092, 1143, 1149, 1182, 1188, 1188, 1194, 1200, + 1263, 1266, 1269, 1269, 1332, 1332, 1395, 1395, 1458, 1458, 1521, + 1521, 1584, 1623, 1623, 1635, 1641, 1680, 1719, 1731, 1770, 1779, + 1779, 1779, 1800, 1821, 1842, 1854, 1866, 1866, 1878, 1890, 1902, + 1914, 1923, 1935, 1941, 1947, 1953, 1962, 1968, 1968, 1968, 1968, + 1977, 1989, 1989, 1998, 2010, 2010, 2010, 2019, 2019, 2028, 2028, + 2028, 2037, 2163, 2163, 2172, 2298, 2298, 2307, 2307, 2307, 2316, + 2316, 2325, 2325, 2334, 2334, 2343, 2343, 2352, 2352, 2361, 2361, + 2370, 2370, 2379, 2379, 2388, 2388, 2397, 2397, 2406, 2406, 2415, + 2415, 2424, 2424, 2433, 2433, 2433, 2442, 2442, 2451, 2451, 2460, + 2460, 2469, 2469, 2478, 2478, 2487, 2487, 2496, 2505, 2508, 2511, + 2511, 2511, ]; static CAN_ACCEPT_ERROR: &[u8] = &[ - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 2u8, 0u8, 0u8, 0u8, 2u8, 2u8, - 2u8, 2u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, - 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, 2u8, 0u8, 0u8, 0u8, 2u8, - 0u8, 2u8, 2u8, 2u8, 2u8, 0u8, 2u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 2u8, - 1u8, 1u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 2u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 1u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, - 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, - 0u8, 0u8, 1u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 1, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, + 2, 0, 2, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, ]; - let num_states = 171usize; + let num_states = 167usize; let mut states = Vec::with_capacity(num_states); for i in 0..num_states { let term_start = SHIFT_TERM_OFFSETS[i] as usize; @@ -7395,19 +6867,6 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { reduce_map.push((term_class, rules)); idx += 2 + len; } - let ruleset_start = RULESET_OFFSETS[i] as usize; - let ruleset_end = RULESET_OFFSETS[i + 1] as usize; - let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start); - for idx in ruleset_start..ruleset_end { - let val = RULESET_DATA[idx]; - let rule = (val & 0xffff) as usize; - let shifted = (val >> 16) as usize; - ruleset - .push(::rusty_lr_core::rule::ShiftedRuleRef { - rule, - shifted, - }); - } let can_accept_error = match CAN_ACCEPT_ERROR[i] { 0 => ::rusty_lr_core::TriState::False, 1 => ::rusty_lr_core::TriState::True, @@ -7418,7 +6877,7 @@ impl ::rusty_lr_core::parser::Parser for GrammarParser { shift_goto_map_term, shift_goto_map_nonterm, reduce_map, - ruleset, + ruleset: Vec::new(), can_accept_error, }; states.push(intermediate.into()); diff --git a/scripts/bootstrap_test.sh b/scripts/bootstrap_test.sh index 6b15af3d..e49097e9 100755 --- a/scripts/bootstrap_test.sh +++ b/scripts/bootstrap_test.sh @@ -93,16 +93,16 @@ mv "$rustylr_path/scripts/diff/calculator_u8_new.rs" "$rustylr_path/scripts/diff mv "$rustylr_path/scripts/diff/json_new.rs" "$rustylr_path/scripts/diff/json.rs" echo "Setting Dense = false, GLR = false" -process_and_compare "--dense false --glr false" +process_and_compare "--layout sparse --glr false" echo "Setting Dense = false, GLR = true" -process_and_compare "--dense false --glr true" +process_and_compare "--layout sparse --glr true" echo "Setting Dense = true, GLR = false" -process_and_compare "--dense true --glr false" +process_and_compare "--layout dense --glr false" echo "Setting Dense = true, GLR = true" -process_and_compare "--dense true --glr true" +process_and_compare "--layout dense --glr true" echo "Normal configuration" process_and_compare "" diff --git a/scripts/diff/calculator.rs b/scripts/diff/calculator.rs index 4d734ed4..770087aa 100644 --- a/scripts/diff/calculator.rs +++ b/scripts/diff/calculator.rs @@ -39,7 +39,7 @@ pub type EContext = ::rusty_lr::parser::deterministic::Context; /// type alias for DFA state #[allow(non_camel_case_types, dead_code)] -pub type EState = ::rusty_lr::parser::state::SparseState< +pub type EState = ::rusty_lr::parser::state::DenseState< ETerminalClasses, ENonTerminals, u8, @@ -645,19 +645,12 @@ impl ::rusty_lr::parser::Parser for EParser { static RULES: std::sync::OnceLock> = std::sync::OnceLock::new(); RULES .get_or_init(|| { - static RULE_NAMES: &[u32] = &[ - 0u32, 0u32, 1u32, 1u32, 2u32, 2u32, 3u32, 4u32, - ]; - static RULE_PRECEDENCES: &[u32] = &[ - 1u32, 0u32, 5u32, 0u32, 0u32, 0u32, 0u32, 0u32, - ]; + static RULE_NAMES: &[u32] = &[0, 0, 1, 1, 2, 2, 3, 4]; + static RULE_PRECEDENCES: &[u32] = &[1, 0, 5, 0, 0, 0, 0, 0]; static RULE_TOKENS_DATA: &[u32] = &[ - 1u32, 2u32, 1u32, 3u32, 3u32, 4u32, 3u32, 5u32, 0u32, 6u32, 7u32, - 8u32, 1u32, 7u32, 14u32, - ]; - static RULE_TOKENS_OFFSETS: &[u32] = &[ - 0u32, 3u32, 4u32, 7u32, 8u32, 9u32, 12u32, 13u32, 15u32, + 1, 2, 1, 3, 3, 4, 3, 5, 0, 6, 7, 8, 1, 7, 14, ]; + static RULE_TOKENS_OFFSETS: &[u32] = &[0, 3, 4, 7, 8, 9, 12, 13, 15]; let num_rules = 8usize; let mut rules = Vec::with_capacity(num_rules); for i in 0..num_rules { @@ -714,49 +707,30 @@ impl ::rusty_lr::parser::Parser for EParser { STATES .get_or_init(|| { static SHIFT_TERM_DATA: &[u32] = &[ - 2147516416u32, 65539u32, 2147516416u32, 65539u32, 2147614721u32, - 2147516416u32, 65539u32, 229378u32, 2147516416u32, 65539u32, - 327684u32, 2147876871u32, + 2147516416, 65539, 2147516416, 65539, 2147614721, 2147516416, 65539, + 229378, 2147516416, 65539, 327684, 2147876871, ]; static SHIFT_TERM_OFFSETS: &[u32] = &[ - 0u32, 2u32, 2u32, 4u32, 5u32, 7u32, 7u32, 8u32, 10u32, 10u32, 11u32, - 11u32, 12u32, 12u32, + 0, 2, 2, 4, 5, 7, 7, 8, 10, 10, 11, 11, 12, 12, ]; static SHIFT_NONTERM_DATA: &[u32] = &[ - 2147581952u32, 2147680257u32, 2147680258u32, 2147844099u32, - 2147581952u32, 2147680257u32, 2147680258u32, 2147778563u32, - 2147647488u32, 2147680257u32, 2147680258u32, 2147745793u32, - 2147745794u32, + 2147581952, 2147680257, 2147680258, 2147844099, 2147581952, + 2147680257, 2147680258, 2147778563, 2147647488, 2147680257, + 2147680258, 2147745793, 2147745794, ]; static SHIFT_NONTERM_OFFSETS: &[u32] = &[ - 0u32, 4u32, 4u32, 8u32, 8u32, 11u32, 11u32, 11u32, 13u32, 13u32, - 13u32, 13u32, 13u32, 13u32, + 0, 4, 4, 8, 8, 11, 11, 11, 13, 13, 13, 13, 13, 13, ]; static REDUCE_DATA: &[u32] = &[ - 1u32, 1u32, 4u32, 2u32, 1u32, 4u32, 4u32, 1u32, 4u32, 7u32, 1u32, - 4u32, 4u32, 1u32, 6u32, 7u32, 1u32, 6u32, 1u32, 1u32, 0u32, 4u32, - 1u32, 0u32, 7u32, 1u32, 0u32, 1u32, 1u32, 1u32, 4u32, 1u32, 1u32, - 7u32, 1u32, 1u32, 1u32, 1u32, 2u32, 2u32, 1u32, 2u32, 4u32, 1u32, - 2u32, 7u32, 1u32, 2u32, 1u32, 1u32, 5u32, 2u32, 1u32, 5u32, 4u32, - 1u32, 5u32, 7u32, 1u32, 5u32, + 1, 1, 4, 2, 1, 4, 4, 1, 4, 7, 1, 4, 4, 1, 6, 7, 1, 6, 1, 1, 0, 4, 1, + 0, 7, 1, 0, 1, 1, 1, 4, 1, 1, 7, 1, 1, 1, 1, 2, 2, 1, 2, 4, 1, 2, 7, + 1, 2, 1, 1, 5, 2, 1, 5, 4, 1, 5, 7, 1, 5, ]; static REDUCE_OFFSETS: &[u32] = &[ - 0u32, 0u32, 12u32, 12u32, 18u32, 18u32, 27u32, 36u32, 36u32, 48u32, - 48u32, 60u32, 60u32, 60u32, - ]; - static RULESET_DATA: &[u32] = &[ - 0u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 65540u32, 0u32, 1u32, - 2u32, 3u32, 4u32, 5u32, 65541u32, 6u32, 65536u32, 65542u32, 0u32, - 131072u32, 1u32, 2u32, 3u32, 4u32, 5u32, 196608u32, 65537u32, - 65538u32, 2u32, 131074u32, 3u32, 4u32, 5u32, 196610u32, 131077u32, - 196613u32, 65543u32, 131079u32, - ]; - static RULESET_OFFSETS: &[u32] = &[ - 0u32, 8u32, 9u32, 17u32, 19u32, 26u32, 27u32, 29u32, 34u32, 35u32, - 36u32, 37u32, 38u32, 39u32, + 0, 0, 12, 12, 18, 18, 27, 36, 36, 48, 48, 60, 60, 60, ]; static CAN_ACCEPT_ERROR: &[u8] = &[ - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; let num_states = 13usize; let mut states = Vec::with_capacity(num_states); @@ -810,19 +784,6 @@ impl ::rusty_lr::parser::Parser for EParser { reduce_map.push((term_class, rules)); idx += 2 + len; } - let ruleset_start = RULESET_OFFSETS[i] as usize; - let ruleset_end = RULESET_OFFSETS[i + 1] as usize; - let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start); - for idx in ruleset_start..ruleset_end { - let val = RULESET_DATA[idx]; - let rule = (val & 0xffff) as usize; - let shifted = (val >> 16) as usize; - ruleset - .push(::rusty_lr::rule::ShiftedRuleRef { - rule, - shifted, - }); - } let can_accept_error = match CAN_ACCEPT_ERROR[i] { 0 => ::rusty_lr::TriState::False, 1 => ::rusty_lr::TriState::True, @@ -833,7 +794,7 @@ impl ::rusty_lr::parser::Parser for EParser { shift_goto_map_term, shift_goto_map_nonterm, reduce_map, - ruleset, + ruleset: Vec::new(), can_accept_error, }; states.push(intermediate.into()); diff --git a/scripts/diff/calculator_u8.rs b/scripts/diff/calculator_u8.rs index a9bf1174..04a035e0 100644 --- a/scripts/diff/calculator_u8.rs +++ b/scripts/diff/calculator_u8.rs @@ -40,7 +40,7 @@ pub type EContext = ::rusty_lr::parser::deterministic::Context; /// type alias for DFA state #[allow(non_camel_case_types, dead_code)] -pub type EState = ::rusty_lr::parser::state::SparseState< +pub type EState = ::rusty_lr::parser::state::DenseState< ETerminalClasses, ENonTerminals, u8, @@ -859,21 +859,17 @@ impl ::rusty_lr::parser::Parser for EParser { RULES .get_or_init(|| { static RULE_NAMES: &[u32] = &[ - 0u32, 0u32, 1u32, 2u32, 2u32, 3u32, 3u32, 3u32, 4u32, 4u32, 5u32, - 5u32, 6u32, 6u32, 7u32, 7u32, 8u32, + 0, 0, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, ]; static RULE_PRECEDENCES: &[u32] = &[ - 0u32, 0u32, 0u32, 0u32, 0u32, 6u32, 9u32, 0u32, 1u32, 5u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, + 0, 0, 0, 0, 0, 6, 9, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, ]; static RULE_TOKENS_DATA: &[u32] = &[ - 10u32, 12u32, 13u32, 15u32, 13u32, 3u32, 13u32, 4u32, 7u32, 6u32, - 13u32, 7u32, 9u32, 7u32, 13u32, 8u32, 7u32, 5u32, 16u32, 14u32, 0u32, - 11u32, 0u32, 11u32, 1u32, 15u32, 1u32, 7u32, 20u32, + 10, 12, 13, 15, 13, 3, 13, 4, 7, 6, 13, 7, 9, 7, 13, 8, 7, 5, 16, 14, + 0, 11, 0, 11, 1, 15, 1, 7, 20, ]; static RULE_TOKENS_OFFSETS: &[u32] = &[ - 0u32, 1u32, 2u32, 5u32, 6u32, 11u32, 14u32, 17u32, 18u32, 19u32, - 20u32, 21u32, 23u32, 24u32, 24u32, 25u32, 27u32, 29u32, + 0, 1, 2, 5, 6, 11, 14, 17, 18, 19, 20, 21, 23, 24, 24, 25, 27, 29, ]; let num_rules = 17usize; let mut rules = Vec::with_capacity(num_rules); @@ -931,95 +927,54 @@ impl ::rusty_lr::parser::Parser for EParser { STATES .get_or_init(|| { static SHIFT_TERM_DATA: &[u32] = &[ - 196608u32, 2147614727u32, 2147614728u32, 2147581962u32, 196608u32, - 2147614727u32, 2147614728u32, 229376u32, 294914u32, 753668u32, - 589829u32, 2148106246u32, 196608u32, 360451u32, 2147909639u32, - 2147909640u32, 196608u32, 196608u32, 2147909639u32, 2147909640u32, - 294914u32, 524292u32, 589829u32, 2148106246u32, 196608u32, 196608u32, - 589829u32, 2148171782u32, 196608u32, + 196608, 2147614727, 2147614728, 2147581962, 196608, 2147614727, + 2147614728, 229376, 294914, 753668, 589829, 2148106246, 196608, + 360451, 2147909639, 2147909640, 196608, 196608, 2147909639, + 2147909640, 294914, 524292, 589829, 2148106246, 196608, 196608, + 589829, 2148171782, 196608, ]; static SHIFT_TERM_OFFSETS: &[u32] = &[ - 0u32, 1u32, 1u32, 4u32, 4u32, 5u32, 7u32, 8u32, 8u32, 12u32, 13u32, - 16u32, 17u32, 17u32, 18u32, 20u32, 24u32, 25u32, 25u32, 25u32, 25u32, - 28u32, 28u32, 28u32, 29u32, 29u32, + 0, 1, 1, 4, 4, 5, 7, 8, 8, 12, 13, 16, 17, 17, 18, 20, 24, 25, 25, + 25, 25, 28, 28, 28, 29, 29, ]; static SHIFT_NONTERM_DATA: &[u32] = &[ - 2147516417u32, 2147549186u32, 2147549187u32, 2147680261u32, - 2147745798u32, 2147614724u32, 2147516417u32, 2147647490u32, - 2147647491u32, 2147680261u32, 2147745798u32, 2147614724u32, - 2148106240u32, 2148139015u32, 2147516417u32, 2147811330u32, - 2147811331u32, 2147680261u32, 2147975174u32, 2147909636u32, - 2147680261u32, 2147876870u32, 2147516417u32, 2147942402u32, - 2147942403u32, 2147680261u32, 2147975174u32, 2147909636u32, - 2148106240u32, 2148139015u32, 2147516417u32, 2148040706u32, - 2148040707u32, 2147680261u32, 2147975174u32, 2147909636u32, - 2148171776u32, 2147680261u32, 2148204550u32, 2147516417u32, - 2148270082u32, 2148270083u32, 2147680261u32, 2147745798u32, - 2147614724u32, + 2147516417, 2147549186, 2147549187, 2147680261, 2147745798, + 2147614724, 2147516417, 2147647490, 2147647491, 2147680261, + 2147745798, 2147614724, 2148106240, 2148139015, 2147516417, + 2147811330, 2147811331, 2147680261, 2147975174, 2147909636, + 2147680261, 2147876870, 2147516417, 2147942402, 2147942403, + 2147680261, 2147975174, 2147909636, 2148106240, 2148139015, + 2147516417, 2148040706, 2148040707, 2147680261, 2147975174, + 2147909636, 2148171776, 2147680261, 2148204550, 2147516417, + 2148270082, 2148270083, 2147680261, 2147745798, 2147614724, ]; static SHIFT_NONTERM_OFFSETS: &[u32] = &[ - 0u32, 5u32, 5u32, 6u32, 6u32, 11u32, 12u32, 12u32, 12u32, 14u32, - 19u32, 20u32, 22u32, 22u32, 27u32, 28u32, 30u32, 35u32, 36u32, 36u32, - 36u32, 39u32, 39u32, 39u32, 44u32, 45u32, + 0, 5, 5, 6, 6, 11, 12, 12, 12, 14, 19, 20, 22, 22, 27, 28, 30, 35, + 36, 36, 36, 39, 39, 39, 44, 45, ]; static REDUCE_DATA: &[u32] = &[ - 2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, 6u32, 1u32, - 13u32, 3u32, 1u32, 3u32, 7u32, 1u32, 3u32, 8u32, 1u32, 3u32, 10u32, - 1u32, 3u32, 2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, - 6u32, 1u32, 13u32, 7u32, 1u32, 5u32, 8u32, 1u32, 5u32, 10u32, 1u32, - 5u32, 2u32, 1u32, 12u32, 3u32, 1u32, 12u32, 4u32, 1u32, 12u32, 5u32, - 1u32, 12u32, 6u32, 1u32, 12u32, 7u32, 1u32, 12u32, 8u32, 1u32, 12u32, - 10u32, 1u32, 12u32, 0u32, 1u32, 11u32, 2u32, 1u32, 11u32, 3u32, 1u32, - 11u32, 4u32, 1u32, 11u32, 5u32, 1u32, 11u32, 6u32, 1u32, 11u32, 7u32, - 1u32, 11u32, 8u32, 1u32, 11u32, 10u32, 1u32, 11u32, 2u32, 1u32, - 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, 6u32, 1u32, 13u32, 3u32, - 1u32, 13u32, 7u32, 1u32, 13u32, 8u32, 1u32, 13u32, 10u32, 1u32, - 13u32, 3u32, 1u32, 4u32, 7u32, 1u32, 4u32, 8u32, 1u32, 4u32, 10u32, - 1u32, 4u32, 2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, - 6u32, 1u32, 13u32, 3u32, 1u32, 5u32, 7u32, 1u32, 5u32, 8u32, 1u32, - 5u32, 2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, 6u32, - 1u32, 13u32, 3u32, 1u32, 6u32, 7u32, 1u32, 6u32, 8u32, 1u32, 6u32, - 0u32, 1u32, 0u32, 3u32, 1u32, 0u32, 5u32, 1u32, 0u32, 6u32, 1u32, - 0u32, 7u32, 1u32, 0u32, 8u32, 1u32, 0u32, 10u32, 1u32, 0u32, 0u32, - 1u32, 14u32, 3u32, 1u32, 14u32, 5u32, 1u32, 14u32, 6u32, 1u32, 14u32, - 7u32, 1u32, 14u32, 8u32, 1u32, 14u32, 10u32, 1u32, 14u32, 3u32, 1u32, - 13u32, 7u32, 1u32, 13u32, 8u32, 1u32, 13u32, 10u32, 1u32, 13u32, - 0u32, 1u32, 15u32, 3u32, 1u32, 15u32, 5u32, 1u32, 15u32, 6u32, 1u32, - 15u32, 7u32, 1u32, 15u32, 8u32, 1u32, 15u32, 10u32, 1u32, 15u32, - 3u32, 1u32, 2u32, 7u32, 1u32, 2u32, 8u32, 1u32, 2u32, 10u32, 1u32, - 2u32, 2u32, 1u32, 13u32, 4u32, 1u32, 13u32, 5u32, 1u32, 13u32, 6u32, - 1u32, 13u32, 7u32, 1u32, 6u32, 8u32, 1u32, 6u32, 10u32, 1u32, 6u32, + 2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13, 3, 1, 3, 7, 1, 3, 8, 1, 3, + 10, 1, 3, 2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13, 7, 1, 5, 8, 1, 5, + 10, 1, 5, 2, 1, 12, 3, 1, 12, 4, 1, 12, 5, 1, 12, 6, 1, 12, 7, 1, 12, + 8, 1, 12, 10, 1, 12, 0, 1, 11, 2, 1, 11, 3, 1, 11, 4, 1, 11, 5, 1, + 11, 6, 1, 11, 7, 1, 11, 8, 1, 11, 10, 1, 11, 2, 1, 13, 4, 1, 13, 5, + 1, 13, 6, 1, 13, 3, 1, 13, 7, 1, 13, 8, 1, 13, 10, 1, 13, 3, 1, 4, 7, + 1, 4, 8, 1, 4, 10, 1, 4, 2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13, 3, + 1, 5, 7, 1, 5, 8, 1, 5, 2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13, 3, 1, + 6, 7, 1, 6, 8, 1, 6, 0, 1, 0, 3, 1, 0, 5, 1, 0, 6, 1, 0, 7, 1, 0, 8, + 1, 0, 10, 1, 0, 0, 1, 14, 3, 1, 14, 5, 1, 14, 6, 1, 14, 7, 1, 14, 8, + 1, 14, 10, 1, 14, 3, 1, 13, 7, 1, 13, 8, 1, 13, 10, 1, 13, 0, 1, 15, + 3, 1, 15, 5, 1, 15, 6, 1, 15, 7, 1, 15, 8, 1, 15, 10, 1, 15, 3, 1, 2, + 7, 1, 2, 8, 1, 2, 10, 1, 2, 2, 1, 13, 4, 1, 13, 5, 1, 13, 6, 1, 13, + 7, 1, 6, 8, 1, 6, 10, 1, 6, ]; static REDUCE_OFFSETS: &[u32] = &[ - 0u32, 12u32, 24u32, 24u32, 24u32, 36u32, 45u32, 69u32, 96u32, 96u32, - 108u32, 108u32, 120u32, 132u32, 144u32, 153u32, 153u32, 165u32, - 174u32, 195u32, 216u32, 228u32, 249u32, 261u32, 273u32, 282u32, - ]; - static RULESET_DATA: &[u32] = &[ - 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 10u32, 11u32, 12u32, 13u32, - 16u32, 65539u32, 65541u32, 8u32, 9u32, 65552u32, 131088u32, 2u32, - 3u32, 4u32, 5u32, 131077u32, 6u32, 7u32, 10u32, 11u32, 12u32, 13u32, - 65541u32, 196613u32, 8u32, 9u32, 65547u32, 65548u32, 131083u32, 0u32, - 1u32, 65538u32, 65540u32, 65542u32, 14u32, 15u32, 2u32, 3u32, 4u32, - 131076u32, 5u32, 6u32, 7u32, 10u32, 11u32, 12u32, 13u32, 196612u32, - 65541u32, 8u32, 9u32, 262148u32, 10u32, 11u32, 12u32, 13u32, - 327684u32, 2u32, 3u32, 4u32, 5u32, 131077u32, 6u32, 7u32, 10u32, - 11u32, 12u32, 13u32, 65541u32, 196613u32, 8u32, 9u32, 0u32, 1u32, - 65538u32, 65540u32, 65542u32, 14u32, 15u32, 2u32, 3u32, 4u32, 5u32, - 6u32, 131078u32, 7u32, 10u32, 11u32, 12u32, 13u32, 65541u32, - 196614u32, 65536u32, 65550u32, 0u32, 1u32, 131074u32, 10u32, 11u32, - 12u32, 13u32, 65551u32, 131087u32, 196610u32, 2u32, 3u32, 4u32, 5u32, - 6u32, 131078u32, 7u32, 10u32, 11u32, 12u32, 13u32, 65541u32, - 196614u32, - ]; - static RULESET_OFFSETS: &[u32] = &[ - 0u32, 11u32, 12u32, 16u32, 17u32, 28u32, 32u32, 34u32, 35u32, 42u32, - 53u32, 57u32, 62u32, 63u32, 74u32, 78u32, 85u32, 96u32, 98u32, 99u32, - 100u32, 108u32, 109u32, 110u32, 121u32, 123u32, + 0, 12, 24, 24, 24, 36, 45, 69, 96, 96, 108, 108, 120, 132, 144, 153, + 153, 165, 174, 195, 216, 228, 249, 261, 273, 282, ]; static CAN_ACCEPT_ERROR: &[u8] = &[ - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, ]; let num_states = 25usize; let mut states = Vec::with_capacity(num_states); @@ -1073,19 +1028,6 @@ impl ::rusty_lr::parser::Parser for EParser { reduce_map.push((term_class, rules)); idx += 2 + len; } - let ruleset_start = RULESET_OFFSETS[i] as usize; - let ruleset_end = RULESET_OFFSETS[i + 1] as usize; - let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start); - for idx in ruleset_start..ruleset_end { - let val = RULESET_DATA[idx]; - let rule = (val & 0xffff) as usize; - let shifted = (val >> 16) as usize; - ruleset - .push(::rusty_lr::rule::ShiftedRuleRef { - rule, - shifted, - }); - } let can_accept_error = match CAN_ACCEPT_ERROR[i] { 0 => ::rusty_lr::TriState::False, 1 => ::rusty_lr::TriState::True, @@ -1096,7 +1038,7 @@ impl ::rusty_lr::parser::Parser for EParser { shift_goto_map_term, shift_goto_map_nonterm, reduce_map, - ruleset, + ruleset: Vec::new(), can_accept_error, }; states.push(intermediate.into()); diff --git a/scripts/diff/json.rs b/scripts/diff/json.rs index 616a5ac0..44e1a665 100644 --- a/scripts/diff/json.rs +++ b/scripts/diff/json.rs @@ -1936,57 +1936,39 @@ impl ::rusty_lr::parser::Parser for JsonParser { RULES .get_or_init(|| { static RULE_NAMES: &[u32] = &[ - 0u32, 1u32, 1u32, 1u32, 1u32, 1u32, 1u32, 1u32, 2u32, 2u32, 2u32, - 3u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 8u32, 9u32, 9u32, 9u32, - 9u32, 9u32, 9u32, 9u32, 9u32, 9u32, 10u32, 10u32, 10u32, 11u32, - 12u32, 12u32, 12u32, 12u32, 13u32, 13u32, 13u32, 14u32, 14u32, 14u32, - 15u32, 15u32, 15u32, 16u32, 17u32, 18u32, 19u32, 19u32, 20u32, 20u32, - 21u32, 21u32, 22u32, 22u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, - 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, - 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, 23u32, - 23u32, 24u32, 24u32, 25u32, 25u32, 25u32, 25u32, 25u32, 26u32, 26u32, - 27u32, 27u32, 28u32, 29u32, 29u32, 30u32, 31u32, + 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 10, 10, 10, 11, 12, 12, 12, 12, 13, 13, 13, 14, 14, + 14, 15, 15, 15, 16, 17, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 25, 25, 25, 25, 25, 26, 26, + 27, 27, 28, 29, 29, 30, 31, ]; static RULE_PRECEDENCES: &[u32] = &[ - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, - 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, ]; static RULE_TOKENS_DATA: &[u32] = &[ - 13u32, 5u32, 11u32, 15u32, 23u32, 33u32, 35u32, 37u32, 54u32, 31u32, - 56u32, 54u32, 7u32, 56u32, 54u32, 62u32, 56u32, 9u32, 9u32, 24u32, - 7u32, 31u32, 15u32, 31u32, 32u32, 13u32, 40u32, 41u32, 42u32, 31u32, - 3u32, 31u32, 58u32, 45u32, 58u32, 60u32, 19u32, 47u32, 58u32, 60u32, - 8u32, 10u32, 12u32, 14u32, 16u32, 18u32, 52u32, 21u32, 21u32, 21u32, - 21u32, 55u32, 49u32, 51u32, 25u32, 59u32, 27u32, 55u32, 30u32, 53u32, - 22u32, 55u32, 22u32, 30u32, 53u32, 61u32, 36u32, 29u32, 53u32, 38u32, - 29u32, 53u32, 61u32, 20u32, 22u32, 61u32, 2u32, 31u32, 0u32, 31u32, - 18u32, 16u32, 52u32, 38u32, 12u32, 44u32, 48u32, 50u32, 38u32, 14u32, - 52u32, 48u32, 48u32, 13u32, 13u32, 24u32, 39u32, 39u32, 17u32, 17u32, - 43u32, 43u32, 2u32, 6u32, 20u32, 24u32, 22u32, 26u32, 8u32, 28u32, - 30u32, 32u32, 34u32, 36u32, 40u32, 42u32, 44u32, 10u32, 46u32, 38u32, - 12u32, 48u32, 14u32, 16u32, 50u32, 18u32, 52u32, 54u32, 56u32, 34u32, - 36u32, 44u32, 10u32, 46u32, 38u32, 12u32, 55u32, 55u32, 53u32, 28u32, - 30u32, 26u32, 53u32, 57u32, 1u32, 64u32, + 13, 5, 11, 15, 23, 33, 35, 37, 54, 31, 56, 54, 7, 56, 54, 62, 56, 9, + 9, 24, 7, 31, 15, 31, 32, 13, 40, 41, 42, 31, 3, 31, 58, 45, 58, 60, + 19, 47, 58, 60, 8, 10, 12, 14, 16, 18, 52, 21, 21, 21, 21, 55, 49, + 51, 25, 59, 27, 55, 30, 53, 22, 55, 22, 30, 53, 61, 36, 29, 53, 38, + 29, 53, 61, 20, 22, 61, 2, 31, 0, 31, 18, 16, 52, 38, 12, 44, 48, 50, + 38, 14, 52, 48, 48, 13, 13, 24, 39, 39, 17, 17, 43, 43, 2, 6, 20, 24, + 22, 26, 8, 28, 30, 32, 34, 36, 40, 42, 44, 10, 46, 38, 12, 48, 14, + 16, 50, 18, 52, 54, 56, 34, 36, 44, 10, 46, 38, 12, 55, 55, 53, 28, + 30, 26, 53, 57, 1, 64, ]; static RULE_TOKENS_OFFSETS: &[u32] = &[ - 0u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 11u32, 14u32, - 17u32, 18u32, 21u32, 26u32, 29u32, 32u32, 35u32, 37u32, 38u32, 39u32, - 40u32, 41u32, 42u32, 43u32, 44u32, 45u32, 46u32, 51u32, 52u32, 53u32, - 54u32, 57u32, 58u32, 60u32, 62u32, 65u32, 66u32, 69u32, 72u32, 73u32, - 74u32, 75u32, 76u32, 78u32, 80u32, 84u32, 89u32, 93u32, 94u32, 97u32, - 98u32, 98u32, 99u32, 101u32, 102u32, 102u32, 103u32, 104u32, 105u32, - 106u32, 107u32, 108u32, 109u32, 110u32, 111u32, 112u32, 113u32, - 114u32, 115u32, 116u32, 117u32, 118u32, 119u32, 120u32, 121u32, - 122u32, 123u32, 124u32, 125u32, 126u32, 127u32, 128u32, 129u32, - 130u32, 131u32, 132u32, 133u32, 134u32, 135u32, 136u32, 137u32, - 139u32, 140u32, 141u32, 143u32, 144u32, 144u32, 144u32, 146u32, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 17, 18, 21, 26, 29, 32, 35, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 57, 58, 60, 62, + 65, 66, 69, 72, 73, 74, 75, 76, 78, 80, 84, 89, 93, 94, 97, 98, 98, + 99, 101, 102, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, + 143, 144, 144, 144, 146, ]; let num_rules = 99usize; let mut rules = Vec::with_capacity(num_rules); @@ -2044,379 +2026,186 @@ impl ::rusty_lr::parser::Parser for JsonParser { STATES .get_or_init(|| { static SHIFT_TERM_DATA: &[u32] = &[ - 32768u32, 65537u32, 32768u32, 65537u32, 32768u32, 65537u32, - 2147680288u32, 262150u32, 425991u32, 557065u32, 688139u32, - 3604494u32, 884751u32, 950292u32, 1277979u32, 1703965u32, 294934u32, - 327704u32, 360473u32, 393235u32, 458778u32, 491544u32, 524312u32, - 589832u32, 622618u32, 655379u32, 851982u32, 720911u32, 786446u32, - 786447u32, 786446u32, 786447u32, 786446u32, 786447u32, 32768u32, - 65537u32, 1015820u32, 32768u32, 65537u32, 262150u32, 425991u32, - 557065u32, 1081355u32, 3178510u32, 1179663u32, 950292u32, 1277979u32, - 1703965u32, 851982u32, 1114127u32, 1146894u32, 1146895u32, - 1146894u32, 1146895u32, 1146894u32, 1146895u32, 1245205u32, - 1310720u32, 1343489u32, 2148859935u32, 1310720u32, 1343489u32, - 1310720u32, 1343489u32, 1409052u32, 1474588u32, 1540108u32, - 1572864u32, 1605633u32, 1572864u32, 1605633u32, 1572864u32, - 1605633u32, 1703965u32, 1966081u32, 1966083u32, 1966084u32, - 1966085u32, 1966086u32, 1966087u32, 1966088u32, 1966089u32, - 1966090u32, 1966091u32, 1966092u32, 1966093u32, 1966094u32, - 1966095u32, 1966096u32, 1966097u32, 1966098u32, 1966099u32, - 1966100u32, 1966101u32, 1966102u32, 1966103u32, 1966104u32, - 1966105u32, 1966106u32, 1966107u32, 1966108u32, 1736734u32, - 1933316u32, 1933317u32, 1933318u32, 1933319u32, 1933320u32, - 1933321u32, 1769498u32, 1933341u32, 1933342u32, 1802245u32, - 1802246u32, 1802254u32, 1802255u32, 1802257u32, 1802258u32, - 1802259u32, 1802262u32, 1802263u32, 1835013u32, 1835014u32, - 1835022u32, 1835023u32, 1835025u32, 1835026u32, 1835027u32, - 1835030u32, 1835031u32, 1867781u32, 1867782u32, 1867790u32, - 1867791u32, 1867793u32, 1867794u32, 1867795u32, 1867798u32, - 1867799u32, 1900549u32, 1900550u32, 1900558u32, 1900559u32, - 1900561u32, 1900562u32, 1900563u32, 1900566u32, 1900567u32, - 1966081u32, 1966083u32, 1966084u32, 1966085u32, 1966086u32, - 1966087u32, 1966088u32, 1966089u32, 1966090u32, 1966091u32, - 1966092u32, 1966093u32, 1966094u32, 1966095u32, 1966096u32, - 1966097u32, 1966098u32, 1966099u32, 1966100u32, 1966101u32, - 1966102u32, 1966103u32, 1966104u32, 1966105u32, 1966106u32, - 1966107u32, 1966108u32, 1736734u32, 2064413u32, 2129920u32, - 2162689u32, 2129920u32, 2162689u32, 2129920u32, 2162689u32, - 2228240u32, 32768u32, 65537u32, 262150u32, 425991u32, 557065u32, - 2326539u32, 2654222u32, 2424847u32, 950292u32, 1277979u32, - 1703965u32, 851982u32, 2359311u32, 2392078u32, 2392079u32, - 2392078u32, 2392079u32, 2392078u32, 2392079u32, 2490396u32, - 1703965u32, 2555904u32, 2588673u32, 2555904u32, 2588673u32, - 2555904u32, 2588673u32, 2686989u32, 2752526u32, 2752527u32, - 2752526u32, 2752527u32, 2818066u32, 2949139u32, 2850826u32, - 2850827u32, 2916366u32, 2916367u32, 2916366u32, 2916367u32, - 2981898u32, 2981899u32, 2916366u32, 2916367u32, 3112960u32, - 3145729u32, 3112960u32, 3145729u32, 3112960u32, 3145729u32, - 3211277u32, 3244046u32, 3244047u32, 3244046u32, 3244047u32, - 3309586u32, 3407891u32, 3342346u32, 3342347u32, 3375118u32, - 3375119u32, 3375118u32, 3375119u32, 3440650u32, 3440651u32, - 3375118u32, 3375119u32, 3538944u32, 3571713u32, 3538944u32, - 3571713u32, 3538944u32, 3571713u32, 3637261u32, 3670030u32, - 3670031u32, 3670030u32, 3670031u32, 3735570u32, 3833875u32, - 3768330u32, 3768331u32, 3801102u32, 3801103u32, 3801102u32, - 3801103u32, 3866634u32, 3866635u32, 3801102u32, 3801103u32, + 32768, 65537, 32768, 65537, 32768, 65537, 2147680288, 262150, 425991, + 557065, 688139, 3604494, 884751, 950292, 1277979, 1703965, 294934, + 327704, 360473, 393235, 458778, 491544, 524312, 589832, 622618, + 655379, 851982, 720911, 786446, 786447, 786446, 786447, 786446, + 786447, 32768, 65537, 1015820, 32768, 65537, 262150, 425991, 557065, + 1081355, 3178510, 1179663, 950292, 1277979, 1703965, 851982, 1114127, + 1146894, 1146895, 1146894, 1146895, 1146894, 1146895, 1245205, + 1310720, 1343489, 2148859935, 1310720, 1343489, 1310720, 1343489, + 1409052, 1474588, 1540108, 1572864, 1605633, 1572864, 1605633, + 1572864, 1605633, 1703965, 1966081, 1966083, 1966084, 1966085, + 1966086, 1966087, 1966088, 1966089, 1966090, 1966091, 1966092, + 1966093, 1966094, 1966095, 1966096, 1966097, 1966098, 1966099, + 1966100, 1966101, 1966102, 1966103, 1966104, 1966105, 1966106, + 1966107, 1966108, 1736734, 1933316, 1933317, 1933318, 1933319, + 1933320, 1933321, 1769498, 1933341, 1933342, 1802245, 1802246, + 1802254, 1802255, 1802257, 1802258, 1802259, 1802262, 1802263, + 1835013, 1835014, 1835022, 1835023, 1835025, 1835026, 1835027, + 1835030, 1835031, 1867781, 1867782, 1867790, 1867791, 1867793, + 1867794, 1867795, 1867798, 1867799, 1900549, 1900550, 1900558, + 1900559, 1900561, 1900562, 1900563, 1900566, 1900567, 1966081, + 1966083, 1966084, 1966085, 1966086, 1966087, 1966088, 1966089, + 1966090, 1966091, 1966092, 1966093, 1966094, 1966095, 1966096, + 1966097, 1966098, 1966099, 1966100, 1966101, 1966102, 1966103, + 1966104, 1966105, 1966106, 1966107, 1966108, 1736734, 2064413, + 2129920, 2162689, 2129920, 2162689, 2129920, 2162689, 2228240, 32768, + 65537, 262150, 425991, 557065, 2326539, 2654222, 2424847, 950292, + 1277979, 1703965, 851982, 2359311, 2392078, 2392079, 2392078, + 2392079, 2392078, 2392079, 2490396, 1703965, 2555904, 2588673, + 2555904, 2588673, 2555904, 2588673, 2686989, 2752526, 2752527, + 2752526, 2752527, 2818066, 2949139, 2850826, 2850827, 2916366, + 2916367, 2916366, 2916367, 2981898, 2981899, 2916366, 2916367, + 3112960, 3145729, 3112960, 3145729, 3112960, 3145729, 3211277, + 3244046, 3244047, 3244046, 3244047, 3309586, 3407891, 3342346, + 3342347, 3375118, 3375119, 3375118, 3375119, 3440650, 3440651, + 3375118, 3375119, 3538944, 3571713, 3538944, 3571713, 3538944, + 3571713, 3637261, 3670030, 3670031, 3670030, 3670031, 3735570, + 3833875, 3768330, 3768331, 3801102, 3801103, 3801102, 3801103, + 3866634, 3866635, 3801102, 3801103, ]; static SHIFT_TERM_OFFSETS: &[u32] = &[ - 0u32, 2u32, 4u32, 6u32, 6u32, 6u32, 7u32, 7u32, 16u32, 17u32, 18u32, - 19u32, 20u32, 20u32, 21u32, 22u32, 23u32, 23u32, 24u32, 25u32, 26u32, - 26u32, 28u32, 30u32, 30u32, 32u32, 32u32, 32u32, 34u32, 34u32, 36u32, - 37u32, 39u32, 48u32, 50u32, 52u32, 54u32, 56u32, 57u32, 57u32, 60u32, - 62u32, 64u32, 65u32, 65u32, 66u32, 66u32, 67u32, 69u32, 71u32, 73u32, - 73u32, 74u32, 102u32, 111u32, 120u32, 129u32, 138u32, 147u32, 147u32, - 147u32, 175u32, 175u32, 176u32, 176u32, 178u32, 180u32, 182u32, - 183u32, 185u32, 185u32, 194u32, 196u32, 198u32, 200u32, 202u32, - 204u32, 204u32, 206u32, 208u32, 210u32, 210u32, 211u32, 213u32, - 213u32, 215u32, 217u32, 219u32, 221u32, 221u32, 223u32, 225u32, - 227u32, 227u32, 227u32, 229u32, 231u32, 233u32, 234u32, 236u32, - 238u32, 240u32, 242u32, 244u32, 246u32, 248u32, 250u32, 250u32, - 252u32, 254u32, 256u32, 257u32, 259u32, 261u32, 263u32, 265u32, - 267u32, 269u32, 271u32, 273u32, + 0, 2, 4, 6, 6, 6, 7, 7, 16, 17, 18, 19, 20, 20, 21, 22, 23, 23, 24, + 25, 26, 26, 28, 30, 30, 32, 32, 32, 34, 34, 36, 37, 39, 48, 50, 52, + 54, 56, 57, 57, 60, 62, 64, 65, 65, 66, 66, 67, 69, 71, 73, 73, 74, + 102, 111, 120, 129, 138, 147, 147, 147, 175, 175, 176, 176, 178, 180, + 182, 183, 185, 185, 194, 196, 198, 200, 202, 204, 204, 206, 208, 210, + 210, 211, 213, 213, 215, 217, 219, 221, 221, 223, 225, 227, 227, 227, + 229, 231, 233, 234, 236, 238, 240, 242, 244, 246, 248, 250, 250, 252, + 254, 256, 257, 259, 261, 263, 265, 267, 269, 271, 273, ]; static SHIFT_NONTERM_DATA: &[u32] = &[ - 2147647488u32, 163846u32, 2147713039u32, 229406u32, 2147614735u32, - 131102u32, 2147581967u32, 98334u32, 2150989825u32, 3506178u32, - 3506181u32, 3506183u32, 3506187u32, 2151088140u32, 3506192u32, - 3506193u32, 3506194u32, 3604507u32, 2148335643u32, 2148237338u32, - 2148270107u32, 2148302874u32, 2148270107u32, 2148401178u32, - 2148270107u32, 2148466694u32, 2148532239u32, 1212435u32, - 2148696084u32, 1048606u32, 2148466694u32, 2148532239u32, - 2150957075u32, 1048606u32, 2150563841u32, 3080194u32, 3080197u32, - 3080199u32, 3080203u32, 2150662156u32, 3080208u32, 3080209u32, - 3080210u32, 3178523u32, 2148335643u32, 2148237338u32, 2148630555u32, - 2148302874u32, 2148630555u32, 2148401178u32, 2148630555u32, - 2148925443u32, 2148990980u32, 2149941263u32, 2457630u32, - 2147614735u32, 131102u32, 2147581967u32, 98334u32, 2149122051u32, - 2148990980u32, 2149154831u32, 1671198u32, 2147614735u32, 131102u32, - 2147581967u32, 98334u32, 2149580807u32, 2149449736u32, 2031637u32, - 2149515286u32, 1966103u32, 2149416969u32, 2149285898u32, 1802264u32, - 1802265u32, 1802267u32, 2149318666u32, 1835032u32, 1835033u32, - 1835035u32, 2149351434u32, 1867800u32, 1867801u32, 1867803u32, - 2149384202u32, 1900568u32, 1900569u32, 1900571u32, 2149449736u32, - 2149482517u32, 1966103u32, 2149679119u32, 2195486u32, 2147614735u32, - 131102u32, 2147581967u32, 98334u32, 2149744646u32, 2149777423u32, - 2293790u32, 2150006785u32, 2523138u32, 2523141u32, 2523143u32, - 2523147u32, 2150137868u32, 2523152u32, 2523153u32, 2523154u32, - 2654235u32, 2148335643u32, 2148237338u32, 2149875739u32, - 2148302874u32, 2149875739u32, 2148401178u32, 2149875739u32, - 2149580807u32, 2150105103u32, 2621470u32, 2147614735u32, 131102u32, - 2147581967u32, 98334u32, 2785308u32, 2150268957u32, 2150203418u32, - 2150236187u32, 2148302874u32, 2150236187u32, 2150531085u32, - 3047454u32, 2150334478u32, 2850846u32, 2150367258u32, 2150400027u32, - 2148302874u32, 2150400027u32, 2150465550u32, 2981918u32, - 2150498330u32, 2150400027u32, 2150105103u32, 2621470u32, - 2147614735u32, 131102u32, 2147581967u32, 98334u32, 3276828u32, - 2150760477u32, 2150203418u32, 2150727707u32, 2148302874u32, - 2150727707u32, 2150531085u32, 3047454u32, 2150825998u32, 3342366u32, - 2150367258u32, 2150858779u32, 2148302874u32, 2150858779u32, - 2150924302u32, 3440670u32, 2150498330u32, 2150858779u32, - 2150105103u32, 2621470u32, 2147614735u32, 131102u32, 2147581967u32, - 98334u32, 3702812u32, 2151186461u32, 2150203418u32, 2151153691u32, - 2148302874u32, 2151153691u32, 2150531085u32, 3047454u32, - 2151251982u32, 3768350u32, 2150367258u32, 2151284763u32, - 2148302874u32, 2151284763u32, 2151350286u32, 3866654u32, - 2150498330u32, 2151284763u32, + 2147647488, 163846, 2147713039, 229406, 2147614735, 131102, + 2147581967, 98334, 2150989825, 3506178, 3506181, 3506183, 3506187, + 2151088140, 3506192, 3506193, 3506194, 3604507, 2148335643, + 2148237338, 2148270107, 2148302874, 2148270107, 2148401178, + 2148270107, 2148466694, 2148532239, 1212435, 2148696084, 1048606, + 2148466694, 2148532239, 2150957075, 1048606, 2150563841, 3080194, + 3080197, 3080199, 3080203, 2150662156, 3080208, 3080209, 3080210, + 3178523, 2148335643, 2148237338, 2148630555, 2148302874, 2148630555, + 2148401178, 2148630555, 2148925443, 2148990980, 2149941263, 2457630, + 2147614735, 131102, 2147581967, 98334, 2149122051, 2148990980, + 2149154831, 1671198, 2147614735, 131102, 2147581967, 98334, + 2149580807, 2149449736, 2031637, 2149515286, 1966103, 2149416969, + 2149285898, 1802264, 1802265, 1802267, 2149318666, 1835032, 1835033, + 1835035, 2149351434, 1867800, 1867801, 1867803, 2149384202, 1900568, + 1900569, 1900571, 2149449736, 2149482517, 1966103, 2149679119, + 2195486, 2147614735, 131102, 2147581967, 98334, 2149744646, + 2149777423, 2293790, 2150006785, 2523138, 2523141, 2523143, 2523147, + 2150137868, 2523152, 2523153, 2523154, 2654235, 2148335643, + 2148237338, 2149875739, 2148302874, 2149875739, 2148401178, + 2149875739, 2149580807, 2150105103, 2621470, 2147614735, 131102, + 2147581967, 98334, 2785308, 2150268957, 2150203418, 2150236187, + 2148302874, 2150236187, 2150531085, 3047454, 2150334478, 2850846, + 2150367258, 2150400027, 2148302874, 2150400027, 2150465550, 2981918, + 2150498330, 2150400027, 2150105103, 2621470, 2147614735, 131102, + 2147581967, 98334, 3276828, 2150760477, 2150203418, 2150727707, + 2148302874, 2150727707, 2150531085, 3047454, 2150825998, 3342366, + 2150367258, 2150858779, 2148302874, 2150858779, 2150924302, 3440670, + 2150498330, 2150858779, 2150105103, 2621470, 2147614735, 131102, + 2147581967, 98334, 3702812, 2151186461, 2150203418, 2151153691, + 2148302874, 2151153691, 2150531085, 3047454, 2151251982, 3768350, + 2150367258, 2151284763, 2148302874, 2151284763, 2151350286, 3866654, + 2150498330, 2151284763, ]; static SHIFT_NONTERM_OFFSETS: &[u32] = &[ - 0u32, 4u32, 6u32, 8u32, 8u32, 8u32, 8u32, 8u32, 18u32, 18u32, 18u32, - 18u32, 18u32, 18u32, 18u32, 18u32, 18u32, 18u32, 18u32, 18u32, 18u32, - 18u32, 19u32, 21u32, 21u32, 23u32, 23u32, 23u32, 25u32, 25u32, 30u32, - 30u32, 34u32, 44u32, 45u32, 47u32, 49u32, 51u32, 51u32, 51u32, 55u32, - 57u32, 59u32, 59u32, 59u32, 59u32, 59u32, 59u32, 63u32, 65u32, 67u32, - 67u32, 68u32, 72u32, 73u32, 77u32, 81u32, 85u32, 89u32, 89u32, 89u32, - 92u32, 92u32, 92u32, 92u32, 94u32, 96u32, 98u32, 98u32, 101u32, - 101u32, 111u32, 112u32, 114u32, 116u32, 118u32, 119u32, 119u32, - 121u32, 123u32, 125u32, 125u32, 127u32, 129u32, 129u32, 131u32, - 133u32, 135u32, 137u32, 137u32, 139u32, 141u32, 143u32, 143u32, - 143u32, 145u32, 147u32, 149u32, 151u32, 153u32, 155u32, 157u32, - 159u32, 161u32, 163u32, 165u32, 167u32, 167u32, 169u32, 171u32, - 173u32, 175u32, 177u32, 179u32, 181u32, 183u32, 185u32, 187u32, - 189u32, 191u32, + 0, 4, 6, 8, 8, 8, 8, 8, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 19, 21, 21, 23, 23, 23, 25, 25, 30, 30, 34, 44, 45, 47, + 49, 51, 51, 51, 55, 57, 59, 59, 59, 59, 59, 59, 63, 65, 67, 67, 68, + 72, 73, 77, 81, 85, 89, 89, 89, 92, 92, 92, 92, 94, 96, 98, 98, 101, + 101, 111, 112, 114, 116, 118, 119, 119, 121, 123, 125, 125, 127, 129, + 129, 131, 133, 135, 137, 137, 139, 141, 143, 143, 143, 145, 147, 149, + 151, 153, 155, 157, 159, 161, 163, 165, 167, 167, 169, 171, 173, 175, + 177, 179, 181, 183, 185, 187, 189, 191, ]; static REDUCE_DATA: &[u32] = &[ - 6u32, 1u32, 97u32, 7u32, 1u32, 97u32, 9u32, 1u32, 97u32, 11u32, 1u32, - 97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 20u32, 1u32, 97u32, - 27u32, 1u32, 97u32, 29u32, 1u32, 97u32, 6u32, 1u32, 97u32, 7u32, - 1u32, 97u32, 9u32, 1u32, 97u32, 11u32, 1u32, 97u32, 14u32, 1u32, - 97u32, 15u32, 1u32, 97u32, 20u32, 1u32, 97u32, 27u32, 1u32, 97u32, - 29u32, 1u32, 97u32, 6u32, 1u32, 97u32, 7u32, 1u32, 97u32, 9u32, 1u32, - 97u32, 11u32, 1u32, 97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, - 20u32, 1u32, 97u32, 27u32, 1u32, 97u32, 29u32, 1u32, 97u32, 6u32, - 1u32, 43u32, 7u32, 1u32, 43u32, 9u32, 1u32, 43u32, 11u32, 1u32, - 43u32, 12u32, 1u32, 43u32, 14u32, 1u32, 43u32, 15u32, 1u32, 43u32, - 16u32, 1u32, 43u32, 20u32, 1u32, 43u32, 21u32, 1u32, 43u32, 27u32, - 1u32, 43u32, 28u32, 1u32, 43u32, 29u32, 1u32, 43u32, 32u32, 1u32, - 43u32, 6u32, 1u32, 44u32, 7u32, 1u32, 44u32, 9u32, 1u32, 44u32, - 11u32, 1u32, 44u32, 12u32, 1u32, 44u32, 14u32, 1u32, 44u32, 15u32, - 1u32, 44u32, 16u32, 1u32, 44u32, 20u32, 1u32, 44u32, 21u32, 1u32, - 44u32, 27u32, 1u32, 44u32, 28u32, 1u32, 44u32, 29u32, 1u32, 44u32, - 32u32, 1u32, 44u32, 0u32, 1u32, 46u32, 1u32, 1u32, 46u32, 12u32, - 1u32, 46u32, 21u32, 1u32, 46u32, 28u32, 1u32, 46u32, 32u32, 1u32, - 46u32, 0u32, 1u32, 47u32, 1u32, 1u32, 47u32, 12u32, 1u32, 47u32, - 21u32, 1u32, 47u32, 28u32, 1u32, 47u32, 32u32, 1u32, 47u32, 0u32, - 1u32, 45u32, 1u32, 1u32, 45u32, 12u32, 1u32, 45u32, 21u32, 1u32, - 45u32, 28u32, 1u32, 45u32, 32u32, 1u32, 45u32, 0u32, 1u32, 93u32, - 1u32, 1u32, 93u32, 13u32, 1u32, 93u32, 18u32, 1u32, 93u32, 19u32, - 1u32, 93u32, 32u32, 1u32, 93u32, 0u32, 1u32, 35u32, 1u32, 1u32, - 35u32, 12u32, 1u32, 35u32, 13u32, 1u32, 35u32, 18u32, 1u32, 35u32, - 19u32, 1u32, 35u32, 21u32, 1u32, 35u32, 28u32, 1u32, 35u32, 32u32, - 1u32, 35u32, 0u32, 1u32, 90u32, 1u32, 1u32, 90u32, 13u32, 1u32, - 90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 32u32, 1u32, 90u32, - 0u32, 1u32, 91u32, 1u32, 1u32, 91u32, 12u32, 1u32, 91u32, 13u32, - 1u32, 91u32, 18u32, 1u32, 91u32, 19u32, 1u32, 91u32, 21u32, 1u32, - 91u32, 28u32, 1u32, 91u32, 32u32, 1u32, 91u32, 0u32, 1u32, 34u32, - 1u32, 1u32, 34u32, 12u32, 1u32, 34u32, 13u32, 1u32, 34u32, 18u32, - 1u32, 34u32, 19u32, 1u32, 34u32, 21u32, 1u32, 34u32, 28u32, 1u32, - 34u32, 32u32, 1u32, 34u32, 0u32, 1u32, 93u32, 1u32, 1u32, 93u32, - 13u32, 1u32, 93u32, 18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 32u32, - 1u32, 93u32, 0u32, 1u32, 33u32, 1u32, 1u32, 33u32, 12u32, 1u32, - 33u32, 13u32, 1u32, 33u32, 18u32, 1u32, 33u32, 19u32, 1u32, 33u32, - 21u32, 1u32, 33u32, 28u32, 1u32, 33u32, 32u32, 1u32, 33u32, 6u32, - 1u32, 97u32, 7u32, 1u32, 97u32, 9u32, 1u32, 97u32, 11u32, 1u32, - 97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 20u32, 1u32, 97u32, - 21u32, 1u32, 51u32, 27u32, 1u32, 97u32, 29u32, 1u32, 97u32, 21u32, - 1u32, 48u32, 6u32, 1u32, 97u32, 7u32, 1u32, 97u32, 9u32, 1u32, 97u32, - 11u32, 1u32, 97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 20u32, - 1u32, 97u32, 27u32, 1u32, 97u32, 29u32, 1u32, 97u32, 0u32, 1u32, - 93u32, 1u32, 1u32, 93u32, 12u32, 1u32, 93u32, 13u32, 1u32, 93u32, - 18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 21u32, 1u32, 93u32, 0u32, - 1u32, 90u32, 1u32, 1u32, 90u32, 12u32, 1u32, 90u32, 13u32, 1u32, - 90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 21u32, 1u32, 90u32, - 0u32, 1u32, 93u32, 1u32, 1u32, 93u32, 12u32, 1u32, 93u32, 13u32, - 1u32, 93u32, 18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 21u32, 1u32, - 93u32, 0u32, 1u32, 14u32, 1u32, 1u32, 14u32, 12u32, 1u32, 14u32, - 21u32, 1u32, 14u32, 28u32, 1u32, 14u32, 32u32, 1u32, 14u32, 28u32, - 1u32, 97u32, 29u32, 1u32, 97u32, 28u32, 1u32, 97u32, 29u32, 1u32, - 97u32, 28u32, 1u32, 97u32, 29u32, 1u32, 97u32, 0u32, 1u32, 10u32, - 1u32, 1u32, 10u32, 12u32, 1u32, 10u32, 21u32, 1u32, 10u32, 28u32, - 1u32, 10u32, 32u32, 1u32, 10u32, 0u32, 1u32, 9u32, 1u32, 1u32, 9u32, - 12u32, 1u32, 9u32, 21u32, 1u32, 9u32, 28u32, 1u32, 9u32, 32u32, 1u32, - 9u32, 28u32, 1u32, 11u32, 29u32, 1u32, 97u32, 29u32, 1u32, 97u32, - 29u32, 1u32, 97u32, 28u32, 1u32, 12u32, 29u32, 1u32, 55u32, 1u32, - 1u32, 27u32, 3u32, 1u32, 27u32, 4u32, 1u32, 27u32, 5u32, 1u32, 27u32, - 6u32, 1u32, 27u32, 7u32, 1u32, 27u32, 8u32, 1u32, 27u32, 9u32, 1u32, - 27u32, 10u32, 1u32, 27u32, 11u32, 1u32, 27u32, 12u32, 1u32, 27u32, - 13u32, 1u32, 27u32, 14u32, 1u32, 27u32, 15u32, 1u32, 27u32, 16u32, - 1u32, 27u32, 17u32, 1u32, 27u32, 18u32, 1u32, 27u32, 19u32, 1u32, - 27u32, 20u32, 1u32, 27u32, 21u32, 1u32, 27u32, 22u32, 1u32, 27u32, - 23u32, 1u32, 27u32, 24u32, 1u32, 27u32, 25u32, 1u32, 27u32, 26u32, - 1u32, 27u32, 27u32, 1u32, 27u32, 28u32, 1u32, 27u32, 29u32, 1u32, - 27u32, 30u32, 1u32, 27u32, 1u32, 1u32, 17u32, 3u32, 1u32, 17u32, - 4u32, 1u32, 17u32, 5u32, 1u32, 17u32, 6u32, 1u32, 17u32, 7u32, 1u32, - 17u32, 8u32, 1u32, 17u32, 9u32, 1u32, 17u32, 10u32, 1u32, 17u32, - 11u32, 1u32, 17u32, 12u32, 1u32, 17u32, 13u32, 1u32, 17u32, 14u32, - 1u32, 17u32, 15u32, 1u32, 17u32, 16u32, 1u32, 17u32, 17u32, 1u32, - 17u32, 18u32, 1u32, 17u32, 19u32, 1u32, 17u32, 20u32, 1u32, 17u32, - 21u32, 1u32, 17u32, 22u32, 1u32, 17u32, 23u32, 1u32, 17u32, 24u32, - 1u32, 17u32, 25u32, 1u32, 17u32, 26u32, 1u32, 17u32, 27u32, 1u32, - 17u32, 28u32, 1u32, 17u32, 29u32, 1u32, 17u32, 30u32, 1u32, 17u32, - 29u32, 1u32, 52u32, 29u32, 1u32, 53u32, 0u32, 1u32, 16u32, 1u32, - 1u32, 16u32, 12u32, 1u32, 16u32, 16u32, 1u32, 16u32, 21u32, 1u32, - 16u32, 28u32, 1u32, 16u32, 32u32, 1u32, 16u32, 16u32, 1u32, 97u32, - 16u32, 1u32, 97u32, 16u32, 1u32, 97u32, 6u32, 1u32, 97u32, 7u32, - 1u32, 97u32, 9u32, 1u32, 97u32, 11u32, 1u32, 97u32, 14u32, 1u32, - 97u32, 15u32, 1u32, 97u32, 20u32, 1u32, 97u32, 27u32, 1u32, 97u32, - 29u32, 1u32, 97u32, 12u32, 1u32, 13u32, 28u32, 1u32, 13u32, 0u32, - 1u32, 93u32, 1u32, 1u32, 93u32, 12u32, 1u32, 93u32, 13u32, 1u32, - 93u32, 18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 28u32, 1u32, 93u32, - 0u32, 1u32, 90u32, 1u32, 1u32, 90u32, 12u32, 1u32, 90u32, 13u32, - 1u32, 90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 28u32, 1u32, - 90u32, 0u32, 1u32, 93u32, 1u32, 1u32, 93u32, 12u32, 1u32, 93u32, - 13u32, 1u32, 93u32, 18u32, 1u32, 93u32, 19u32, 1u32, 93u32, 28u32, - 1u32, 93u32, 0u32, 1u32, 8u32, 1u32, 1u32, 8u32, 12u32, 1u32, 8u32, - 21u32, 1u32, 8u32, 28u32, 1u32, 8u32, 32u32, 1u32, 8u32, 12u32, 1u32, - 97u32, 28u32, 1u32, 97u32, 12u32, 1u32, 97u32, 28u32, 1u32, 97u32, - 12u32, 1u32, 97u32, 28u32, 1u32, 97u32, 12u32, 1u32, 15u32, 21u32, - 1u32, 15u32, 28u32, 1u32, 15u32, 32u32, 1u32, 15u32, 0u32, 1u32, - 96u32, 1u32, 1u32, 96u32, 12u32, 1u32, 96u32, 18u32, 1u32, 96u32, - 19u32, 1u32, 96u32, 28u32, 1u32, 96u32, 0u32, 1u32, 94u32, 1u32, - 1u32, 94u32, 12u32, 1u32, 94u32, 18u32, 1u32, 94u32, 19u32, 1u32, - 94u32, 21u32, 1u32, 94u32, 28u32, 1u32, 94u32, 32u32, 1u32, 94u32, - 0u32, 1u32, 90u32, 1u32, 1u32, 90u32, 12u32, 1u32, 90u32, 18u32, - 1u32, 90u32, 19u32, 1u32, 90u32, 28u32, 1u32, 90u32, 0u32, 1u32, - 97u32, 1u32, 1u32, 97u32, 12u32, 1u32, 97u32, 28u32, 1u32, 97u32, - 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 0u32, 1u32, 37u32, 1u32, - 1u32, 37u32, 12u32, 1u32, 37u32, 21u32, 1u32, 37u32, 28u32, 1u32, - 37u32, 32u32, 1u32, 37u32, 0u32, 1u32, 90u32, 1u32, 1u32, 90u32, - 12u32, 1u32, 90u32, 28u32, 1u32, 90u32, 14u32, 1u32, 97u32, 15u32, - 1u32, 97u32, 0u32, 1u32, 38u32, 1u32, 1u32, 38u32, 12u32, 1u32, - 38u32, 21u32, 1u32, 38u32, 28u32, 1u32, 38u32, 32u32, 1u32, 38u32, - 0u32, 1u32, 31u32, 1u32, 1u32, 31u32, 12u32, 1u32, 31u32, 21u32, - 1u32, 31u32, 28u32, 1u32, 31u32, 32u32, 1u32, 31u32, 12u32, 1u32, - 97u32, 21u32, 1u32, 97u32, 12u32, 1u32, 97u32, 21u32, 1u32, 97u32, - 12u32, 1u32, 97u32, 21u32, 1u32, 97u32, 0u32, 1u32, 96u32, 1u32, - 1u32, 96u32, 12u32, 1u32, 96u32, 18u32, 1u32, 96u32, 19u32, 1u32, - 96u32, 21u32, 1u32, 96u32, 0u32, 1u32, 90u32, 1u32, 1u32, 90u32, - 12u32, 1u32, 90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 21u32, - 1u32, 90u32, 0u32, 1u32, 97u32, 1u32, 1u32, 97u32, 12u32, 1u32, - 97u32, 21u32, 1u32, 97u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, - 0u32, 1u32, 90u32, 1u32, 1u32, 90u32, 12u32, 1u32, 90u32, 21u32, - 1u32, 90u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, 21u32, 1u32, - 49u32, 32u32, 1u32, 97u32, 32u32, 1u32, 97u32, 32u32, 1u32, 97u32, - 0u32, 1u32, 96u32, 1u32, 1u32, 96u32, 18u32, 1u32, 96u32, 19u32, - 1u32, 96u32, 32u32, 1u32, 96u32, 0u32, 1u32, 90u32, 1u32, 1u32, - 90u32, 18u32, 1u32, 90u32, 19u32, 1u32, 90u32, 32u32, 1u32, 90u32, - 0u32, 1u32, 97u32, 1u32, 1u32, 97u32, 32u32, 1u32, 97u32, 14u32, - 1u32, 97u32, 15u32, 1u32, 97u32, 0u32, 1u32, 90u32, 1u32, 1u32, - 90u32, 32u32, 1u32, 90u32, 14u32, 1u32, 97u32, 15u32, 1u32, 97u32, + 6, 1, 97, 7, 1, 97, 9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1, + 97, 27, 1, 97, 29, 1, 97, 6, 1, 97, 7, 1, 97, 9, 1, 97, 11, 1, 97, + 14, 1, 97, 15, 1, 97, 20, 1, 97, 27, 1, 97, 29, 1, 97, 6, 1, 97, 7, + 1, 97, 9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1, 97, 27, 1, + 97, 29, 1, 97, 6, 1, 43, 7, 1, 43, 9, 1, 43, 11, 1, 43, 12, 1, 43, + 14, 1, 43, 15, 1, 43, 16, 1, 43, 20, 1, 43, 21, 1, 43, 27, 1, 43, 28, + 1, 43, 29, 1, 43, 32, 1, 43, 6, 1, 44, 7, 1, 44, 9, 1, 44, 11, 1, 44, + 12, 1, 44, 14, 1, 44, 15, 1, 44, 16, 1, 44, 20, 1, 44, 21, 1, 44, 27, + 1, 44, 28, 1, 44, 29, 1, 44, 32, 1, 44, 0, 1, 46, 1, 1, 46, 12, 1, + 46, 21, 1, 46, 28, 1, 46, 32, 1, 46, 0, 1, 47, 1, 1, 47, 12, 1, 47, + 21, 1, 47, 28, 1, 47, 32, 1, 47, 0, 1, 45, 1, 1, 45, 12, 1, 45, 21, + 1, 45, 28, 1, 45, 32, 1, 45, 0, 1, 93, 1, 1, 93, 13, 1, 93, 18, 1, + 93, 19, 1, 93, 32, 1, 93, 0, 1, 35, 1, 1, 35, 12, 1, 35, 13, 1, 35, + 18, 1, 35, 19, 1, 35, 21, 1, 35, 28, 1, 35, 32, 1, 35, 0, 1, 90, 1, + 1, 90, 13, 1, 90, 18, 1, 90, 19, 1, 90, 32, 1, 90, 0, 1, 91, 1, 1, + 91, 12, 1, 91, 13, 1, 91, 18, 1, 91, 19, 1, 91, 21, 1, 91, 28, 1, 91, + 32, 1, 91, 0, 1, 34, 1, 1, 34, 12, 1, 34, 13, 1, 34, 18, 1, 34, 19, + 1, 34, 21, 1, 34, 28, 1, 34, 32, 1, 34, 0, 1, 93, 1, 1, 93, 13, 1, + 93, 18, 1, 93, 19, 1, 93, 32, 1, 93, 0, 1, 33, 1, 1, 33, 12, 1, 33, + 13, 1, 33, 18, 1, 33, 19, 1, 33, 21, 1, 33, 28, 1, 33, 32, 1, 33, 6, + 1, 97, 7, 1, 97, 9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1, + 97, 21, 1, 51, 27, 1, 97, 29, 1, 97, 21, 1, 48, 6, 1, 97, 7, 1, 97, + 9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1, 97, 27, 1, 97, 29, + 1, 97, 0, 1, 93, 1, 1, 93, 12, 1, 93, 13, 1, 93, 18, 1, 93, 19, 1, + 93, 21, 1, 93, 0, 1, 90, 1, 1, 90, 12, 1, 90, 13, 1, 90, 18, 1, 90, + 19, 1, 90, 21, 1, 90, 0, 1, 93, 1, 1, 93, 12, 1, 93, 13, 1, 93, 18, + 1, 93, 19, 1, 93, 21, 1, 93, 0, 1, 14, 1, 1, 14, 12, 1, 14, 21, 1, + 14, 28, 1, 14, 32, 1, 14, 28, 1, 97, 29, 1, 97, 28, 1, 97, 29, 1, 97, + 28, 1, 97, 29, 1, 97, 0, 1, 10, 1, 1, 10, 12, 1, 10, 21, 1, 10, 28, + 1, 10, 32, 1, 10, 0, 1, 9, 1, 1, 9, 12, 1, 9, 21, 1, 9, 28, 1, 9, 32, + 1, 9, 28, 1, 11, 29, 1, 97, 29, 1, 97, 29, 1, 97, 28, 1, 12, 29, 1, + 55, 1, 1, 27, 3, 1, 27, 4, 1, 27, 5, 1, 27, 6, 1, 27, 7, 1, 27, 8, 1, + 27, 9, 1, 27, 10, 1, 27, 11, 1, 27, 12, 1, 27, 13, 1, 27, 14, 1, 27, + 15, 1, 27, 16, 1, 27, 17, 1, 27, 18, 1, 27, 19, 1, 27, 20, 1, 27, 21, + 1, 27, 22, 1, 27, 23, 1, 27, 24, 1, 27, 25, 1, 27, 26, 1, 27, 27, 1, + 27, 28, 1, 27, 29, 1, 27, 30, 1, 27, 1, 1, 17, 3, 1, 17, 4, 1, 17, 5, + 1, 17, 6, 1, 17, 7, 1, 17, 8, 1, 17, 9, 1, 17, 10, 1, 17, 11, 1, 17, + 12, 1, 17, 13, 1, 17, 14, 1, 17, 15, 1, 17, 16, 1, 17, 17, 1, 17, 18, + 1, 17, 19, 1, 17, 20, 1, 17, 21, 1, 17, 22, 1, 17, 23, 1, 17, 24, 1, + 17, 25, 1, 17, 26, 1, 17, 27, 1, 17, 28, 1, 17, 29, 1, 17, 30, 1, 17, + 29, 1, 52, 29, 1, 53, 0, 1, 16, 1, 1, 16, 12, 1, 16, 16, 1, 16, 21, + 1, 16, 28, 1, 16, 32, 1, 16, 16, 1, 97, 16, 1, 97, 16, 1, 97, 6, 1, + 97, 7, 1, 97, 9, 1, 97, 11, 1, 97, 14, 1, 97, 15, 1, 97, 20, 1, 97, + 27, 1, 97, 29, 1, 97, 12, 1, 13, 28, 1, 13, 0, 1, 93, 1, 1, 93, 12, + 1, 93, 13, 1, 93, 18, 1, 93, 19, 1, 93, 28, 1, 93, 0, 1, 90, 1, 1, + 90, 12, 1, 90, 13, 1, 90, 18, 1, 90, 19, 1, 90, 28, 1, 90, 0, 1, 93, + 1, 1, 93, 12, 1, 93, 13, 1, 93, 18, 1, 93, 19, 1, 93, 28, 1, 93, 0, + 1, 8, 1, 1, 8, 12, 1, 8, 21, 1, 8, 28, 1, 8, 32, 1, 8, 12, 1, 97, 28, + 1, 97, 12, 1, 97, 28, 1, 97, 12, 1, 97, 28, 1, 97, 12, 1, 15, 21, 1, + 15, 28, 1, 15, 32, 1, 15, 0, 1, 96, 1, 1, 96, 12, 1, 96, 18, 1, 96, + 19, 1, 96, 28, 1, 96, 0, 1, 94, 1, 1, 94, 12, 1, 94, 18, 1, 94, 19, + 1, 94, 21, 1, 94, 28, 1, 94, 32, 1, 94, 0, 1, 90, 1, 1, 90, 12, 1, + 90, 18, 1, 90, 19, 1, 90, 28, 1, 90, 0, 1, 97, 1, 1, 97, 12, 1, 97, + 28, 1, 97, 14, 1, 97, 15, 1, 97, 0, 1, 37, 1, 1, 37, 12, 1, 37, 21, + 1, 37, 28, 1, 37, 32, 1, 37, 0, 1, 90, 1, 1, 90, 12, 1, 90, 28, 1, + 90, 14, 1, 97, 15, 1, 97, 0, 1, 38, 1, 1, 38, 12, 1, 38, 21, 1, 38, + 28, 1, 38, 32, 1, 38, 0, 1, 31, 1, 1, 31, 12, 1, 31, 21, 1, 31, 28, + 1, 31, 32, 1, 31, 12, 1, 97, 21, 1, 97, 12, 1, 97, 21, 1, 97, 12, 1, + 97, 21, 1, 97, 0, 1, 96, 1, 1, 96, 12, 1, 96, 18, 1, 96, 19, 1, 96, + 21, 1, 96, 0, 1, 90, 1, 1, 90, 12, 1, 90, 18, 1, 90, 19, 1, 90, 21, + 1, 90, 0, 1, 97, 1, 1, 97, 12, 1, 97, 21, 1, 97, 14, 1, 97, 15, 1, + 97, 0, 1, 90, 1, 1, 90, 12, 1, 90, 21, 1, 90, 14, 1, 97, 15, 1, 97, + 21, 1, 49, 32, 1, 97, 32, 1, 97, 32, 1, 97, 0, 1, 96, 1, 1, 96, 18, + 1, 96, 19, 1, 96, 32, 1, 96, 0, 1, 90, 1, 1, 90, 18, 1, 90, 19, 1, + 90, 32, 1, 90, 0, 1, 97, 1, 1, 97, 32, 1, 97, 14, 1, 97, 15, 1, 97, + 0, 1, 90, 1, 1, 90, 32, 1, 90, 14, 1, 97, 15, 1, 97, ]; static REDUCE_OFFSETS: &[u32] = &[ - 0u32, 27u32, 54u32, 81u32, 123u32, 165u32, 165u32, 165u32, 165u32, - 165u32, 165u32, 165u32, 165u32, 183u32, 183u32, 183u32, 183u32, - 201u32, 201u32, 201u32, 201u32, 219u32, 219u32, 237u32, 264u32, - 282u32, 309u32, 336u32, 354u32, 381u32, 411u32, 414u32, 441u32, - 441u32, 441u32, 462u32, 483u32, 504u32, 504u32, 522u32, 528u32, - 534u32, 540u32, 540u32, 558u32, 558u32, 576u32, 579u32, 582u32, - 585u32, 588u32, 591u32, 591u32, 594u32, 594u32, 594u32, 594u32, - 594u32, 594u32, 681u32, 768u32, 771u32, 774u32, 774u32, 795u32, - 798u32, 801u32, 804u32, 804u32, 831u32, 837u32, 837u32, 837u32, - 858u32, 879u32, 900u32, 900u32, 918u32, 924u32, 930u32, 936u32, - 948u32, 966u32, 966u32, 990u32, 1008u32, 1020u32, 1026u32, 1026u32, - 1044u32, 1056u32, 1062u32, 1062u32, 1080u32, 1098u32, 1104u32, - 1110u32, 1116u32, 1134u32, 1134u32, 1152u32, 1164u32, 1170u32, - 1170u32, 1182u32, 1188u32, 1188u32, 1191u32, 1194u32, 1197u32, - 1200u32, 1215u32, 1215u32, 1230u32, 1239u32, 1245u32, 1245u32, - 1254u32, 1260u32, 1260u32, - ]; - static RULESET_DATA: &[u32] = &[ - 0u32, 15u32, 42u32, 43u32, 44u32, 97u32, 98u32, 42u32, 43u32, 44u32, - 65580u32, 97u32, 42u32, 43u32, 65579u32, 44u32, 97u32, 131115u32, - 131116u32, 65634u32, 131170u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, - 7u32, 8u32, 9u32, 10u32, 14u32, 65551u32, 16u32, 31u32, 32u32, 33u32, - 34u32, 35u32, 45u32, 46u32, 47u32, 92u32, 93u32, 65582u32, 131118u32, - 196654u32, 262190u32, 327726u32, 65583u32, 131119u32, 196655u32, - 262191u32, 65581u32, 131117u32, 196653u32, 262189u32, 65570u32, - 65571u32, 92u32, 93u32, 131107u32, 90u32, 91u32, 92u32, 93u32, - 65629u32, 196643u32, 90u32, 65626u32, 91u32, 65627u32, 92u32, 93u32, - 131163u32, 131106u32, 65569u32, 90u32, 91u32, 92u32, 93u32, 65629u32, - 131105u32, 65550u32, 15u32, 42u32, 43u32, 44u32, 48u32, 49u32, 50u32, - 51u32, 97u32, 65584u32, 65585u32, 15u32, 42u32, 43u32, 44u32, 48u32, - 49u32, 131121u32, 97u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, - 8u32, 9u32, 10u32, 14u32, 65551u32, 16u32, 31u32, 32u32, 33u32, - 34u32, 35u32, 45u32, 46u32, 47u32, 92u32, 93u32, 65570u32, 65571u32, - 92u32, 93u32, 131107u32, 90u32, 91u32, 92u32, 93u32, 65629u32, 90u32, - 65626u32, 91u32, 65627u32, 92u32, 93u32, 65569u32, 90u32, 91u32, - 92u32, 93u32, 65629u32, 131086u32, 196622u32, 65544u32, 65545u32, - 65546u32, 11u32, 12u32, 13u32, 42u32, 43u32, 44u32, 97u32, 42u32, - 43u32, 44u32, 65580u32, 97u32, 42u32, 43u32, 65579u32, 44u32, 97u32, - 131082u32, 196618u32, 131081u32, 196617u32, 65547u32, 65548u32, - 11u32, 12u32, 131084u32, 13u32, 42u32, 43u32, 44u32, 97u32, 42u32, - 43u32, 44u32, 65580u32, 97u32, 42u32, 43u32, 65579u32, 44u32, 97u32, - 196620u32, 65549u32, 16u32, 65552u32, 17u32, 18u32, 52u32, 53u32, - 54u32, 55u32, 56u32, 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, - 64u32, 65u32, 66u32, 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, - 74u32, 75u32, 76u32, 77u32, 78u32, 79u32, 80u32, 81u32, 82u32, - 65553u32, 19u32, 20u32, 21u32, 22u32, 23u32, 24u32, 25u32, 26u32, - 27u32, 65563u32, 28u32, 29u32, 30u32, 83u32, 84u32, 85u32, 86u32, - 87u32, 88u32, 89u32, 92u32, 93u32, 131099u32, 28u32, 29u32, 30u32, - 83u32, 84u32, 85u32, 86u32, 87u32, 88u32, 89u32, 92u32, 93u32, - 196635u32, 28u32, 29u32, 30u32, 83u32, 84u32, 85u32, 86u32, 87u32, - 88u32, 89u32, 92u32, 93u32, 262171u32, 28u32, 29u32, 30u32, 83u32, - 84u32, 85u32, 86u32, 87u32, 88u32, 89u32, 92u32, 93u32, 327707u32, - 131089u32, 17u32, 18u32, 52u32, 65588u32, 53u32, 65589u32, 56u32, - 57u32, 58u32, 59u32, 60u32, 61u32, 62u32, 63u32, 64u32, 65u32, 66u32, - 67u32, 68u32, 69u32, 70u32, 71u32, 72u32, 73u32, 74u32, 75u32, 76u32, - 77u32, 78u32, 79u32, 80u32, 81u32, 82u32, 131125u32, 131088u32, - 196624u32, 131085u32, 42u32, 43u32, 44u32, 97u32, 42u32, 43u32, - 44u32, 65580u32, 97u32, 42u32, 43u32, 65579u32, 44u32, 97u32, - 196621u32, 262157u32, 15u32, 42u32, 43u32, 44u32, 97u32, 327693u32, - 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 9u32, 10u32, 14u32, - 65551u32, 16u32, 31u32, 32u32, 33u32, 34u32, 35u32, 45u32, 46u32, - 47u32, 92u32, 93u32, 65570u32, 65571u32, 92u32, 93u32, 131107u32, - 90u32, 91u32, 92u32, 93u32, 65629u32, 90u32, 65626u32, 91u32, - 65627u32, 92u32, 93u32, 65569u32, 90u32, 91u32, 92u32, 93u32, - 65629u32, 131080u32, 65549u32, 16u32, 196616u32, 131087u32, 42u32, - 43u32, 44u32, 97u32, 42u32, 43u32, 44u32, 65580u32, 97u32, 42u32, - 43u32, 65579u32, 44u32, 97u32, 196623u32, 65567u32, 94u32, 95u32, - 96u32, 90u32, 91u32, 92u32, 93u32, 65630u32, 131166u32, 90u32, - 65626u32, 91u32, 65627u32, 92u32, 93u32, 131103u32, 36u32, 37u32, - 38u32, 97u32, 65573u32, 39u32, 40u32, 41u32, 97u32, 131109u32, 90u32, - 91u32, 92u32, 93u32, 196645u32, 90u32, 65626u32, 91u32, 65627u32, - 92u32, 93u32, 65574u32, 39u32, 40u32, 41u32, 97u32, 131110u32, 90u32, - 91u32, 92u32, 93u32, 196646u32, 196639u32, 131087u32, 42u32, 43u32, - 44u32, 97u32, 42u32, 43u32, 44u32, 65580u32, 97u32, 42u32, 43u32, - 65579u32, 44u32, 97u32, 65567u32, 94u32, 95u32, 96u32, 90u32, 91u32, - 92u32, 93u32, 65630u32, 90u32, 65626u32, 91u32, 65627u32, 92u32, - 93u32, 131103u32, 36u32, 37u32, 38u32, 97u32, 65573u32, 39u32, 40u32, - 41u32, 97u32, 131109u32, 90u32, 91u32, 92u32, 93u32, 90u32, 65626u32, - 91u32, 65627u32, 92u32, 93u32, 65574u32, 39u32, 40u32, 41u32, 97u32, - 131110u32, 90u32, 91u32, 92u32, 93u32, 196657u32, 131087u32, 42u32, - 43u32, 44u32, 97u32, 42u32, 43u32, 44u32, 65580u32, 97u32, 42u32, - 43u32, 65579u32, 44u32, 97u32, 65567u32, 94u32, 95u32, 96u32, 90u32, - 91u32, 92u32, 93u32, 65630u32, 90u32, 65626u32, 91u32, 65627u32, - 92u32, 93u32, 131103u32, 36u32, 37u32, 38u32, 97u32, 65573u32, 39u32, - 40u32, 41u32, 97u32, 131109u32, 90u32, 91u32, 92u32, 93u32, 90u32, - 65626u32, 91u32, 65627u32, 92u32, 93u32, 65574u32, 39u32, 40u32, - 41u32, 97u32, 131110u32, 90u32, 91u32, 92u32, 93u32, - ]; - static RULESET_OFFSETS: &[u32] = &[ - 0u32, 7u32, 12u32, 17u32, 18u32, 19u32, 20u32, 21u32, 44u32, 45u32, - 46u32, 47u32, 48u32, 49u32, 50u32, 51u32, 52u32, 53u32, 54u32, 55u32, - 56u32, 57u32, 61u32, 67u32, 68u32, 74u32, 75u32, 76u32, 82u32, 83u32, - 93u32, 95u32, 103u32, 126u32, 130u32, 136u32, 142u32, 148u32, 149u32, - 150u32, 160u32, 165u32, 170u32, 171u32, 172u32, 173u32, 174u32, - 176u32, 184u32, 189u32, 194u32, 195u32, 197u32, 231u32, 241u32, - 254u32, 267u32, 280u32, 293u32, 294u32, 295u32, 328u32, 329u32, - 330u32, 331u32, 336u32, 341u32, 346u32, 347u32, 353u32, 354u32, - 377u32, 381u32, 387u32, 393u32, 399u32, 402u32, 403u32, 408u32, - 413u32, 418u32, 419u32, 423u32, 428u32, 429u32, 435u32, 440u32, - 445u32, 450u32, 451u32, 457u32, 462u32, 467u32, 468u32, 469u32, - 474u32, 479u32, 484u32, 488u32, 493u32, 499u32, 504u32, 509u32, - 514u32, 520u32, 525u32, 530u32, 531u32, 536u32, 541u32, 546u32, - 550u32, 555u32, 561u32, 566u32, 571u32, 576u32, 582u32, 587u32, - 592u32, + 0, 27, 54, 81, 123, 165, 165, 165, 165, 165, 165, 165, 165, 183, 183, + 183, 183, 201, 201, 201, 201, 219, 219, 237, 264, 282, 309, 336, 354, + 381, 411, 414, 441, 441, 441, 462, 483, 504, 504, 522, 528, 534, 540, + 540, 558, 558, 576, 579, 582, 585, 588, 591, 591, 594, 594, 594, 594, + 594, 594, 681, 768, 771, 774, 774, 795, 798, 801, 804, 804, 831, 837, + 837, 837, 858, 879, 900, 900, 918, 924, 930, 936, 948, 966, 966, 990, + 1008, 1020, 1026, 1026, 1044, 1056, 1062, 1062, 1080, 1098, 1104, + 1110, 1116, 1134, 1134, 1152, 1164, 1170, 1170, 1182, 1188, 1188, + 1191, 1194, 1197, 1200, 1215, 1215, 1230, 1239, 1245, 1245, 1254, + 1260, 1260, ]; static CAN_ACCEPT_ERROR: &[u8] = &[ - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, - 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, ]; let num_states = 119usize; let mut states = Vec::with_capacity(num_states); @@ -2474,19 +2263,6 @@ impl ::rusty_lr::parser::Parser for JsonParser { reduce_map.push((term_class, rules)); idx += 2 + len; } - let ruleset_start = RULESET_OFFSETS[i] as usize; - let ruleset_end = RULESET_OFFSETS[i + 1] as usize; - let mut ruleset = Vec::with_capacity(ruleset_end - ruleset_start); - for idx in ruleset_start..ruleset_end { - let val = RULESET_DATA[idx]; - let rule = (val & 0xffff) as usize; - let shifted = (val >> 16) as usize; - ruleset - .push(::rusty_lr::rule::ShiftedRuleRef { - rule, - shifted, - }); - } let can_accept_error = match CAN_ACCEPT_ERROR[i] { 0 => ::rusty_lr::TriState::False, 1 => ::rusty_lr::TriState::True, @@ -2497,7 +2273,7 @@ impl ::rusty_lr::parser::Parser for JsonParser { shift_goto_map_term, shift_goto_map_nonterm, reduce_map, - ruleset, + ruleset: Vec::new(), can_accept_error, }; states.push(intermediate.into());