diff --git a/examples/hello.np b/examples/hello.np index 673ecd7..f5e8f5e 100644 --- a/examples/hello.np +++ b/examples/hello.np @@ -1,3 +1,4 @@ println(123); println(None); -println("hell world"); +message = "hell world"; +println(message); diff --git a/src/compile/compiler.rs b/src/compile/compiler.rs index e2a62c9..e7a23c5 100644 --- a/src/compile/compiler.rs +++ b/src/compile/compiler.rs @@ -37,7 +37,17 @@ impl Compiler { fn emit_stmt(&mut self, stmt: &SpStmt) -> Thunk { match stmt.inner() { - Stmt::Assign(_lhs_expr, _expr) => todo!(), + Stmt::Assign(lhs_expr, expr) => match lhs_expr.inner() { + AssignLhs::Name(n) => { + let name = self.scope().lookup_scoped(n).unwrap(); + let mut thunk = self.emit_expr(expr); + thunk.push(Inst::Store(name)); + thunk + } + AssignLhs::Complex(_, _) => { + todo!("Complex LHS foo.bar assign") + } + }, Stmt::Expr(expr) => { let mut thunk = self.emit_expr(expr); thunk.push(Inst::Pop); @@ -91,7 +101,7 @@ impl Compiler { fn gather_names(&mut self, stmts: &Vec) { for stmt in stmts { match stmt.inner() { - Stmt::Assign(lhs, _) => match lhs { + Stmt::Assign(lhs, _) => match lhs.inner() { AssignLhs::Name(name) => { self.scope_mut().insert_local(name); } diff --git a/src/syn/ast.rs b/src/syn/ast.rs index 082fd05..0276225 100644 --- a/src/syn/ast.rs +++ b/src/syn/ast.rs @@ -2,7 +2,7 @@ use crate::syn::Spanned; #[derive(Debug, Clone)] pub enum Stmt { - Assign(AssignLhs, Expr), + Assign(SpAssignLhs, SpExpr), Expr(SpExpr), If { if_true: SpCondExpr, @@ -20,6 +20,8 @@ pub enum Stmt { }, } +pub type SpAssignLhs = Spanned; + #[derive(Debug, Clone)] pub enum AssignLhs { /// A simple assignment. diff --git a/src/syn/parser.lalrpop b/src/syn/parser.lalrpop index 37a77c9..2ae1038 100644 --- a/src/syn/parser.lalrpop +++ b/src/syn/parser.lalrpop @@ -22,6 +22,13 @@ pub SpStmt = Spanned; pub Stmt: Stmt = { => Stmt::Expr(<>), + "=" => Stmt::Assign(lhs, expr), +} + +pub SpAssignLhs = Spanned; + +pub AssignLhs: AssignLhs = { + => { AssignLhs::Name(<>) } } pub SpExpr = Spanned; diff --git a/src/syn/parser.rs b/src/syn/parser.rs index d6866e0..ab4a34c 100644 --- a/src/syn/parser.rs +++ b/src/syn/parser.rs @@ -1,5 +1,5 @@ // auto-generated: "lalrpop 0.19.9" -// sha3: 9f2f643359fa262b9e763802a5a6af68d8022e5e2da5a7822efcb3749ed1b711 +// sha3: 0726ef7fadf69dda69d89a6ed417384f733fb20c2ae0e92b5c0ce4f4b4e3e3ee use std::str::FromStr; use crate::syn::{Span, Spanned, unescape}; use crate::syn::ast::*; @@ -11,7 +11,7 @@ extern crate core; extern crate alloc; #[cfg_attr(rustfmt, rustfmt_skip)] -mod __parse__Atom { +mod __parse__AssignLhs { #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)] use std::str::FromStr; @@ -33,65 +33,45 @@ mod __parse__Atom { Variant3(Spanned), Variant4(alloc::vec::Vec>), Variant5(usize), - Variant6(Atom), - Variant7(Expr), - Variant8(Vec), - Variant9(i64), - Variant10(String), - Variant11(Spanned), - Variant12(core::option::Option>), - Variant13(core::option::Option>), - Variant14(Stmt), + Variant6(AssignLhs), + Variant7(Atom), + Variant8(Expr), + Variant9(Vec), + Variant10(i64), + Variant11(String), + Variant12(Spanned), + Variant13(Spanned), + Variant14(core::option::Option>), + Variant15(core::option::Option>), + Variant16(Stmt), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 6, 7, 8, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 4, // State 1 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 2 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 3 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 4 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 7 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 8 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 8 + integer] + __ACTION[(state as usize) * 9 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 0, // State 1 - -41, + -45, // State 2 - -14, - // State 3 - -15, - // State 4 -13, - // State 5 - -39, - // State 6 - -40, - // State 7 - -26, - // State 8 - -27, + // State 3 + -28, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { 8 => 1, - 11 => 2, - 12 => 3, - 22 => 4, + 13 => 2, _ => 0, } } @@ -101,6 +81,7 @@ mod __parse__Atom { r###"")""###, r###"",""###, r###"";""###, + r###""=""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -129,7 +110,7 @@ mod __parse__Atom { type Token = Token<'input>; type TokenIndex = usize; type Symbol = __Symbol<'input>; - type Success = Atom; + type Success = AssignLhs; type StateIndex = i8; type Action = i8; type ReduceIndex = i8; @@ -157,7 +138,7 @@ mod __parse__Atom { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 8 - 1) + __action(state, 9 - 1) } #[inline] @@ -224,10 +205,11 @@ mod __parse__Atom { Token(5, _) if true => Some(1), Token(6, _) if true => Some(2), Token(7, _) if true => Some(3), - Token(0, _) if true => Some(4), - Token(1, _) if true => Some(5), - Token(2, _) if true => Some(6), - Token(3, _) if true => Some(7), + Token(8, _) if true => Some(4), + Token(0, _) if true => Some(5), + Token(1, _) if true => Some(6), + Token(2, _) if true => Some(7), + Token(3, _) if true => Some(8), _ => None, } } @@ -240,8 +222,1575 @@ mod __parse__Atom { ) -> __Symbol<'input> { match __token_index { - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + } + } + pub struct AssignLhsParser { + builder: __lalrpop_util::lexer::MatcherBuilder, + _priv: (), + } + + impl AssignLhsParser { + pub fn new() -> AssignLhsParser { + let __builder = super::__intern_token::new_builder(); + AssignLhsParser { + builder: __builder, + _priv: (), + } + } + + #[allow(dead_code)] + pub fn parse< + 'input, + >( + &self, + input: &'input str, + ) -> Result, &'static str>> + { + let mut __tokens = self.builder.matcher(input); + __state_machine::Parser::drive( + __StateMachine { + input, + __phantom: core::marker::PhantomData::<(&())>, + }, + __tokens, + ) + } + } + pub(crate) fn __reduce< + 'input, + >( + input: &'input str, + __action: i8, + __lookahead_start: Option<&usize>, + __states: &mut alloc::vec::Vec, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> Option, &'static str>>> + { + let (__pop_states, __nonterminal) = match __action { + 0 => { + __reduce0(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 1 => { + __reduce1(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 2 => { + __reduce2(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 3 => { + __reduce3(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 4 => { + __reduce4(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 5 => { + __reduce5(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 6 => { + __reduce6(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 7 => { + __reduce7(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 8 => { + __reduce8(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 9 => { + __reduce9(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 10 => { + __reduce10(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 11 => { + __reduce11(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 12 => { + __reduce12(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 13 => { + __reduce13(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 14 => { + __reduce14(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 15 => { + __reduce15(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 16 => { + __reduce16(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 17 => { + __reduce17(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 18 => { + __reduce18(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 19 => { + __reduce19(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 20 => { + __reduce20(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 21 => { + __reduce21(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 22 => { + __reduce22(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 23 => { + __reduce23(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 24 => { + __reduce24(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 25 => { + __reduce25(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 26 => { + __reduce26(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 27 => { + __reduce27(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 28 => { + __reduce28(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 29 => { + __reduce29(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 30 => { + __reduce30(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 31 => { + __reduce31(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 32 => { + __reduce32(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 33 => { + __reduce33(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 34 => { + __reduce34(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 35 => { + __reduce35(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 36 => { + __reduce36(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 37 => { + __reduce37(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 38 => { + __reduce38(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 39 => { + __reduce39(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 40 => { + __reduce40(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 41 => { + __reduce41(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 42 => { + __reduce42(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 43 => { + __reduce43(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 44 => { + // __AssignLhs = AssignLhs => ActionFn(4); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + return Some(Ok(__nt)); + } + 45 => { + __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 46 => { + __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 47 => { + __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 48 => { + __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 49 => { + __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 50 => { + __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 51 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + _ => panic!("invalid action code {}", __action) + }; + let __states_len = __states.len(); + __states.truncate(__states_len - __pop_states); + let __state = *__states.last().unwrap(); + let __next_state = __goto(__state, __nonterminal); + __states.push(__next_state); + None + } + #[inline(never)] + fn __symbol_type_mismatch() -> ! { + panic!("symbol type mismatch") + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, AssignLhs, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Atom, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant1< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant1(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Stmt, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant11< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant4< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant5< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant0< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant0(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + pub(crate) fn __reduce0< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",") = SpExpr, "," => ActionFn(32); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action32::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (2, 0) + } + pub(crate) fn __reduce1< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",")* = => ActionFn(30); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action30::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (0, 1) + } + pub(crate) fn __reduce2< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",")* = ( ",")+ => ActionFn(31); + let __sym0 = __pop_Variant2(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (1, 1) + } + pub(crate) fn __reduce3< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",")+ = SpExpr, "," => ActionFn(47); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action47::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (2, 2) + } + pub(crate) fn __reduce4< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(48); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant2(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (3, 2) + } + pub(crate) fn __reduce5< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";") = SpStmt, ";" => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (2, 3) + } + pub(crate) fn __reduce6< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";")* = => ActionFn(38); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action38::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (0, 4) + } + pub(crate) fn __reduce7< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";")* = ( ";")+ => ActionFn(39); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action39::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 4) + } + pub(crate) fn __reduce8< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";")+ = SpStmt, ";" => ActionFn(51); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action51::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (2, 5) + } + pub(crate) fn __reduce9< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(52); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (3, 5) + } + pub(crate) fn __reduce10< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // @L = => ActionFn(46); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action46::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (0, 6) + } + pub(crate) fn __reduce11< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // @R = => ActionFn(45); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action45::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (0, 7) + } + pub(crate) fn __reduce12< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // AssignLhs = Name => ActionFn(14); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 8) + } + pub(crate) fn __reduce13< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Atom = Str => ActionFn(20); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) + } + pub(crate) fn __reduce14< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Atom = Int => ActionFn(21); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) + } + pub(crate) fn __reduce15< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Atom = Name => ActionFn(22); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) + } + pub(crate) fn __reduce16< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(63); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) + } + pub(crate) fn __reduce17< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpExpr, "(", ")" => ActionFn(64); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) + } + pub(crate) fn __reduce18< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(65); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (5, 10) + } + pub(crate) fn __reduce19< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(66); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) + } + pub(crate) fn __reduce20< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpAtom => ActionFn(17); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 10) + } + pub(crate) fn __reduce21< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = "(", Expr, ")" => ActionFn(18); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant8(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) + } + pub(crate) fn __reduce22< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // File = SpStmt => ActionFn(67); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action67::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) + } + pub(crate) fn __reduce23< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // File = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action68::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) + } + pub(crate) fn __reduce24< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // File = ( ";")+, SpStmt => ActionFn(69); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 11) + } + pub(crate) fn __reduce25< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // File = ( ";")+ => ActionFn(70); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action70::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) + } + pub(crate) fn __reduce26< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Int = r#"[0-9]+"# => ActionFn(23); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action23::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 12) + } + pub(crate) fn __reduce27< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 13) + } + pub(crate) fn __reduce28< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpAssignLhs = Spanned => ActionFn(13); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action13::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 14) + } + pub(crate) fn __reduce29< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpAtom = Spanned => ActionFn(19); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 15) + } + pub(crate) fn __reduce30< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpExpr = Spanned => ActionFn(15); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 16) + } + pub(crate) fn __reduce31< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpExpr? = SpExpr => ActionFn(28); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 17) + } + pub(crate) fn __reduce32< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpExpr? = => ActionFn(29); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action29::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 17) + } + pub(crate) fn __reduce33< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpStmt = Spanned => ActionFn(10); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 18) + } + pub(crate) fn __reduce34< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpStmt? = SpStmt => ActionFn(36); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 19) + } + pub(crate) fn __reduce35< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpStmt? = => ActionFn(37); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action37::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 19) + } + pub(crate) fn __reduce36< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = AssignLhs => ActionFn(59); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 20) + } + pub(crate) fn __reduce37< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Atom => ActionFn(60); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action60::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 21) + } + pub(crate) fn __reduce38< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Expr => ActionFn(61); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action61::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 22) + } + pub(crate) fn __reduce39< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Stmt => ActionFn(62); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) + } + pub(crate) fn __reduce40< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = SpExpr => ActionFn(11); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 24) + } + pub(crate) fn __reduce41< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = SpAssignLhs, "=", SpExpr => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 24) + } + pub(crate) fn __reduce42< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 25) + } + pub(crate) fn __reduce43< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action25::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 25) + } + pub(crate) fn __reduce45< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Atom = Atom => ActionFn(8); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + pub(crate) fn __reduce46< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Expr = Expr => ActionFn(6); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 28) + } + pub(crate) fn __reduce47< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 29) + } + pub(crate) fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAssignLhs = SpAssignLhs => ActionFn(3); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action3::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce49< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAtom = SpAtom => ActionFn(7); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpExpr = SpExpr => ActionFn(5); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce51< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpStmt = SpStmt => ActionFn(1); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce52< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Stmt = Stmt => ActionFn(2); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 34) + } +} +pub use self::__parse__AssignLhs::AssignLhsParser; + +#[cfg_attr(rustfmt, rustfmt_skip)] +mod __parse__Atom { + #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)] + + use std::str::FromStr; + use crate::syn::{Span, Spanned, unescape}; + use crate::syn::ast::*; + #[allow(unused_extern_crates)] + extern crate lalrpop_util as __lalrpop_util; + #[allow(unused_imports)] + use self::__lalrpop_util::state_machine as __state_machine; + extern crate core; + extern crate alloc; + use self::__lalrpop_util::lexer::Token; + #[allow(dead_code)] + pub(crate) enum __Symbol<'input> + { + Variant0(&'input str), + Variant1(Spanned), + Variant2(alloc::vec::Vec>), + Variant3(Spanned), + Variant4(alloc::vec::Vec>), + Variant5(usize), + Variant6(AssignLhs), + Variant7(Atom), + Variant8(Expr), + Variant9(Vec), + Variant10(i64), + Variant11(String), + Variant12(Spanned), + Variant13(Spanned), + Variant14(core::option::Option>), + Variant15(core::option::Option>), + Variant16(Stmt), + } + const __ACTION: &[i8] = &[ + // State 0 + 0, 0, 0, 0, 0, 6, 7, 8, 9, + // State 1 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 3 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 4 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 5 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 6 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 7 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 8 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + fn __action(state: i8, integer: usize) -> i8 { + __ACTION[(state as usize) * 9 + integer] + } + const __EOF_ACTION: &[i8] = &[ + // State 0 + 0, + // State 1 + -46, + // State 2 + -15, + // State 3 + -16, + // State 4 + -14, + // State 5 + -43, + // State 6 + -44, + // State 7 + -27, + // State 8 + -28, + ]; + fn __goto(state: i8, nt: usize) -> i8 { + match nt { + 9 => 1, + 12 => 2, + 13 => 3, + 25 => 4, + _ => 0, + } + } + fn __expected_tokens(__state: i8) -> alloc::vec::Vec { + const __TERMINAL: &[&str] = &[ + r###""(""###, + r###"")""###, + r###"",""###, + r###"";""###, + r###""=""###, + r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, + r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, + r###"r#"[0-9]+"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, + ]; + __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { + let next_state = __action(__state, index); + if next_state == 0 { + None + } else { + Some(alloc::string::ToString::to_string(terminal)) + } + }).collect() + } + pub(crate) struct __StateMachine<'input> + where + { + input: &'input str, + __phantom: core::marker::PhantomData<(&'input ())>, + } + impl<'input> __state_machine::ParserDefinition for __StateMachine<'input> + where + { + type Location = usize; + type Error = &'static str; + type Token = Token<'input>; + type TokenIndex = usize; + type Symbol = __Symbol<'input>; + type Success = Atom; + type StateIndex = i8; + type Action = i8; + type ReduceIndex = i8; + type NonterminalIndex = usize; + + #[inline] + fn start_location(&self) -> Self::Location { + Default::default() + } + + #[inline] + fn start_state(&self) -> Self::StateIndex { + 0 + } + + #[inline] + fn token_to_index(&self, token: &Self::Token) -> Option { + __token_to_integer(token, core::marker::PhantomData::<(&())>) + } + + #[inline] + fn action(&self, state: i8, integer: usize) -> i8 { + __action(state, integer) + } + + #[inline] + fn error_action(&self, state: i8) -> i8 { + __action(state, 9 - 1) + } + + #[inline] + fn eof_action(&self, state: i8) -> i8 { + __EOF_ACTION[state as usize] + } + + #[inline] + fn goto(&self, state: i8, nt: usize) -> i8 { + __goto(state, nt) + } + + fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol { + __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>) + } + + fn expected_tokens(&self, state: i8) -> alloc::vec::Vec { + __expected_tokens(state) + } + + #[inline] + fn uses_error_recovery(&self) -> bool { + false + } + + #[inline] + fn error_recovery_symbol( + &self, + recovery: __state_machine::ErrorRecovery, + ) -> Self::Symbol { + panic!("error recovery not enabled for this grammar") + } + + fn reduce( + &mut self, + action: i8, + start_location: Option<&Self::Location>, + states: &mut alloc::vec::Vec, + symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple>, + ) -> Option<__state_machine::ParseResult> { + __reduce( + self.input, + action, + start_location, + states, + symbols, + core::marker::PhantomData::<(&())>, + ) + } + + fn simulate_reduce(&self, action: i8) -> __state_machine::SimulatedReduce { + panic!("error recovery not enabled for this grammar") + } + } + fn __token_to_integer< + 'input, + >( + __token: &Token<'input>, + _: core::marker::PhantomData<(&'input ())>, + ) -> Option + { + match *__token { + Token(4, _) if true => Some(0), + Token(5, _) if true => Some(1), + Token(6, _) if true => Some(2), + Token(7, _) if true => Some(3), + Token(8, _) if true => Some(4), + Token(0, _) if true => Some(5), + Token(1, _) if true => Some(6), + Token(2, _) if true => Some(7), + Token(3, _) if true => Some(8), + _ => None, + } + } + fn __token_to_symbol< + 'input, + >( + __token_index: usize, + __token: Token<'input>, + _: core::marker::PhantomData<(&'input ())>, + ) -> __Symbol<'input> + { + match __token_index { + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -412,12 +1961,7 @@ mod __parse__Atom { __reduce39(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 40 => { - // __Atom = Atom => ActionFn(6); - let __sym0 = __pop_Variant6(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action6::<>(input, __sym0); - return Some(Ok(__nt)); + __reduce40(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 41 => { __reduce41(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -432,11 +1976,34 @@ mod __parse__Atom { __reduce44(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 45 => { - __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + // __Atom = Atom => ActionFn(8); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + return Some(Ok(__nt)); } 46 => { __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 47 => { + __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 48 => { + __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 49 => { + __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 50 => { + __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 51 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -454,7 +2021,7 @@ mod __parse__Atom { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Atom, usize) + ) -> (usize, AssignLhs, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), @@ -465,21 +2032,43 @@ mod __parse__Atom { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Expr, usize) + ) -> (usize, Atom, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant11< + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Spanned, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -505,36 +2094,36 @@ mod __parse__Atom { _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Stmt, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant10< + fn __pop_Variant11< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant8< + fn __pop_Variant9< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -560,36 +2149,36 @@ mod __parse__Atom { _ => __symbol_type_mismatch() } } - fn __pop_Variant12< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant13< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant9< + fn __pop_Variant10< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -624,13 +2213,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(27); + // ( ",") = SpExpr, "," => ActionFn(32); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action27::<>(input, __sym0, __sym1); + let __nt = super::__action32::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -643,10 +2232,10 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(25); + // ( ",")* = => ActionFn(30); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action25::<>(input, &__start, &__end); + let __nt = super::__action30::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (0, 1) } @@ -659,11 +2248,11 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(26); + // ( ",")* = ( ",")+ => ActionFn(31); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 1) } @@ -676,13 +2265,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(41); + // ( ",")+ = SpExpr, "," => ActionFn(47); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action41::<>(input, __sym0, __sym1); + let __nt = super::__action47::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 2) } @@ -695,14 +2284,14 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(42); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(48); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action42::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (3, 2) } @@ -715,13 +2304,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(34); + // ( ";") = SpStmt, ";" => ActionFn(40); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action34::<>(input, __sym0, __sym1); + let __nt = super::__action40::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -734,10 +2323,10 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = => ActionFn(32); + // ( ";")* = => ActionFn(38); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action32::<>(input, &__start, &__end); + let __nt = super::__action38::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (0, 4) } @@ -750,11 +2339,11 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(33); + // ( ";")* = ( ";")+ => ActionFn(39); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 4) } @@ -767,13 +2356,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(45); + // ( ";")+ = SpStmt, ";" => ActionFn(51); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action45::<>(input, __sym0, __sym1); + let __nt = super::__action51::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 5) } @@ -786,14 +2375,14 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(46); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(52); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 5) } @@ -806,10 +2395,10 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @L = => ActionFn(40); + // @L = => ActionFn(46); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action40::<>(input, &__start, &__end); + let __nt = super::__action46::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 6) } @@ -822,10 +2411,10 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @R = => ActionFn(39); + // @R = => ActionFn(45); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action39::<>(input, &__start, &__end); + let __nt = super::__action45::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 7) } @@ -838,11 +2427,11 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(15); - let __sym0 = __pop_Variant10(__symbols); + // AssignLhs = Name => ActionFn(14); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action15::<>(input, __sym0); + let __nt = super::__action14::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 8) } @@ -855,13 +2444,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Int => ActionFn(16); - let __sym0 = __pop_Variant9(__symbols); + // Atom = Str => ActionFn(20); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action16::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce14< 'input, @@ -872,13 +2461,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(17); + // Atom = Int => ActionFn(21); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action17::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce15< 'input, @@ -889,17 +2478,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(55); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant1(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + // Atom = Name => ActionFn(22); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + (1, 9) } pub(crate) fn __reduce16< 'input, @@ -910,16 +2495,17 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(56); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(63); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce17< 'input, @@ -930,18 +2516,16 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(57); - assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant0(__symbols); - let __sym3 = __pop_Variant1(__symbols); - let __sym2 = __pop_Variant2(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(64); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (5, 9) + let __end = __sym2.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) } pub(crate) fn __reduce18< 'input, @@ -952,17 +2536,18 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(58); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(65); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant1(__symbols); let __sym2 = __pop_Variant2(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2, __sym3); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + let __end = __sym4.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (5, 10) } pub(crate) fn __reduce19< 'input, @@ -973,13 +2558,17 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(12); - let __sym0 = __pop_Variant11(__symbols); + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(66); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action12::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce20< 'input, @@ -990,16 +2579,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = "(", Expr, ")" => ActionFn(13); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant7(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Expr = SpAtom => ActionFn(17); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action13::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 10) } pub(crate) fn __reduce21< 'input, @@ -1010,13 +2596,16 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(59); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(18); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant8(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action59::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + (3, 10) } pub(crate) fn __reduce22< 'input, @@ -1027,12 +2616,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = => ActionFn(60); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action60::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (0, 10) + // File = SpStmt => ActionFn(67); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action67::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) } pub(crate) fn __reduce23< 'input, @@ -1043,15 +2633,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(61); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action61::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (2, 10) + // File = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action68::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce24< 'input, @@ -1062,13 +2649,15 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(62); + // File = ( ";")+, SpStmt => ActionFn(69); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action62::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + let __end = __sym1.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 11) } pub(crate) fn __reduce25< 'input, @@ -1079,11 +2668,11 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Int = r#"[0-9]+"# => ActionFn(18); - let __sym0 = __pop_Variant0(__symbols); + // File = ( ";")+ => ActionFn(70); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action18::<>(input, __sym0); + let __nt = super::__action70::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 11) } @@ -1096,11 +2685,11 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(21); + // Int = r#"[0-9]+"# => ActionFn(23); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action21::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 12) } @@ -1113,11 +2702,11 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 13) } @@ -1130,12 +2719,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(10); - let __sym0 = __pop_Variant1(__symbols); + // SpAssignLhs = Spanned => ActionFn(13); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action10::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + let __nt = super::__action13::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 14) } pub(crate) fn __reduce29< @@ -1147,12 +2736,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(23); - let __sym0 = __pop_Variant1(__symbols); + // SpAtom = Spanned => ActionFn(19); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action23::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 15) } pub(crate) fn __reduce30< @@ -1164,12 +2753,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = => ActionFn(24); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action24::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (0, 15) + // SpExpr = Spanned => ActionFn(15); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 16) } pub(crate) fn __reduce31< 'input, @@ -1180,13 +2770,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(8); - let __sym0 = __pop_Variant3(__symbols); + // SpExpr? = SpExpr => ActionFn(28); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 16) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 17) } pub(crate) fn __reduce32< 'input, @@ -1197,13 +2787,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(30); - let __sym0 = __pop_Variant3(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 17) + // SpExpr? = => ActionFn(29); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action29::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 17) } pub(crate) fn __reduce33< 'input, @@ -1214,12 +2803,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = => ActionFn(31); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action31::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (0, 17) + // SpStmt = Spanned => ActionFn(10); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 18) } pub(crate) fn __reduce34< 'input, @@ -1230,13 +2820,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(52); - let __sym0 = __pop_Variant6(__symbols); + // SpStmt? = SpStmt => ActionFn(36); + let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action52::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 18) + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 19) } pub(crate) fn __reduce35< 'input, @@ -1247,13 +2837,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(53); - let __sym0 = __pop_Variant7(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action53::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 19) + // SpStmt? = => ActionFn(37); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action37::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 19) } pub(crate) fn __reduce36< 'input, @@ -1264,12 +2853,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(54); - let __sym0 = __pop_Variant14(__symbols); + // Spanned = AssignLhs => ActionFn(59); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action54::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 20) } pub(crate) fn __reduce37< @@ -1281,12 +2870,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(9); - let __sym0 = __pop_Variant1(__symbols); + // Spanned = Atom => ActionFn(60); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action9::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + let __nt = super::__action60::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 21) } pub(crate) fn __reduce38< @@ -1298,12 +2887,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(19); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Expr => ActionFn(61); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + let __nt = super::__action61::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 22) } pub(crate) fn __reduce39< @@ -1315,13 +2904,30 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(20); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Stmt => ActionFn(62); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); - (1, 22) + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) + } + pub(crate) fn __reduce40< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = SpExpr => ActionFn(11); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 24) } pub(crate) fn __reduce41< 'input, @@ -1332,13 +2938,16 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(4); - let __sym0 = __pop_Variant7(__symbols); + // Stmt = SpAssignLhs, "=", SpExpr => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action4::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 24) + let __end = __sym2.2.clone(); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 24) } pub(crate) fn __reduce42< 'input, @@ -1349,12 +2958,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __File = File => ActionFn(0); - let __sym0 = __pop_Variant8(__symbols); + // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action0::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 25) } pub(crate) fn __reduce43< @@ -1366,13 +2975,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(5); - let __sym0 = __pop_Variant11(__symbols); + // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action5::<>(input, __sym0); + let __nt = super::__action25::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 26) + (1, 25) } pub(crate) fn __reduce44< 'input, @@ -1383,15 +2992,100 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpExpr = SpExpr => ActionFn(3); - let __sym0 = __pop_Variant1(__symbols); + // __AssignLhs = AssignLhs => ActionFn(4); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 26) + } + pub(crate) fn __reduce46< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Expr = Expr => ActionFn(6); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 28) + } + pub(crate) fn __reduce47< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 29) + } + pub(crate) fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAssignLhs = SpAssignLhs => ActionFn(3); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action3::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 27) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 30) } - pub(crate) fn __reduce45< + pub(crate) fn __reduce49< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAtom = SpAtom => ActionFn(7); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpExpr = SpExpr => ActionFn(5); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce51< 'input, >( input: &'input str, @@ -1406,9 +3100,9 @@ mod __parse__Atom { let __end = __sym0.2.clone(); let __nt = super::__action1::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 28) + (1, 33) } - pub(crate) fn __reduce46< + pub(crate) fn __reduce52< 'input, >( input: &'input str, @@ -1418,12 +3112,12 @@ mod __parse__Atom { ) -> (usize, usize) { // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action2::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 29) + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 34) } } pub use self::__parse__Atom::AtomParser; @@ -1451,76 +3145,78 @@ mod __parse__Expr { Variant3(Spanned), Variant4(alloc::vec::Vec>), Variant5(usize), - Variant6(Atom), - Variant7(Expr), - Variant8(Vec), - Variant9(i64), - Variant10(String), - Variant11(Spanned), - Variant12(core::option::Option>), - Variant13(core::option::Option>), - Variant14(Stmt), + Variant6(AssignLhs), + Variant7(Atom), + Variant8(Expr), + Variant9(Vec), + Variant10(i64), + Variant11(String), + Variant12(Spanned), + Variant13(Spanned), + Variant14(core::option::Option>), + Variant15(core::option::Option>), + Variant16(Stmt), } const __ACTION: &[i8] = &[ // State 0 - 2, 0, 0, 0, 14, 15, 16, 17, + 2, 0, 0, 0, 0, 14, 15, 16, 17, // State 1 - 2, 0, 0, 0, 14, 15, 16, 17, + 2, 0, 0, 0, 0, 14, 15, 16, 17, // State 2 - 2, 21, 0, 0, 14, 15, 16, 17, + 2, 21, 0, 0, 0, 14, 15, 16, 17, // State 3 - 2, 24, 0, 0, 14, 15, 16, 17, + 2, 24, 0, 0, 0, 14, 15, 16, 17, // State 4 - -35, -35, -35, 0, 0, 0, 0, 0, + -38, -38, -38, 0, 0, 0, 0, 0, 0, // State 5 - -36, 0, 0, 0, 0, 0, 0, 0, + -39, 0, 0, 0, 0, 0, 0, 0, 0, // State 6 - -14, -14, -14, 0, 0, 0, 0, 0, + -15, -15, -15, 0, 0, 0, 0, 0, 0, // State 7 - -15, -15, -15, 0, 0, 0, 0, 0, + -16, -16, -16, 0, 0, 0, 0, 0, 0, // State 8 - -20, -20, -20, 0, 0, 0, 0, 0, + -21, -21, -21, 0, 0, 0, 0, 0, 0, // State 9 - 3, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, // State 10 - -28, -28, -28, 0, 0, 0, 0, 0, + -30, -30, -30, 0, 0, 0, 0, 0, 0, // State 11 - -29, -29, -29, 0, 0, 0, 0, 0, + -31, -31, -31, 0, 0, 0, 0, 0, 0, // State 12 - -13, -13, -13, 0, 0, 0, 0, 0, + -14, -14, -14, 0, 0, 0, 0, 0, 0, // State 13 - -39, -39, -39, 0, 0, 0, 0, 0, + -43, -43, -43, 0, 0, 0, 0, 0, 0, // State 14 - -40, -40, -40, 0, 0, 0, 0, 0, + -44, -44, -44, 0, 0, 0, 0, 0, 0, // State 15 - -26, -26, -26, 0, 0, 0, 0, 0, + -27, -27, -27, 0, 0, 0, 0, 0, 0, // State 16 - -27, -27, -27, 0, 0, 0, 0, 0, + -28, -28, -28, 0, 0, 0, 0, 0, 0, // State 17 - -36, 22, 0, 0, 0, 0, 0, 0, + -39, 22, 0, 0, 0, 0, 0, 0, 0, // State 18 - -36, -36, -36, 0, 0, 0, 0, 0, + -39, -39, -39, 0, 0, 0, 0, 0, 0, // State 19 - 3, 25, 26, 0, 0, 0, 0, 0, + 3, 25, 26, 0, 0, 0, 0, 0, 0, // State 20 - -17, -17, -17, 0, 0, 0, 0, 0, + -18, -18, -18, 0, 0, 0, 0, 0, 0, // State 21 - -21, -21, -21, 0, 0, 0, 0, 0, + -22, -22, -22, 0, 0, 0, 0, 0, 0, // State 22 - 3, 27, 28, 0, 0, 0, 0, 0, + 3, 27, 28, 0, 0, 0, 0, 0, 0, // State 23 - -19, -19, -19, 0, 0, 0, 0, 0, + -20, -20, -20, 0, 0, 0, 0, 0, 0, // State 24 - -16, -16, -16, 0, 0, 0, 0, 0, + -17, -17, -17, 0, 0, 0, 0, 0, 0, // State 25 - -4, -4, 0, 0, -4, -4, -4, -4, + -4, -4, 0, 0, 0, -4, -4, -4, -4, // State 26 - -18, -18, -18, 0, 0, 0, 0, 0, + -19, -19, -19, 0, 0, 0, 0, 0, 0, // State 27 - -5, -5, 0, 0, -5, -5, -5, -5, + -5, -5, 0, 0, 0, -5, -5, -5, -5, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 8 + integer] + __ACTION[(state as usize) * 9 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -1532,31 +3228,31 @@ mod __parse__Expr { // State 3 0, // State 4 - -35, + -38, // State 5 - -42, + -47, // State 6 - -14, - // State 7 -15, + // State 7 + -16, // State 8 - -20, + -21, // State 9 0, // State 10 - -28, + -30, // State 11 0, // State 12 - -13, + -14, // State 13 - -39, + -43, // State 14 - -40, + -44, // State 15 - -26, - // State 16 -27, + // State 16 + -28, // State 17 0, // State 18 @@ -1564,42 +3260,42 @@ mod __parse__Expr { // State 19 0, // State 20 - -17, + -18, // State 21 - -21, + -22, // State 22 0, // State 23 - -19, + -20, // State 24 - -16, + -17, // State 25 0, // State 26 - -18, + -19, // State 27 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { 2 => 3, - 8 => 4, - 9 => match state { + 9 => 4, + 10 => match state { 1 => 17, 2..=3 => 18, _ => 5, }, - 11 => 6, - 12 => 7, - 13 => 8, - 14 => match state { + 12 => 6, + 13 => 7, + 15 => 8, + 16 => match state { 2 => 19, 3 => 22, _ => 9, }, - 18 => 10, - 19 => 11, - 22 => 12, + 21 => 10, + 22 => 11, + 25 => 12, _ => 0, } } @@ -1609,6 +3305,7 @@ mod __parse__Expr { r###"")""###, r###"",""###, r###"";""###, + r###""=""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -1665,7 +3362,7 @@ mod __parse__Expr { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 8 - 1) + __action(state, 9 - 1) } #[inline] @@ -1732,10 +3429,11 @@ mod __parse__Expr { Token(5, _) if true => Some(1), Token(6, _) if true => Some(2), Token(7, _) if true => Some(3), - Token(0, _) if true => Some(4), - Token(1, _) if true => Some(5), - Token(2, _) if true => Some(6), - Token(3, _) if true => Some(7), + Token(8, _) if true => Some(4), + Token(0, _) if true => Some(5), + Token(1, _) if true => Some(6), + Token(2, _) if true => Some(7), + Token(3, _) if true => Some(8), _ => None, } } @@ -1748,8 +3446,8 @@ mod __parse__Expr { ) -> __Symbol<'input> { match __token_index { - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -1923,12 +3621,7 @@ mod __parse__Expr { __reduce40(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 41 => { - // __Expr = Expr => ActionFn(4); - let __sym0 = __pop_Variant7(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action4::<>(input, __sym0); - return Some(Ok(__nt)); + __reduce41(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 42 => { __reduce42(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -1943,7 +3636,30 @@ mod __parse__Expr { __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 46 => { - __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + // __Expr = Expr => ActionFn(6); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + return Some(Ok(__nt)); + } + 47 => { + __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 48 => { + __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 49 => { + __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 50 => { + __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 51 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } _ => panic!("invalid action code {}", __action) }; @@ -1962,7 +3678,7 @@ mod __parse__Expr { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Atom, usize) + ) -> (usize, AssignLhs, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), @@ -1973,21 +3689,43 @@ mod __parse__Expr { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Expr, usize) + ) -> (usize, Atom, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant11< + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Spanned, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -2013,36 +3751,36 @@ mod __parse__Expr { _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Stmt, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant10< + fn __pop_Variant11< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant8< + fn __pop_Variant9< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -2068,36 +3806,36 @@ mod __parse__Expr { _ => __symbol_type_mismatch() } } - fn __pop_Variant12< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant13< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant9< + fn __pop_Variant10< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -2132,13 +3870,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(27); + // ( ",") = SpExpr, "," => ActionFn(32); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action27::<>(input, __sym0, __sym1); + let __nt = super::__action32::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -2151,10 +3889,10 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(25); + // ( ",")* = => ActionFn(30); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action25::<>(input, &__start, &__end); + let __nt = super::__action30::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (0, 1) } @@ -2167,11 +3905,11 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(26); + // ( ",")* = ( ",")+ => ActionFn(31); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 1) } @@ -2184,13 +3922,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(41); + // ( ",")+ = SpExpr, "," => ActionFn(47); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action41::<>(input, __sym0, __sym1); + let __nt = super::__action47::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 2) } @@ -2203,14 +3941,14 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(42); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(48); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action42::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (3, 2) } @@ -2223,13 +3961,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(34); + // ( ";") = SpStmt, ";" => ActionFn(40); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action34::<>(input, __sym0, __sym1); + let __nt = super::__action40::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -2242,10 +3980,10 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = => ActionFn(32); + // ( ";")* = => ActionFn(38); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action32::<>(input, &__start, &__end); + let __nt = super::__action38::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (0, 4) } @@ -2258,11 +3996,11 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(33); + // ( ";")* = ( ";")+ => ActionFn(39); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 4) } @@ -2275,13 +4013,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(45); + // ( ";")+ = SpStmt, ";" => ActionFn(51); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action45::<>(input, __sym0, __sym1); + let __nt = super::__action51::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 5) } @@ -2294,14 +4032,14 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(46); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(52); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 5) } @@ -2314,10 +4052,10 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @L = => ActionFn(40); + // @L = => ActionFn(46); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action40::<>(input, &__start, &__end); + let __nt = super::__action46::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 6) } @@ -2330,10 +4068,10 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @R = => ActionFn(39); + // @R = => ActionFn(45); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action39::<>(input, &__start, &__end); + let __nt = super::__action45::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 7) } @@ -2346,11 +4084,11 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(15); - let __sym0 = __pop_Variant10(__symbols); + // AssignLhs = Name => ActionFn(14); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action15::<>(input, __sym0); + let __nt = super::__action14::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 8) } @@ -2363,13 +4101,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Int => ActionFn(16); - let __sym0 = __pop_Variant9(__symbols); + // Atom = Str => ActionFn(20); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action16::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce14< 'input, @@ -2380,13 +4118,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(17); + // Atom = Int => ActionFn(21); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action17::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce15< 'input, @@ -2397,17 +4135,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(55); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant1(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + // Atom = Name => ActionFn(22); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + (1, 9) } pub(crate) fn __reduce16< 'input, @@ -2418,16 +4152,17 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(56); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(63); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce17< 'input, @@ -2438,18 +4173,16 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(57); - assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant0(__symbols); - let __sym3 = __pop_Variant1(__symbols); - let __sym2 = __pop_Variant2(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(64); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (5, 9) + let __end = __sym2.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) } pub(crate) fn __reduce18< 'input, @@ -2460,17 +4193,18 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(58); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(65); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant1(__symbols); let __sym2 = __pop_Variant2(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2, __sym3); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + let __end = __sym4.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (5, 10) } pub(crate) fn __reduce19< 'input, @@ -2481,13 +4215,17 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(12); - let __sym0 = __pop_Variant11(__symbols); + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(66); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action12::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce20< 'input, @@ -2498,16 +4236,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = "(", Expr, ")" => ActionFn(13); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant7(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Expr = SpAtom => ActionFn(17); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action13::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 10) } pub(crate) fn __reduce21< 'input, @@ -2518,13 +4253,16 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(59); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(18); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant8(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action59::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + (3, 10) } pub(crate) fn __reduce22< 'input, @@ -2535,12 +4273,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = => ActionFn(60); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action60::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (0, 10) + // File = SpStmt => ActionFn(67); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action67::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) } pub(crate) fn __reduce23< 'input, @@ -2551,15 +4290,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(61); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action61::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (2, 10) + // File = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action68::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce24< 'input, @@ -2570,13 +4306,15 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(62); + // File = ( ";")+, SpStmt => ActionFn(69); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action62::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + let __end = __sym1.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 11) } pub(crate) fn __reduce25< 'input, @@ -2587,11 +4325,11 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Int = r#"[0-9]+"# => ActionFn(18); - let __sym0 = __pop_Variant0(__symbols); + // File = ( ";")+ => ActionFn(70); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action18::<>(input, __sym0); + let __nt = super::__action70::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 11) } @@ -2604,11 +4342,11 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(21); + // Int = r#"[0-9]+"# => ActionFn(23); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action21::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 12) } @@ -2621,11 +4359,11 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 13) } @@ -2638,12 +4376,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(10); - let __sym0 = __pop_Variant1(__symbols); + // SpAssignLhs = Spanned => ActionFn(13); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action10::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + let __nt = super::__action13::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 14) } pub(crate) fn __reduce29< @@ -2655,12 +4393,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(23); - let __sym0 = __pop_Variant1(__symbols); + // SpAtom = Spanned => ActionFn(19); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action23::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 15) } pub(crate) fn __reduce30< @@ -2672,12 +4410,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = => ActionFn(24); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action24::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (0, 15) + // SpExpr = Spanned => ActionFn(15); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 16) } pub(crate) fn __reduce31< 'input, @@ -2688,13 +4427,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(8); - let __sym0 = __pop_Variant3(__symbols); + // SpExpr? = SpExpr => ActionFn(28); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 16) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 17) } pub(crate) fn __reduce32< 'input, @@ -2705,13 +4444,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(30); - let __sym0 = __pop_Variant3(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 17) + // SpExpr? = => ActionFn(29); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action29::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 17) } pub(crate) fn __reduce33< 'input, @@ -2722,12 +4460,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = => ActionFn(31); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action31::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (0, 17) + // SpStmt = Spanned => ActionFn(10); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 18) } pub(crate) fn __reduce34< 'input, @@ -2738,13 +4477,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(52); - let __sym0 = __pop_Variant6(__symbols); + // SpStmt? = SpStmt => ActionFn(36); + let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action52::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 18) + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 19) } pub(crate) fn __reduce35< 'input, @@ -2755,13 +4494,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(53); - let __sym0 = __pop_Variant7(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action53::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 19) + // SpStmt? = => ActionFn(37); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action37::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 19) } pub(crate) fn __reduce36< 'input, @@ -2772,12 +4510,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(54); - let __sym0 = __pop_Variant14(__symbols); + // Spanned = AssignLhs => ActionFn(59); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action54::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 20) } pub(crate) fn __reduce37< @@ -2789,12 +4527,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(9); - let __sym0 = __pop_Variant1(__symbols); + // Spanned = Atom => ActionFn(60); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action9::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + let __nt = super::__action60::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 21) } pub(crate) fn __reduce38< @@ -2806,12 +4544,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(19); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Expr => ActionFn(61); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + let __nt = super::__action61::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 22) } pub(crate) fn __reduce39< @@ -2823,13 +4561,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(20); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Stmt => ActionFn(62); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); - (1, 22) + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) } pub(crate) fn __reduce40< 'input, @@ -2840,13 +4578,33 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(6); - let __sym0 = __pop_Variant6(__symbols); + // Stmt = SpExpr => ActionFn(11); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 23) + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 24) + } + pub(crate) fn __reduce41< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = SpAssignLhs, "=", SpExpr => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 24) } pub(crate) fn __reduce42< 'input, @@ -2857,12 +4615,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __File = File => ActionFn(0); - let __sym0 = __pop_Variant8(__symbols); + // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action0::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 25) } pub(crate) fn __reduce43< @@ -2874,13 +4632,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(5); - let __sym0 = __pop_Variant11(__symbols); + // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action5::<>(input, __sym0); + let __nt = super::__action25::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 26) + (1, 25) } pub(crate) fn __reduce44< 'input, @@ -2891,15 +4649,100 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpExpr = SpExpr => ActionFn(3); - let __sym0 = __pop_Variant1(__symbols); + // __AssignLhs = AssignLhs => ActionFn(4); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 26) + } + pub(crate) fn __reduce45< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Atom = Atom => ActionFn(8); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + pub(crate) fn __reduce47< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 29) + } + pub(crate) fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAssignLhs = SpAssignLhs => ActionFn(3); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action3::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 27) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 30) } - pub(crate) fn __reduce45< + pub(crate) fn __reduce49< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAtom = SpAtom => ActionFn(7); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpExpr = SpExpr => ActionFn(5); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce51< 'input, >( input: &'input str, @@ -2914,9 +4757,9 @@ mod __parse__Expr { let __end = __sym0.2.clone(); let __nt = super::__action1::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 28) + (1, 33) } - pub(crate) fn __reduce46< + pub(crate) fn __reduce52< 'input, >( input: &'input str, @@ -2926,12 +4769,12 @@ mod __parse__Expr { ) -> (usize, usize) { // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action2::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 29) + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 34) } } pub use self::__parse__Expr::ExprParser; @@ -2959,98 +4802,112 @@ mod __parse__File { Variant3(Spanned), Variant4(alloc::vec::Vec>), Variant5(usize), - Variant6(Atom), - Variant7(Expr), - Variant8(Vec), - Variant9(i64), - Variant10(String), - Variant11(Spanned), - Variant12(core::option::Option>), - Variant13(core::option::Option>), - Variant14(Stmt), + Variant6(AssignLhs), + Variant7(Atom), + Variant8(Expr), + Variant9(Vec), + Variant10(i64), + Variant11(String), + Variant12(Spanned), + Variant13(Spanned), + Variant14(core::option::Option>), + Variant15(core::option::Option>), + Variant16(Stmt), } const __ACTION: &[i8] = &[ // State 0 - 3, 0, 0, 0, 19, 20, 21, 22, + 3, 0, 0, 0, 0, 23, 24, 25, 26, // State 1 - 3, 0, 0, 0, 19, 20, 21, 22, + 3, 0, 0, 0, 0, 23, 24, 25, 26, // State 2 - 3, 0, 0, 0, 19, 20, 21, 22, + 3, 0, 0, 0, 0, 23, 24, 25, 26, // State 3 - 3, 29, 0, 0, 19, 20, 21, 22, + 3, 0, 0, 0, 0, 23, 24, 25, 26, // State 4 - 3, 32, 0, 0, 19, 20, 21, 22, + 3, 35, 0, 0, 0, 23, 24, 25, 26, // State 5 - -35, -35, -35, -35, 0, 0, 0, 0, + 3, 38, 0, 0, 0, 23, 24, 25, 26, // State 6 - -36, -36, -36, -36, 0, 0, 0, 0, + 0, 0, 0, 0, -37, 0, 0, 0, 0, // State 7 - 0, 0, 0, 0, 0, 0, 0, 0, + -38, -38, -38, -38, 0, 0, 0, 0, 0, // State 8 - -14, -14, -14, -14, 0, 0, 0, 0, + -39, -39, -39, -39, 0, 0, 0, 0, 0, // State 9 - -15, -15, -15, -15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 10 - -20, -20, -20, -20, 0, 0, 0, 0, + -15, -15, -15, -15, 0, 0, 0, 0, 0, // State 11 - 4, 0, 0, -38, 0, 0, 0, 0, + -16, 0, 0, -16, -13, 0, 0, 0, 0, // State 12 - 0, 0, 0, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, // State 13 - -28, -28, -28, -28, 0, 0, 0, 0, + -21, -21, -21, -21, 0, 0, 0, 0, 0, // State 14 - -29, -29, -29, -29, 0, 0, 0, 0, + 5, 0, 0, -41, 0, 0, 0, 0, 0, // State 15 - 0, 0, 0, -32, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, // State 16 - 0, 0, 0, -37, 0, 0, 0, 0, + 0, 0, 0, 0, -29, 0, 0, 0, 0, // State 17 - -13, -13, -13, -13, 0, 0, 0, 0, + -30, -30, -30, -30, 0, 0, 0, 0, 0, // State 18 - -39, -39, -39, -39, 0, 0, 0, 0, + -31, -31, -31, -31, 0, 0, 0, 0, 0, // State 19 - -40, -40, -40, -40, 0, 0, 0, 0, + 0, 0, 0, -34, 0, 0, 0, 0, 0, // State 20 - -26, -26, -26, -26, 0, 0, 0, 0, + 0, 0, 0, -40, 0, 0, 0, 0, 0, // State 21 - -27, -27, -27, -27, 0, 0, 0, 0, + -14, -14, -14, -14, 0, 0, 0, 0, 0, // State 22 - 0, 0, 0, 27, 0, 0, 0, 0, + -43, -43, -43, -43, 0, 0, 0, 0, 0, // State 23 - -9, 0, 0, 0, -9, -9, -9, -9, + -44, -44, -44, -44, 0, 0, 0, 0, 0, // State 24 - -36, 30, 0, 0, 0, 0, 0, 0, + -27, -27, -27, -27, 0, 0, 0, 0, 0, // State 25 - 4, 0, 0, 0, 0, 0, 0, 0, + -28, -28, -28, -28, -28, 0, 0, 0, 0, // State 26 - -10, 0, 0, 0, -10, -10, -10, -10, + 0, 0, 0, 32, 0, 0, 0, 0, 0, // State 27 - 4, 33, 34, 0, 0, 0, 0, 0, + -9, 0, 0, 0, 0, -9, -9, -9, -9, // State 28 - -17, -17, -17, -17, 0, 0, 0, 0, + -39, 36, 0, 0, 0, 0, 0, 0, 0, // State 29 - -21, -21, -21, -21, 0, 0, 0, 0, + -16, -16, -16, -16, 0, 0, 0, 0, 0, // State 30 - 4, 35, 36, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, // State 31 - -19, -19, -19, -19, 0, 0, 0, 0, + -10, 0, 0, 0, 0, -10, -10, -10, -10, // State 32 - -16, -16, -16, -16, 0, 0, 0, 0, + 5, 0, 0, -42, 0, 0, 0, 0, 0, // State 33 - -4, -4, 0, 0, -4, -4, -4, -4, + 5, 39, 40, 0, 0, 0, 0, 0, 0, // State 34 - -18, -18, -18, -18, 0, 0, 0, 0, + -18, -18, -18, -18, 0, 0, 0, 0, 0, // State 35 - -5, -5, 0, 0, -5, -5, -5, -5, + -22, -22, -22, -22, 0, 0, 0, 0, 0, + // State 36 + 5, 41, 42, 0, 0, 0, 0, 0, 0, + // State 37 + -20, -20, -20, -20, 0, 0, 0, 0, 0, + // State 38 + -17, -17, -17, -17, 0, 0, 0, 0, 0, + // State 39 + -4, -4, 0, 0, 0, -4, -4, -4, -4, + // State 40 + -19, -19, -19, -19, 0, 0, 0, 0, 0, + // State 41 + -5, -5, 0, 0, 0, -5, -5, -5, -5, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 8 + integer] + __ACTION[(state as usize) * 9 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 - -23, + -24, // State 1 - -25, + -26, // State 2 0, // State 3 @@ -3058,96 +4915,115 @@ mod __parse__File { // State 4 0, // State 5 - -35, + 0, // State 6 - -36, + 0, // State 7 - -43, - // State 8 - -14, - // State 9 - -15, - // State 10 - -20, - // State 11 -38, - // State 12 - -22, - // State 13 - -28, - // State 14 - -29, - // State 15 - -32, - // State 16 - -37, - // State 17 - -13, - // State 18 + // State 8 -39, - // State 19 - -40, - // State 20 - -26, - // State 21 - -27, - // State 22 - -24, - // State 23 - -9, - // State 24 + // State 9 + -48, + // State 10 + -15, + // State 11 + -16, + // State 12 0, - // State 25 - 0, - // State 26 - -10, - // State 27 - 0, - // State 28 - -17, - // State 29 + // State 13 -21, + // State 14 + -41, + // State 15 + -23, + // State 16 + 0, + // State 17 + -30, + // State 18 + -31, + // State 19 + -34, + // State 20 + -40, + // State 21 + -14, + // State 22 + -43, + // State 23 + -44, + // State 24 + -27, + // State 25 + -28, + // State 26 + -25, + // State 27 + -9, + // State 28 + 0, + // State 29 + -16, // State 30 0, // State 31 - -19, + -10, // State 32 - -16, + -42, // State 33 0, // State 34 -18, // State 35 + -22, + // State 36 + 0, + // State 37 + -20, + // State 38 + -17, + // State 39 + 0, + // State 40 + -19, + // State 41 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 2 => 4, + 2 => 5, 5 => 1, - 8 => 5, - 9 => match state { - 2 => 24, - _ => 6, + 8 => 6, + 9 => 7, + 10 => match state { + 2 => 28, + _ => 8, }, - 10 => 7, - 11 => 8, - 12 => 9, - 13 => 10, - 14 => match state { - 2 => 25, - 3 => 27, - 4 => 30, + 11 => 9, + 12 => 10, + 13 => match state { + 2..=5 => 29, _ => 11, }, + 14 => 12, + 15 => 13, 16 => match state { - 1 => 22, - _ => 12, + 2 => 30, + 3 => 32, + 4 => 33, + 5 => 36, + _ => 14, }, - 18 => 13, - 19 => 14, - 20 => 15, - 21 => 16, - 22 => 17, + 18 => match state { + 1 => 26, + _ => 15, + }, + 20 => 16, + 21 => 17, + 22 => 18, + 23 => 19, + 24 => 20, + 25 => 21, _ => 0, } } @@ -3157,6 +5033,7 @@ mod __parse__File { r###"")""###, r###"",""###, r###"";""###, + r###""=""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -3213,7 +5090,7 @@ mod __parse__File { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 8 - 1) + __action(state, 9 - 1) } #[inline] @@ -3280,10 +5157,11 @@ mod __parse__File { Token(5, _) if true => Some(1), Token(6, _) if true => Some(2), Token(7, _) if true => Some(3), - Token(0, _) if true => Some(4), - Token(1, _) if true => Some(5), - Token(2, _) if true => Some(6), - Token(3, _) if true => Some(7), + Token(8, _) if true => Some(4), + Token(0, _) if true => Some(5), + Token(1, _) if true => Some(6), + Token(2, _) if true => Some(7), + Token(3, _) if true => Some(8), _ => None, } } @@ -3296,8 +5174,8 @@ mod __parse__File { ) -> __Symbol<'input> { match __token_index { - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -3474,12 +5352,7 @@ mod __parse__File { __reduce41(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 42 => { - // __File = File => ActionFn(0); - let __sym0 = __pop_Variant8(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action0::<>(input, __sym0); - return Some(Ok(__nt)); + __reduce42(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 43 => { __reduce43(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -3493,6 +5366,29 @@ mod __parse__File { 46 => { __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 47 => { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + return Some(Ok(__nt)); + } + 48 => { + __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 49 => { + __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 50 => { + __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 51 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -3510,7 +5406,7 @@ mod __parse__File { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Atom, usize) + ) -> (usize, AssignLhs, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), @@ -3521,21 +5417,43 @@ mod __parse__File { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Expr, usize) + ) -> (usize, Atom, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant11< + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Spanned, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -3561,36 +5479,36 @@ mod __parse__File { _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Stmt, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant10< + fn __pop_Variant11< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant8< + fn __pop_Variant9< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -3616,36 +5534,36 @@ mod __parse__File { _ => __symbol_type_mismatch() } } - fn __pop_Variant12< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant13< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant9< + fn __pop_Variant10< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -3680,13 +5598,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(27); + // ( ",") = SpExpr, "," => ActionFn(32); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action27::<>(input, __sym0, __sym1); + let __nt = super::__action32::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -3699,10 +5617,10 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(25); + // ( ",")* = => ActionFn(30); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action25::<>(input, &__start, &__end); + let __nt = super::__action30::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (0, 1) } @@ -3715,11 +5633,11 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(26); + // ( ",")* = ( ",")+ => ActionFn(31); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 1) } @@ -3732,13 +5650,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(41); + // ( ",")+ = SpExpr, "," => ActionFn(47); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action41::<>(input, __sym0, __sym1); + let __nt = super::__action47::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 2) } @@ -3751,14 +5669,14 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(42); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(48); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action42::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (3, 2) } @@ -3771,13 +5689,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(34); + // ( ";") = SpStmt, ";" => ActionFn(40); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action34::<>(input, __sym0, __sym1); + let __nt = super::__action40::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -3790,10 +5708,10 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = => ActionFn(32); + // ( ";")* = => ActionFn(38); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action32::<>(input, &__start, &__end); + let __nt = super::__action38::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (0, 4) } @@ -3806,11 +5724,11 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(33); + // ( ";")* = ( ";")+ => ActionFn(39); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 4) } @@ -3823,13 +5741,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(45); + // ( ";")+ = SpStmt, ";" => ActionFn(51); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action45::<>(input, __sym0, __sym1); + let __nt = super::__action51::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 5) } @@ -3842,14 +5760,14 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(46); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(52); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 5) } @@ -3862,10 +5780,10 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @L = => ActionFn(40); + // @L = => ActionFn(46); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action40::<>(input, &__start, &__end); + let __nt = super::__action46::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 6) } @@ -3878,10 +5796,10 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @R = => ActionFn(39); + // @R = => ActionFn(45); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action39::<>(input, &__start, &__end); + let __nt = super::__action45::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 7) } @@ -3894,11 +5812,11 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(15); - let __sym0 = __pop_Variant10(__symbols); + // AssignLhs = Name => ActionFn(14); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action15::<>(input, __sym0); + let __nt = super::__action14::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 8) } @@ -3911,13 +5829,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Int => ActionFn(16); - let __sym0 = __pop_Variant9(__symbols); + // Atom = Str => ActionFn(20); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action16::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce14< 'input, @@ -3928,13 +5846,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(17); + // Atom = Int => ActionFn(21); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action17::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce15< 'input, @@ -3945,17 +5863,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(55); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant1(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + // Atom = Name => ActionFn(22); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + (1, 9) } pub(crate) fn __reduce16< 'input, @@ -3966,16 +5880,17 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(56); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(63); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce17< 'input, @@ -3986,18 +5901,16 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(57); - assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant0(__symbols); - let __sym3 = __pop_Variant1(__symbols); - let __sym2 = __pop_Variant2(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(64); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (5, 9) + let __end = __sym2.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) } pub(crate) fn __reduce18< 'input, @@ -4008,17 +5921,18 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(58); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(65); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant1(__symbols); let __sym2 = __pop_Variant2(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2, __sym3); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + let __end = __sym4.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (5, 10) } pub(crate) fn __reduce19< 'input, @@ -4029,13 +5943,17 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(12); - let __sym0 = __pop_Variant11(__symbols); + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(66); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action12::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce20< 'input, @@ -4046,16 +5964,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = "(", Expr, ")" => ActionFn(13); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant7(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Expr = SpAtom => ActionFn(17); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action13::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 10) } pub(crate) fn __reduce21< 'input, @@ -4066,13 +5981,16 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(59); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(18); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant8(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action59::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + (3, 10) } pub(crate) fn __reduce22< 'input, @@ -4083,12 +6001,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = => ActionFn(60); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action60::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (0, 10) + // File = SpStmt => ActionFn(67); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action67::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) } pub(crate) fn __reduce23< 'input, @@ -4099,15 +6018,12 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(61); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action61::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (2, 10) + // File = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action68::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce24< 'input, @@ -4118,13 +6034,15 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(62); + // File = ( ";")+, SpStmt => ActionFn(69); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action62::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + let __end = __sym1.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 11) } pub(crate) fn __reduce25< 'input, @@ -4135,11 +6053,11 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Int = r#"[0-9]+"# => ActionFn(18); - let __sym0 = __pop_Variant0(__symbols); + // File = ( ";")+ => ActionFn(70); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action18::<>(input, __sym0); + let __nt = super::__action70::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 11) } @@ -4152,11 +6070,11 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(21); + // Int = r#"[0-9]+"# => ActionFn(23); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action21::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 12) } @@ -4169,11 +6087,11 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 13) } @@ -4186,12 +6104,12 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(10); - let __sym0 = __pop_Variant1(__symbols); + // SpAssignLhs = Spanned => ActionFn(13); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action10::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + let __nt = super::__action13::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 14) } pub(crate) fn __reduce29< @@ -4203,12 +6121,12 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(23); - let __sym0 = __pop_Variant1(__symbols); + // SpAtom = Spanned => ActionFn(19); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action23::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 15) } pub(crate) fn __reduce30< @@ -4220,12 +6138,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = => ActionFn(24); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action24::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (0, 15) + // SpExpr = Spanned => ActionFn(15); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 16) } pub(crate) fn __reduce31< 'input, @@ -4236,13 +6155,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(8); - let __sym0 = __pop_Variant3(__symbols); + // SpExpr? = SpExpr => ActionFn(28); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 16) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 17) } pub(crate) fn __reduce32< 'input, @@ -4253,13 +6172,12 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(30); - let __sym0 = __pop_Variant3(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 17) + // SpExpr? = => ActionFn(29); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action29::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 17) } pub(crate) fn __reduce33< 'input, @@ -4270,12 +6188,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = => ActionFn(31); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action31::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (0, 17) + // SpStmt = Spanned => ActionFn(10); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 18) } pub(crate) fn __reduce34< 'input, @@ -4286,13 +6205,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(52); - let __sym0 = __pop_Variant6(__symbols); + // SpStmt? = SpStmt => ActionFn(36); + let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action52::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 18) + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 19) } pub(crate) fn __reduce35< 'input, @@ -4303,13 +6222,12 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(53); - let __sym0 = __pop_Variant7(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action53::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 19) + // SpStmt? = => ActionFn(37); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action37::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 19) } pub(crate) fn __reduce36< 'input, @@ -4320,12 +6238,12 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(54); - let __sym0 = __pop_Variant14(__symbols); + // Spanned = AssignLhs => ActionFn(59); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action54::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 20) } pub(crate) fn __reduce37< @@ -4337,12 +6255,12 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(9); - let __sym0 = __pop_Variant1(__symbols); + // Spanned = Atom => ActionFn(60); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action9::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + let __nt = super::__action60::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 21) } pub(crate) fn __reduce38< @@ -4354,12 +6272,12 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(19); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Expr => ActionFn(61); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + let __nt = super::__action61::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 22) } pub(crate) fn __reduce39< @@ -4371,13 +6289,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(20); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Stmt => ActionFn(62); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); - (1, 22) + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) } pub(crate) fn __reduce40< 'input, @@ -4388,13 +6306,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(6); - let __sym0 = __pop_Variant6(__symbols); + // Stmt = SpExpr => ActionFn(11); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 23) + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 24) } pub(crate) fn __reduce41< 'input, @@ -4405,13 +6323,33 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(4); - let __sym0 = __pop_Variant7(__symbols); + // Stmt = SpAssignLhs, "=", SpExpr => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 24) + } + pub(crate) fn __reduce42< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action4::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 24) + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 25) } pub(crate) fn __reduce43< 'input, @@ -4422,13 +6360,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(5); - let __sym0 = __pop_Variant11(__symbols); + // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action5::<>(input, __sym0); + let __nt = super::__action25::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 26) + (1, 25) } pub(crate) fn __reduce44< 'input, @@ -4439,15 +6377,100 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpExpr = SpExpr => ActionFn(3); - let __sym0 = __pop_Variant1(__symbols); + // __AssignLhs = AssignLhs => ActionFn(4); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 26) + } + pub(crate) fn __reduce45< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Atom = Atom => ActionFn(8); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + pub(crate) fn __reduce46< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Expr = Expr => ActionFn(6); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 28) + } + pub(crate) fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAssignLhs = SpAssignLhs => ActionFn(3); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action3::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 27) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 30) } - pub(crate) fn __reduce45< + pub(crate) fn __reduce49< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAtom = SpAtom => ActionFn(7); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpExpr = SpExpr => ActionFn(5); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce51< 'input, >( input: &'input str, @@ -4462,9 +6485,9 @@ mod __parse__File { let __end = __sym0.2.clone(); let __nt = super::__action1::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 28) + (1, 33) } - pub(crate) fn __reduce46< + pub(crate) fn __reduce52< 'input, >( input: &'input str, @@ -4474,18 +6497,18 @@ mod __parse__File { ) -> (usize, usize) { // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action2::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 29) + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 34) } } pub use self::__parse__File::FileParser; #[cfg_attr(rustfmt, rustfmt_skip)] -mod __parse__SpAtom { +mod __parse__SpAssignLhs { #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)] use std::str::FromStr; @@ -4507,75 +6530,55 @@ mod __parse__SpAtom { Variant3(Spanned), Variant4(alloc::vec::Vec>), Variant5(usize), - Variant6(Atom), - Variant7(Expr), - Variant8(Vec), - Variant9(i64), - Variant10(String), - Variant11(Spanned), - Variant12(core::option::Option>), - Variant13(core::option::Option>), - Variant14(Stmt), + Variant6(AssignLhs), + Variant7(Atom), + Variant8(Expr), + Variant9(Vec), + Variant10(i64), + Variant11(String), + Variant12(Spanned), + Variant13(Spanned), + Variant14(core::option::Option>), + Variant15(core::option::Option>), + Variant16(Stmt), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 8, 9, 10, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 6, // State 1 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 2 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 3 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 4 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 7 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 8 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 9 - 0, 0, 0, 0, 0, 0, 0, 0, - // State 10 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 8 + integer] + __ACTION[(state as usize) * 9 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 0, // State 1 - -35, + -37, // State 2 - -14, + -13, // State 3 - -15, + -49, // State 4 - -44, + -29, // State 5 -28, - // State 6 - -13, - // State 7 - -39, - // State 8 - -40, - // State 9 - -26, - // State 10 - -27, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { 8 => 1, - 11 => 2, - 12 => 3, - 13 => 4, - 18 => 5, - 22 => 6, + 13 => 2, + 14 => 3, + 20 => 4, _ => 0, } } @@ -4585,6 +6588,7 @@ mod __parse__SpAtom { r###"")""###, r###"",""###, r###"";""###, + r###""=""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -4613,7 +6617,7 @@ mod __parse__SpAtom { type Token = Token<'input>; type TokenIndex = usize; type Symbol = __Symbol<'input>; - type Success = Spanned; + type Success = Spanned; type StateIndex = i8; type Action = i8; type ReduceIndex = i8; @@ -4641,7 +6645,7 @@ mod __parse__SpAtom { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 8 - 1) + __action(state, 9 - 1) } #[inline] @@ -4708,10 +6712,11 @@ mod __parse__SpAtom { Token(5, _) if true => Some(1), Token(6, _) if true => Some(2), Token(7, _) if true => Some(3), - Token(0, _) if true => Some(4), - Token(1, _) if true => Some(5), - Token(2, _) if true => Some(6), - Token(3, _) if true => Some(7), + Token(8, _) if true => Some(4), + Token(0, _) if true => Some(5), + Token(1, _) if true => Some(6), + Token(2, _) if true => Some(7), + Token(3, _) if true => Some(8), _ => None, } } @@ -4724,8 +6729,1585 @@ mod __parse__SpAtom { ) -> __Symbol<'input> { match __token_index { - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + } + } + pub struct SpAssignLhsParser { + builder: __lalrpop_util::lexer::MatcherBuilder, + _priv: (), + } + + impl SpAssignLhsParser { + pub fn new() -> SpAssignLhsParser { + let __builder = super::__intern_token::new_builder(); + SpAssignLhsParser { + builder: __builder, + _priv: (), + } + } + + #[allow(dead_code)] + pub fn parse< + 'input, + >( + &self, + input: &'input str, + ) -> Result, __lalrpop_util::ParseError, &'static str>> + { + let mut __tokens = self.builder.matcher(input); + __state_machine::Parser::drive( + __StateMachine { + input, + __phantom: core::marker::PhantomData::<(&())>, + }, + __tokens, + ) + } + } + pub(crate) fn __reduce< + 'input, + >( + input: &'input str, + __action: i8, + __lookahead_start: Option<&usize>, + __states: &mut alloc::vec::Vec, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> Option,__lalrpop_util::ParseError, &'static str>>> + { + let (__pop_states, __nonterminal) = match __action { + 0 => { + __reduce0(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 1 => { + __reduce1(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 2 => { + __reduce2(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 3 => { + __reduce3(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 4 => { + __reduce4(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 5 => { + __reduce5(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 6 => { + __reduce6(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 7 => { + __reduce7(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 8 => { + __reduce8(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 9 => { + __reduce9(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 10 => { + __reduce10(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 11 => { + __reduce11(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 12 => { + __reduce12(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 13 => { + __reduce13(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 14 => { + __reduce14(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 15 => { + __reduce15(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 16 => { + __reduce16(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 17 => { + __reduce17(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 18 => { + __reduce18(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 19 => { + __reduce19(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 20 => { + __reduce20(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 21 => { + __reduce21(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 22 => { + __reduce22(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 23 => { + __reduce23(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 24 => { + __reduce24(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 25 => { + __reduce25(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 26 => { + __reduce26(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 27 => { + __reduce27(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 28 => { + __reduce28(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 29 => { + __reduce29(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 30 => { + __reduce30(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 31 => { + __reduce31(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 32 => { + __reduce32(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 33 => { + __reduce33(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 34 => { + __reduce34(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 35 => { + __reduce35(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 36 => { + __reduce36(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 37 => { + __reduce37(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 38 => { + __reduce38(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 39 => { + __reduce39(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 40 => { + __reduce40(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 41 => { + __reduce41(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 42 => { + __reduce42(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 43 => { + __reduce43(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 44 => { + __reduce44(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 45 => { + __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 46 => { + __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 47 => { + __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 48 => { + // __SpAssignLhs = SpAssignLhs => ActionFn(3); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action3::<>(input, __sym0); + return Some(Ok(__nt)); + } + 49 => { + __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 50 => { + __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 51 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + _ => panic!("invalid action code {}", __action) + }; + let __states_len = __states.len(); + __states.truncate(__states_len - __pop_states); + let __state = *__states.last().unwrap(); + let __next_state = __goto(__state, __nonterminal); + __states.push(__next_state); + None + } + #[inline(never)] + fn __symbol_type_mismatch() -> ! { + panic!("symbol type mismatch") + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, AssignLhs, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Atom, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant1< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant1(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Stmt, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant11< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant4< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant5< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant0< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant0(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + pub(crate) fn __reduce0< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",") = SpExpr, "," => ActionFn(32); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action32::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (2, 0) + } + pub(crate) fn __reduce1< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",")* = => ActionFn(30); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action30::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (0, 1) + } + pub(crate) fn __reduce2< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",")* = ( ",")+ => ActionFn(31); + let __sym0 = __pop_Variant2(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (1, 1) + } + pub(crate) fn __reduce3< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",")+ = SpExpr, "," => ActionFn(47); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action47::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (2, 2) + } + pub(crate) fn __reduce4< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(48); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant2(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (3, 2) + } + pub(crate) fn __reduce5< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";") = SpStmt, ";" => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (2, 3) + } + pub(crate) fn __reduce6< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";")* = => ActionFn(38); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action38::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (0, 4) + } + pub(crate) fn __reduce7< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";")* = ( ";")+ => ActionFn(39); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action39::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 4) + } + pub(crate) fn __reduce8< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";")+ = SpStmt, ";" => ActionFn(51); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action51::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (2, 5) + } + pub(crate) fn __reduce9< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(52); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (3, 5) + } + pub(crate) fn __reduce10< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // @L = => ActionFn(46); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action46::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (0, 6) + } + pub(crate) fn __reduce11< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // @R = => ActionFn(45); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action45::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (0, 7) + } + pub(crate) fn __reduce12< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // AssignLhs = Name => ActionFn(14); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 8) + } + pub(crate) fn __reduce13< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Atom = Str => ActionFn(20); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) + } + pub(crate) fn __reduce14< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Atom = Int => ActionFn(21); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) + } + pub(crate) fn __reduce15< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Atom = Name => ActionFn(22); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) + } + pub(crate) fn __reduce16< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(63); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) + } + pub(crate) fn __reduce17< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpExpr, "(", ")" => ActionFn(64); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) + } + pub(crate) fn __reduce18< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(65); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (5, 10) + } + pub(crate) fn __reduce19< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(66); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) + } + pub(crate) fn __reduce20< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = SpAtom => ActionFn(17); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 10) + } + pub(crate) fn __reduce21< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr = "(", Expr, ")" => ActionFn(18); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant8(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) + } + pub(crate) fn __reduce22< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // File = SpStmt => ActionFn(67); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action67::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) + } + pub(crate) fn __reduce23< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // File = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action68::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) + } + pub(crate) fn __reduce24< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // File = ( ";")+, SpStmt => ActionFn(69); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 11) + } + pub(crate) fn __reduce25< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // File = ( ";")+ => ActionFn(70); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action70::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) + } + pub(crate) fn __reduce26< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Int = r#"[0-9]+"# => ActionFn(23); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action23::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 12) + } + pub(crate) fn __reduce27< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 13) + } + pub(crate) fn __reduce28< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpAssignLhs = Spanned => ActionFn(13); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action13::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 14) + } + pub(crate) fn __reduce29< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpAtom = Spanned => ActionFn(19); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 15) + } + pub(crate) fn __reduce30< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpExpr = Spanned => ActionFn(15); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 16) + } + pub(crate) fn __reduce31< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpExpr? = SpExpr => ActionFn(28); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 17) + } + pub(crate) fn __reduce32< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpExpr? = => ActionFn(29); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action29::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 17) + } + pub(crate) fn __reduce33< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpStmt = Spanned => ActionFn(10); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 18) + } + pub(crate) fn __reduce34< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpStmt? = SpStmt => ActionFn(36); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 19) + } + pub(crate) fn __reduce35< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // SpStmt? = => ActionFn(37); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action37::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 19) + } + pub(crate) fn __reduce36< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = AssignLhs => ActionFn(59); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 20) + } + pub(crate) fn __reduce37< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Atom => ActionFn(60); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action60::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 21) + } + pub(crate) fn __reduce38< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Expr => ActionFn(61); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action61::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 22) + } + pub(crate) fn __reduce39< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Stmt => ActionFn(62); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) + } + pub(crate) fn __reduce40< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = SpExpr => ActionFn(11); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 24) + } + pub(crate) fn __reduce41< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = SpAssignLhs, "=", SpExpr => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 24) + } + pub(crate) fn __reduce42< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 25) + } + pub(crate) fn __reduce43< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action25::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 25) + } + pub(crate) fn __reduce44< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __AssignLhs = AssignLhs => ActionFn(4); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 26) + } + pub(crate) fn __reduce45< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Atom = Atom => ActionFn(8); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + pub(crate) fn __reduce46< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Expr = Expr => ActionFn(6); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 28) + } + pub(crate) fn __reduce47< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 29) + } + pub(crate) fn __reduce49< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAtom = SpAtom => ActionFn(7); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpExpr = SpExpr => ActionFn(5); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce51< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpStmt = SpStmt => ActionFn(1); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce52< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Stmt = Stmt => ActionFn(2); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 34) + } +} +pub use self::__parse__SpAssignLhs::SpAssignLhsParser; + +#[cfg_attr(rustfmt, rustfmt_skip)] +mod __parse__SpAtom { + #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)] + + use std::str::FromStr; + use crate::syn::{Span, Spanned, unescape}; + use crate::syn::ast::*; + #[allow(unused_extern_crates)] + extern crate lalrpop_util as __lalrpop_util; + #[allow(unused_imports)] + use self::__lalrpop_util::state_machine as __state_machine; + extern crate core; + extern crate alloc; + use self::__lalrpop_util::lexer::Token; + #[allow(dead_code)] + pub(crate) enum __Symbol<'input> + { + Variant0(&'input str), + Variant1(Spanned), + Variant2(alloc::vec::Vec>), + Variant3(Spanned), + Variant4(alloc::vec::Vec>), + Variant5(usize), + Variant6(AssignLhs), + Variant7(Atom), + Variant8(Expr), + Variant9(Vec), + Variant10(i64), + Variant11(String), + Variant12(Spanned), + Variant13(Spanned), + Variant14(core::option::Option>), + Variant15(core::option::Option>), + Variant16(Stmt), + } + const __ACTION: &[i8] = &[ + // State 0 + 0, 0, 0, 0, 0, 8, 9, 10, 11, + // State 1 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 3 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 4 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 5 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 6 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 7 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 8 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 9 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 10 + 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + fn __action(state: i8, integer: usize) -> i8 { + __ACTION[(state as usize) * 9 + integer] + } + const __EOF_ACTION: &[i8] = &[ + // State 0 + 0, + // State 1 + -38, + // State 2 + -15, + // State 3 + -16, + // State 4 + -50, + // State 5 + -30, + // State 6 + -14, + // State 7 + -43, + // State 8 + -44, + // State 9 + -27, + // State 10 + -28, + ]; + fn __goto(state: i8, nt: usize) -> i8 { + match nt { + 9 => 1, + 12 => 2, + 13 => 3, + 15 => 4, + 21 => 5, + 25 => 6, + _ => 0, + } + } + fn __expected_tokens(__state: i8) -> alloc::vec::Vec { + const __TERMINAL: &[&str] = &[ + r###""(""###, + r###"")""###, + r###"",""###, + r###"";""###, + r###""=""###, + r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, + r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, + r###"r#"[0-9]+"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, + ]; + __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { + let next_state = __action(__state, index); + if next_state == 0 { + None + } else { + Some(alloc::string::ToString::to_string(terminal)) + } + }).collect() + } + pub(crate) struct __StateMachine<'input> + where + { + input: &'input str, + __phantom: core::marker::PhantomData<(&'input ())>, + } + impl<'input> __state_machine::ParserDefinition for __StateMachine<'input> + where + { + type Location = usize; + type Error = &'static str; + type Token = Token<'input>; + type TokenIndex = usize; + type Symbol = __Symbol<'input>; + type Success = Spanned; + type StateIndex = i8; + type Action = i8; + type ReduceIndex = i8; + type NonterminalIndex = usize; + + #[inline] + fn start_location(&self) -> Self::Location { + Default::default() + } + + #[inline] + fn start_state(&self) -> Self::StateIndex { + 0 + } + + #[inline] + fn token_to_index(&self, token: &Self::Token) -> Option { + __token_to_integer(token, core::marker::PhantomData::<(&())>) + } + + #[inline] + fn action(&self, state: i8, integer: usize) -> i8 { + __action(state, integer) + } + + #[inline] + fn error_action(&self, state: i8) -> i8 { + __action(state, 9 - 1) + } + + #[inline] + fn eof_action(&self, state: i8) -> i8 { + __EOF_ACTION[state as usize] + } + + #[inline] + fn goto(&self, state: i8, nt: usize) -> i8 { + __goto(state, nt) + } + + fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol { + __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>) + } + + fn expected_tokens(&self, state: i8) -> alloc::vec::Vec { + __expected_tokens(state) + } + + #[inline] + fn uses_error_recovery(&self) -> bool { + false + } + + #[inline] + fn error_recovery_symbol( + &self, + recovery: __state_machine::ErrorRecovery, + ) -> Self::Symbol { + panic!("error recovery not enabled for this grammar") + } + + fn reduce( + &mut self, + action: i8, + start_location: Option<&Self::Location>, + states: &mut alloc::vec::Vec, + symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple>, + ) -> Option<__state_machine::ParseResult> { + __reduce( + self.input, + action, + start_location, + states, + symbols, + core::marker::PhantomData::<(&())>, + ) + } + + fn simulate_reduce(&self, action: i8) -> __state_machine::SimulatedReduce { + panic!("error recovery not enabled for this grammar") + } + } + fn __token_to_integer< + 'input, + >( + __token: &Token<'input>, + _: core::marker::PhantomData<(&'input ())>, + ) -> Option + { + match *__token { + Token(4, _) if true => Some(0), + Token(5, _) if true => Some(1), + Token(6, _) if true => Some(2), + Token(7, _) if true => Some(3), + Token(8, _) if true => Some(4), + Token(0, _) if true => Some(5), + Token(1, _) if true => Some(6), + Token(2, _) if true => Some(7), + Token(3, _) if true => Some(8), + _ => None, + } + } + fn __token_to_symbol< + 'input, + >( + __token_index: usize, + __token: Token<'input>, + _: core::marker::PhantomData<(&'input ())>, + ) -> __Symbol<'input> + { + match __token_index { + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -4905,12 +8487,7 @@ mod __parse__SpAtom { __reduce42(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 43 => { - // __SpAtom = SpAtom => ActionFn(5); - let __sym0 = __pop_Variant11(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action5::<>(input, __sym0); - return Some(Ok(__nt)); + __reduce43(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 44 => { __reduce44(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -4921,6 +8498,29 @@ mod __parse__SpAtom { 46 => { __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 47 => { + __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 48 => { + __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 49 => { + // __SpAtom = SpAtom => ActionFn(7); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + return Some(Ok(__nt)); + } + 50 => { + __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 51 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -4938,7 +8538,7 @@ mod __parse__SpAtom { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Atom, usize) + ) -> (usize, AssignLhs, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), @@ -4949,21 +8549,43 @@ mod __parse__SpAtom { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Expr, usize) + ) -> (usize, Atom, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant11< + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Spanned, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -4989,36 +8611,36 @@ mod __parse__SpAtom { _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Stmt, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant10< + fn __pop_Variant11< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant8< + fn __pop_Variant9< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5044,36 +8666,36 @@ mod __parse__SpAtom { _ => __symbol_type_mismatch() } } - fn __pop_Variant12< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant13< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant9< + fn __pop_Variant10< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5108,13 +8730,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(27); + // ( ",") = SpExpr, "," => ActionFn(32); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action27::<>(input, __sym0, __sym1); + let __nt = super::__action32::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -5127,10 +8749,10 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(25); + // ( ",")* = => ActionFn(30); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action25::<>(input, &__start, &__end); + let __nt = super::__action30::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (0, 1) } @@ -5143,11 +8765,11 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(26); + // ( ",")* = ( ",")+ => ActionFn(31); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 1) } @@ -5160,13 +8782,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(41); + // ( ",")+ = SpExpr, "," => ActionFn(47); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action41::<>(input, __sym0, __sym1); + let __nt = super::__action47::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 2) } @@ -5179,14 +8801,14 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(42); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(48); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action42::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (3, 2) } @@ -5199,13 +8821,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(34); + // ( ";") = SpStmt, ";" => ActionFn(40); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action34::<>(input, __sym0, __sym1); + let __nt = super::__action40::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -5218,10 +8840,10 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = => ActionFn(32); + // ( ";")* = => ActionFn(38); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action32::<>(input, &__start, &__end); + let __nt = super::__action38::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (0, 4) } @@ -5234,11 +8856,11 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(33); + // ( ";")* = ( ";")+ => ActionFn(39); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 4) } @@ -5251,13 +8873,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(45); + // ( ";")+ = SpStmt, ";" => ActionFn(51); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action45::<>(input, __sym0, __sym1); + let __nt = super::__action51::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 5) } @@ -5270,14 +8892,14 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(46); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(52); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 5) } @@ -5290,10 +8912,10 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @L = => ActionFn(40); + // @L = => ActionFn(46); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action40::<>(input, &__start, &__end); + let __nt = super::__action46::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 6) } @@ -5306,10 +8928,10 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @R = => ActionFn(39); + // @R = => ActionFn(45); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action39::<>(input, &__start, &__end); + let __nt = super::__action45::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 7) } @@ -5322,11 +8944,11 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(15); - let __sym0 = __pop_Variant10(__symbols); + // AssignLhs = Name => ActionFn(14); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action15::<>(input, __sym0); + let __nt = super::__action14::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 8) } @@ -5339,13 +8961,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Int => ActionFn(16); - let __sym0 = __pop_Variant9(__symbols); + // Atom = Str => ActionFn(20); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action16::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce14< 'input, @@ -5356,13 +8978,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(17); + // Atom = Int => ActionFn(21); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action17::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce15< 'input, @@ -5373,17 +8995,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(55); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant1(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + // Atom = Name => ActionFn(22); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + (1, 9) } pub(crate) fn __reduce16< 'input, @@ -5394,16 +9012,17 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(56); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(63); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce17< 'input, @@ -5414,18 +9033,16 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(57); - assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant0(__symbols); - let __sym3 = __pop_Variant1(__symbols); - let __sym2 = __pop_Variant2(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(64); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (5, 9) + let __end = __sym2.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) } pub(crate) fn __reduce18< 'input, @@ -5436,17 +9053,18 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(58); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(65); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant1(__symbols); let __sym2 = __pop_Variant2(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2, __sym3); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + let __end = __sym4.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (5, 10) } pub(crate) fn __reduce19< 'input, @@ -5457,13 +9075,17 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(12); - let __sym0 = __pop_Variant11(__symbols); + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(66); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action12::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce20< 'input, @@ -5474,16 +9096,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = "(", Expr, ")" => ActionFn(13); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant7(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Expr = SpAtom => ActionFn(17); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action13::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 10) } pub(crate) fn __reduce21< 'input, @@ -5494,13 +9113,16 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(59); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(18); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant8(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action59::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + (3, 10) } pub(crate) fn __reduce22< 'input, @@ -5511,12 +9133,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = => ActionFn(60); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action60::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (0, 10) + // File = SpStmt => ActionFn(67); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action67::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) } pub(crate) fn __reduce23< 'input, @@ -5527,15 +9150,12 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(61); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action61::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (2, 10) + // File = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action68::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce24< 'input, @@ -5546,13 +9166,15 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(62); + // File = ( ";")+, SpStmt => ActionFn(69); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action62::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + let __end = __sym1.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 11) } pub(crate) fn __reduce25< 'input, @@ -5563,11 +9185,11 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Int = r#"[0-9]+"# => ActionFn(18); - let __sym0 = __pop_Variant0(__symbols); + // File = ( ";")+ => ActionFn(70); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action18::<>(input, __sym0); + let __nt = super::__action70::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 11) } @@ -5580,11 +9202,11 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(21); + // Int = r#"[0-9]+"# => ActionFn(23); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action21::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 12) } @@ -5597,11 +9219,11 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 13) } @@ -5614,12 +9236,12 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(10); - let __sym0 = __pop_Variant1(__symbols); + // SpAssignLhs = Spanned => ActionFn(13); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action10::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + let __nt = super::__action13::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 14) } pub(crate) fn __reduce29< @@ -5631,12 +9253,12 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(23); - let __sym0 = __pop_Variant1(__symbols); + // SpAtom = Spanned => ActionFn(19); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action23::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 15) } pub(crate) fn __reduce30< @@ -5648,12 +9270,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = => ActionFn(24); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action24::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (0, 15) + // SpExpr = Spanned => ActionFn(15); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 16) } pub(crate) fn __reduce31< 'input, @@ -5664,13 +9287,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(8); - let __sym0 = __pop_Variant3(__symbols); + // SpExpr? = SpExpr => ActionFn(28); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 16) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 17) } pub(crate) fn __reduce32< 'input, @@ -5681,13 +9304,12 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(30); - let __sym0 = __pop_Variant3(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 17) + // SpExpr? = => ActionFn(29); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action29::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 17) } pub(crate) fn __reduce33< 'input, @@ -5698,12 +9320,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = => ActionFn(31); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action31::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (0, 17) + // SpStmt = Spanned => ActionFn(10); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 18) } pub(crate) fn __reduce34< 'input, @@ -5714,13 +9337,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(52); - let __sym0 = __pop_Variant6(__symbols); + // SpStmt? = SpStmt => ActionFn(36); + let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action52::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 18) + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 19) } pub(crate) fn __reduce35< 'input, @@ -5731,13 +9354,12 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(53); - let __sym0 = __pop_Variant7(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action53::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 19) + // SpStmt? = => ActionFn(37); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action37::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 19) } pub(crate) fn __reduce36< 'input, @@ -5748,12 +9370,12 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(54); - let __sym0 = __pop_Variant14(__symbols); + // Spanned = AssignLhs => ActionFn(59); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action54::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 20) } pub(crate) fn __reduce37< @@ -5765,12 +9387,12 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(9); - let __sym0 = __pop_Variant1(__symbols); + // Spanned = Atom => ActionFn(60); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action9::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + let __nt = super::__action60::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 21) } pub(crate) fn __reduce38< @@ -5782,12 +9404,12 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(19); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Expr => ActionFn(61); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + let __nt = super::__action61::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 22) } pub(crate) fn __reduce39< @@ -5799,13 +9421,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(20); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Stmt => ActionFn(62); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); - (1, 22) + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) } pub(crate) fn __reduce40< 'input, @@ -5816,13 +9438,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(6); - let __sym0 = __pop_Variant6(__symbols); + // Stmt = SpExpr => ActionFn(11); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 23) + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 24) } pub(crate) fn __reduce41< 'input, @@ -5833,13 +9455,16 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(4); - let __sym0 = __pop_Variant7(__symbols); + // Stmt = SpAssignLhs, "=", SpExpr => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action4::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 24) + let __end = __sym2.2.clone(); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 24) } pub(crate) fn __reduce42< 'input, @@ -5850,12 +9475,29 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __File = File => ActionFn(0); - let __sym0 = __pop_Variant8(__symbols); + // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action0::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 25) + } + pub(crate) fn __reduce43< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action25::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 25) } pub(crate) fn __reduce44< @@ -5867,15 +9509,100 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpExpr = SpExpr => ActionFn(3); - let __sym0 = __pop_Variant1(__symbols); + // __AssignLhs = AssignLhs => ActionFn(4); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 26) + } + pub(crate) fn __reduce45< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Atom = Atom => ActionFn(8); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + pub(crate) fn __reduce46< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Expr = Expr => ActionFn(6); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 28) + } + pub(crate) fn __reduce47< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 29) + } + pub(crate) fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAssignLhs = SpAssignLhs => ActionFn(3); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action3::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 27) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 30) } - pub(crate) fn __reduce45< + pub(crate) fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpExpr = SpExpr => ActionFn(5); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce51< 'input, >( input: &'input str, @@ -5890,9 +9617,9 @@ mod __parse__SpAtom { let __end = __sym0.2.clone(); let __nt = super::__action1::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 28) + (1, 33) } - pub(crate) fn __reduce46< + pub(crate) fn __reduce52< 'input, >( input: &'input str, @@ -5902,12 +9629,12 @@ mod __parse__SpAtom { ) -> (usize, usize) { // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action2::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 29) + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 34) } } pub use self::__parse__SpAtom::SpAtomParser; @@ -5935,76 +9662,78 @@ mod __parse__SpExpr { Variant3(Spanned), Variant4(alloc::vec::Vec>), Variant5(usize), - Variant6(Atom), - Variant7(Expr), - Variant8(Vec), - Variant9(i64), - Variant10(String), - Variant11(Spanned), - Variant12(core::option::Option>), - Variant13(core::option::Option>), - Variant14(Stmt), + Variant6(AssignLhs), + Variant7(Atom), + Variant8(Expr), + Variant9(Vec), + Variant10(i64), + Variant11(String), + Variant12(Spanned), + Variant13(Spanned), + Variant14(core::option::Option>), + Variant15(core::option::Option>), + Variant16(Stmt), } const __ACTION: &[i8] = &[ // State 0 - 2, 0, 0, 0, 14, 15, 16, 17, + 2, 0, 0, 0, 0, 14, 15, 16, 17, // State 1 - 2, 0, 0, 0, 14, 15, 16, 17, + 2, 0, 0, 0, 0, 14, 15, 16, 17, // State 2 - 2, 21, 0, 0, 14, 15, 16, 17, + 2, 21, 0, 0, 0, 14, 15, 16, 17, // State 3 - 2, 24, 0, 0, 14, 15, 16, 17, + 2, 24, 0, 0, 0, 14, 15, 16, 17, // State 4 - -35, -35, -35, 0, 0, 0, 0, 0, + -38, -38, -38, 0, 0, 0, 0, 0, 0, // State 5 - -36, -36, -36, 0, 0, 0, 0, 0, + -39, -39, -39, 0, 0, 0, 0, 0, 0, // State 6 - -14, -14, -14, 0, 0, 0, 0, 0, + -15, -15, -15, 0, 0, 0, 0, 0, 0, // State 7 - -15, -15, -15, 0, 0, 0, 0, 0, + -16, -16, -16, 0, 0, 0, 0, 0, 0, // State 8 - -20, -20, -20, 0, 0, 0, 0, 0, + -21, -21, -21, 0, 0, 0, 0, 0, 0, // State 9 - 3, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, // State 10 - -28, -28, -28, 0, 0, 0, 0, 0, + -30, -30, -30, 0, 0, 0, 0, 0, 0, // State 11 - -29, -29, -29, 0, 0, 0, 0, 0, + -31, -31, -31, 0, 0, 0, 0, 0, 0, // State 12 - -13, -13, -13, 0, 0, 0, 0, 0, + -14, -14, -14, 0, 0, 0, 0, 0, 0, // State 13 - -39, -39, -39, 0, 0, 0, 0, 0, + -43, -43, -43, 0, 0, 0, 0, 0, 0, // State 14 - -40, -40, -40, 0, 0, 0, 0, 0, + -44, -44, -44, 0, 0, 0, 0, 0, 0, // State 15 - -26, -26, -26, 0, 0, 0, 0, 0, + -27, -27, -27, 0, 0, 0, 0, 0, 0, // State 16 - -27, -27, -27, 0, 0, 0, 0, 0, + -28, -28, -28, 0, 0, 0, 0, 0, 0, // State 17 - -36, 22, 0, 0, 0, 0, 0, 0, + -39, 22, 0, 0, 0, 0, 0, 0, 0, // State 18 - 3, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, // State 19 - 3, 25, 26, 0, 0, 0, 0, 0, + 3, 25, 26, 0, 0, 0, 0, 0, 0, // State 20 - -17, -17, -17, 0, 0, 0, 0, 0, + -18, -18, -18, 0, 0, 0, 0, 0, 0, // State 21 - -21, -21, -21, 0, 0, 0, 0, 0, + -22, -22, -22, 0, 0, 0, 0, 0, 0, // State 22 - 3, 27, 28, 0, 0, 0, 0, 0, + 3, 27, 28, 0, 0, 0, 0, 0, 0, // State 23 - -19, -19, -19, 0, 0, 0, 0, 0, + -20, -20, -20, 0, 0, 0, 0, 0, 0, // State 24 - -16, -16, -16, 0, 0, 0, 0, 0, + -17, -17, -17, 0, 0, 0, 0, 0, 0, // State 25 - -4, -4, 0, 0, -4, -4, -4, -4, + -4, -4, 0, 0, 0, -4, -4, -4, -4, // State 26 - -18, -18, -18, 0, 0, 0, 0, 0, + -19, -19, -19, 0, 0, 0, 0, 0, 0, // State 27 - -5, -5, 0, 0, -5, -5, -5, -5, + -5, -5, 0, 0, 0, -5, -5, -5, -5, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 8 + integer] + __ACTION[(state as usize) * 9 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -6016,31 +9745,31 @@ mod __parse__SpExpr { // State 3 0, // State 4 - -35, + -38, // State 5 - -36, - // State 6 - -14, - // State 7 - -15, - // State 8 - -20, - // State 9 - -45, - // State 10 - -28, - // State 11 - -29, - // State 12 - -13, - // State 13 -39, + // State 6 + -15, + // State 7 + -16, + // State 8 + -21, + // State 9 + -51, + // State 10 + -30, + // State 11 + -31, + // State 12 + -14, + // State 13 + -43, // State 14 - -40, + -44, // State 15 - -26, - // State 16 -27, + // State 16 + -28, // State 17 0, // State 18 @@ -6048,42 +9777,42 @@ mod __parse__SpExpr { // State 19 0, // State 20 - -17, + -18, // State 21 - -21, + -22, // State 22 0, // State 23 - -19, + -20, // State 24 - -16, + -17, // State 25 0, // State 26 - -18, + -19, // State 27 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { 2 => 3, - 8 => 4, - 9 => match state { + 9 => 4, + 10 => match state { 1 => 17, _ => 5, }, - 11 => 6, - 12 => 7, - 13 => 8, - 14 => match state { + 12 => 6, + 13 => 7, + 15 => 8, + 16 => match state { 1 => 18, 2 => 19, 3 => 22, _ => 9, }, - 18 => 10, - 19 => 11, - 22 => 12, + 21 => 10, + 22 => 11, + 25 => 12, _ => 0, } } @@ -6093,6 +9822,7 @@ mod __parse__SpExpr { r###"")""###, r###"",""###, r###"";""###, + r###""=""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -6149,7 +9879,7 @@ mod __parse__SpExpr { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 8 - 1) + __action(state, 9 - 1) } #[inline] @@ -6216,10 +9946,11 @@ mod __parse__SpExpr { Token(5, _) if true => Some(1), Token(6, _) if true => Some(2), Token(7, _) if true => Some(3), - Token(0, _) if true => Some(4), - Token(1, _) if true => Some(5), - Token(2, _) if true => Some(6), - Token(3, _) if true => Some(7), + Token(8, _) if true => Some(4), + Token(0, _) if true => Some(5), + Token(1, _) if true => Some(6), + Token(2, _) if true => Some(7), + Token(3, _) if true => Some(8), _ => None, } } @@ -6232,8 +9963,8 @@ mod __parse__SpExpr { ) -> __Symbol<'input> { match __token_index { - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -6416,12 +10147,7 @@ mod __parse__SpExpr { __reduce43(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 44 => { - // __SpExpr = SpExpr => ActionFn(3); - let __sym0 = __pop_Variant1(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action3::<>(input, __sym0); - return Some(Ok(__nt)); + __reduce44(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 45 => { __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -6429,6 +10155,29 @@ mod __parse__SpExpr { 46 => { __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 47 => { + __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 48 => { + __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 49 => { + __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 50 => { + // __SpExpr = SpExpr => ActionFn(5); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + return Some(Ok(__nt)); + } + 51 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -6446,7 +10195,7 @@ mod __parse__SpExpr { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Atom, usize) + ) -> (usize, AssignLhs, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), @@ -6457,21 +10206,43 @@ mod __parse__SpExpr { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Expr, usize) + ) -> (usize, Atom, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant11< + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Spanned, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -6497,36 +10268,36 @@ mod __parse__SpExpr { _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Stmt, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant10< + fn __pop_Variant11< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant8< + fn __pop_Variant9< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -6552,36 +10323,36 @@ mod __parse__SpExpr { _ => __symbol_type_mismatch() } } - fn __pop_Variant12< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant13< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant9< + fn __pop_Variant10< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -6616,13 +10387,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(27); + // ( ",") = SpExpr, "," => ActionFn(32); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action27::<>(input, __sym0, __sym1); + let __nt = super::__action32::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -6635,10 +10406,10 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(25); + // ( ",")* = => ActionFn(30); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action25::<>(input, &__start, &__end); + let __nt = super::__action30::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (0, 1) } @@ -6651,11 +10422,11 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(26); + // ( ",")* = ( ",")+ => ActionFn(31); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 1) } @@ -6668,13 +10439,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(41); + // ( ",")+ = SpExpr, "," => ActionFn(47); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action41::<>(input, __sym0, __sym1); + let __nt = super::__action47::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 2) } @@ -6687,14 +10458,14 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(42); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(48); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action42::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (3, 2) } @@ -6707,13 +10478,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(34); + // ( ";") = SpStmt, ";" => ActionFn(40); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action34::<>(input, __sym0, __sym1); + let __nt = super::__action40::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -6726,10 +10497,10 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = => ActionFn(32); + // ( ";")* = => ActionFn(38); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action32::<>(input, &__start, &__end); + let __nt = super::__action38::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (0, 4) } @@ -6742,11 +10513,11 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(33); + // ( ";")* = ( ";")+ => ActionFn(39); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 4) } @@ -6759,13 +10530,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(45); + // ( ";")+ = SpStmt, ";" => ActionFn(51); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action45::<>(input, __sym0, __sym1); + let __nt = super::__action51::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 5) } @@ -6778,14 +10549,14 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(46); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(52); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 5) } @@ -6798,10 +10569,10 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @L = => ActionFn(40); + // @L = => ActionFn(46); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action40::<>(input, &__start, &__end); + let __nt = super::__action46::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 6) } @@ -6814,10 +10585,10 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @R = => ActionFn(39); + // @R = => ActionFn(45); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action39::<>(input, &__start, &__end); + let __nt = super::__action45::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 7) } @@ -6830,11 +10601,11 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(15); - let __sym0 = __pop_Variant10(__symbols); + // AssignLhs = Name => ActionFn(14); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action15::<>(input, __sym0); + let __nt = super::__action14::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 8) } @@ -6847,13 +10618,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Int => ActionFn(16); - let __sym0 = __pop_Variant9(__symbols); + // Atom = Str => ActionFn(20); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action16::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce14< 'input, @@ -6864,13 +10635,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(17); + // Atom = Int => ActionFn(21); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action17::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce15< 'input, @@ -6881,17 +10652,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(55); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant1(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + // Atom = Name => ActionFn(22); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + (1, 9) } pub(crate) fn __reduce16< 'input, @@ -6902,16 +10669,17 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(56); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(63); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce17< 'input, @@ -6922,18 +10690,16 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(57); - assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant0(__symbols); - let __sym3 = __pop_Variant1(__symbols); - let __sym2 = __pop_Variant2(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(64); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (5, 9) + let __end = __sym2.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) } pub(crate) fn __reduce18< 'input, @@ -6944,17 +10710,18 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(58); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(65); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant1(__symbols); let __sym2 = __pop_Variant2(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2, __sym3); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + let __end = __sym4.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (5, 10) } pub(crate) fn __reduce19< 'input, @@ -6965,13 +10732,17 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(12); - let __sym0 = __pop_Variant11(__symbols); + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(66); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action12::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce20< 'input, @@ -6982,16 +10753,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = "(", Expr, ")" => ActionFn(13); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant7(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Expr = SpAtom => ActionFn(17); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action13::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 10) } pub(crate) fn __reduce21< 'input, @@ -7002,13 +10770,16 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(59); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(18); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant8(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action59::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + (3, 10) } pub(crate) fn __reduce22< 'input, @@ -7019,12 +10790,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = => ActionFn(60); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action60::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (0, 10) + // File = SpStmt => ActionFn(67); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action67::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) } pub(crate) fn __reduce23< 'input, @@ -7035,15 +10807,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(61); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action61::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (2, 10) + // File = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action68::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce24< 'input, @@ -7054,13 +10823,15 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(62); + // File = ( ";")+, SpStmt => ActionFn(69); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action62::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + let __end = __sym1.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 11) } pub(crate) fn __reduce25< 'input, @@ -7071,11 +10842,11 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Int = r#"[0-9]+"# => ActionFn(18); - let __sym0 = __pop_Variant0(__symbols); + // File = ( ";")+ => ActionFn(70); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action18::<>(input, __sym0); + let __nt = super::__action70::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 11) } @@ -7088,11 +10859,11 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(21); + // Int = r#"[0-9]+"# => ActionFn(23); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action21::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 12) } @@ -7105,11 +10876,11 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 13) } @@ -7122,12 +10893,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(10); - let __sym0 = __pop_Variant1(__symbols); + // SpAssignLhs = Spanned => ActionFn(13); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action10::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + let __nt = super::__action13::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 14) } pub(crate) fn __reduce29< @@ -7139,12 +10910,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(23); - let __sym0 = __pop_Variant1(__symbols); + // SpAtom = Spanned => ActionFn(19); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action23::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 15) } pub(crate) fn __reduce30< @@ -7156,12 +10927,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = => ActionFn(24); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action24::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (0, 15) + // SpExpr = Spanned => ActionFn(15); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 16) } pub(crate) fn __reduce31< 'input, @@ -7172,13 +10944,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(8); - let __sym0 = __pop_Variant3(__symbols); + // SpExpr? = SpExpr => ActionFn(28); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 16) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 17) } pub(crate) fn __reduce32< 'input, @@ -7189,13 +10961,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(30); - let __sym0 = __pop_Variant3(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 17) + // SpExpr? = => ActionFn(29); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action29::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 17) } pub(crate) fn __reduce33< 'input, @@ -7206,12 +10977,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = => ActionFn(31); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action31::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (0, 17) + // SpStmt = Spanned => ActionFn(10); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 18) } pub(crate) fn __reduce34< 'input, @@ -7222,13 +10994,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(52); - let __sym0 = __pop_Variant6(__symbols); + // SpStmt? = SpStmt => ActionFn(36); + let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action52::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 18) + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 19) } pub(crate) fn __reduce35< 'input, @@ -7239,13 +11011,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(53); - let __sym0 = __pop_Variant7(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action53::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 19) + // SpStmt? = => ActionFn(37); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action37::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 19) } pub(crate) fn __reduce36< 'input, @@ -7256,12 +11027,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(54); - let __sym0 = __pop_Variant14(__symbols); + // Spanned = AssignLhs => ActionFn(59); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action54::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 20) } pub(crate) fn __reduce37< @@ -7273,12 +11044,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(9); - let __sym0 = __pop_Variant1(__symbols); + // Spanned = Atom => ActionFn(60); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action9::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + let __nt = super::__action60::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 21) } pub(crate) fn __reduce38< @@ -7290,12 +11061,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(19); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Expr => ActionFn(61); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + let __nt = super::__action61::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 22) } pub(crate) fn __reduce39< @@ -7307,13 +11078,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(20); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Stmt => ActionFn(62); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); - (1, 22) + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) } pub(crate) fn __reduce40< 'input, @@ -7324,13 +11095,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(6); - let __sym0 = __pop_Variant6(__symbols); + // Stmt = SpExpr => ActionFn(11); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 23) + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 24) } pub(crate) fn __reduce41< 'input, @@ -7341,13 +11112,16 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(4); - let __sym0 = __pop_Variant7(__symbols); + // Stmt = SpAssignLhs, "=", SpExpr => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action4::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 24) + let __end = __sym2.2.clone(); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 24) } pub(crate) fn __reduce42< 'input, @@ -7358,12 +11132,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __File = File => ActionFn(0); - let __sym0 = __pop_Variant8(__symbols); + // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action0::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 25) } pub(crate) fn __reduce43< @@ -7375,12 +11149,29 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(5); - let __sym0 = __pop_Variant11(__symbols); + // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action5::<>(input, __sym0); + let __nt = super::__action25::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 25) + } + pub(crate) fn __reduce44< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __AssignLhs = AssignLhs => ActionFn(4); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 26) } pub(crate) fn __reduce45< @@ -7391,6 +11182,91 @@ mod __parse__SpExpr { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) + { + // __Atom = Atom => ActionFn(8); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + pub(crate) fn __reduce46< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Expr = Expr => ActionFn(6); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 28) + } + pub(crate) fn __reduce47< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 29) + } + pub(crate) fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAssignLhs = SpAssignLhs => ActionFn(3); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action3::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce49< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAtom = SpAtom => ActionFn(7); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce51< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) { // __SpStmt = SpStmt => ActionFn(1); let __sym0 = __pop_Variant3(__symbols); @@ -7398,9 +11274,9 @@ mod __parse__SpExpr { let __end = __sym0.2.clone(); let __nt = super::__action1::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 28) + (1, 33) } - pub(crate) fn __reduce46< + pub(crate) fn __reduce52< 'input, >( input: &'input str, @@ -7410,12 +11286,12 @@ mod __parse__SpExpr { ) -> (usize, usize) { // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action2::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 29) + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 34) } } pub use self::__parse__SpExpr::SpExprParser; @@ -7443,82 +11319,96 @@ mod __parse__SpStmt { Variant3(Spanned), Variant4(alloc::vec::Vec>), Variant5(usize), - Variant6(Atom), - Variant7(Expr), - Variant8(Vec), - Variant9(i64), - Variant10(String), - Variant11(Spanned), - Variant12(core::option::Option>), - Variant13(core::option::Option>), - Variant14(Stmt), + Variant6(AssignLhs), + Variant7(Atom), + Variant8(Expr), + Variant9(Vec), + Variant10(i64), + Variant11(String), + Variant12(Spanned), + Variant13(Spanned), + Variant14(core::option::Option>), + Variant15(core::option::Option>), + Variant16(Stmt), } const __ACTION: &[i8] = &[ // State 0 - 2, 0, 0, 0, 17, 18, 19, 20, + 2, 0, 0, 0, 0, 21, 22, 23, 24, // State 1 - 2, 0, 0, 0, 17, 18, 19, 20, + 2, 0, 0, 0, 0, 21, 22, 23, 24, // State 2 - 2, 24, 0, 0, 17, 18, 19, 20, + 2, 0, 0, 0, 0, 21, 22, 23, 24, // State 3 - 2, 27, 0, 0, 17, 18, 19, 20, + 2, 30, 0, 0, 0, 21, 22, 23, 24, // State 4 - -35, -35, -35, 0, 0, 0, 0, 0, + 2, 33, 0, 0, 0, 21, 22, 23, 24, // State 5 - -36, -36, -36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -37, 0, 0, 0, 0, // State 6 - -14, -14, -14, 0, 0, 0, 0, 0, + -38, -38, -38, 0, 0, 0, 0, 0, 0, // State 7 - -15, -15, -15, 0, 0, 0, 0, 0, + -39, -39, -39, 0, 0, 0, 0, 0, 0, // State 8 - -20, -20, -20, 0, 0, 0, 0, 0, + -15, -15, -15, 0, 0, 0, 0, 0, 0, // State 9 - 3, 0, 0, 0, 0, 0, 0, 0, + -16, 0, 0, 0, -13, 0, 0, 0, 0, // State 10 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, // State 11 - -28, -28, -28, 0, 0, 0, 0, 0, + -21, -21, -21, 0, 0, 0, 0, 0, 0, // State 12 - -29, -29, -29, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, // State 13 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 14 - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -29, 0, 0, 0, 0, // State 15 - -13, -13, -13, 0, 0, 0, 0, 0, + -30, -30, -30, 0, 0, 0, 0, 0, 0, // State 16 - -39, -39, -39, 0, 0, 0, 0, 0, + -31, -31, -31, 0, 0, 0, 0, 0, 0, // State 17 - -40, -40, -40, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 18 - -26, -26, -26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 19 - -27, -27, -27, 0, 0, 0, 0, 0, + -14, -14, -14, 0, 0, 0, 0, 0, 0, // State 20 - -36, 25, 0, 0, 0, 0, 0, 0, + -43, -43, -43, 0, 0, 0, 0, 0, 0, // State 21 - 3, 0, 0, 0, 0, 0, 0, 0, + -44, -44, -44, 0, 0, 0, 0, 0, 0, // State 22 - 3, 28, 29, 0, 0, 0, 0, 0, + -27, -27, -27, 0, 0, 0, 0, 0, 0, // State 23 - -17, -17, -17, 0, 0, 0, 0, 0, + -28, -28, -28, 0, -28, 0, 0, 0, 0, // State 24 - -21, -21, -21, 0, 0, 0, 0, 0, + -39, 31, 0, 0, 0, 0, 0, 0, 0, // State 25 - 3, 30, 31, 0, 0, 0, 0, 0, + -16, -16, -16, 0, 0, 0, 0, 0, 0, // State 26 - -19, -19, -19, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, // State 27 - -16, -16, -16, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, // State 28 - -4, -4, 0, 0, -4, -4, -4, -4, + 4, 34, 35, 0, 0, 0, 0, 0, 0, // State 29 - -18, -18, -18, 0, 0, 0, 0, 0, + -18, -18, -18, 0, 0, 0, 0, 0, 0, // State 30 - -5, -5, 0, 0, -5, -5, -5, -5, + -22, -22, -22, 0, 0, 0, 0, 0, 0, + // State 31 + 4, 36, 37, 0, 0, 0, 0, 0, 0, + // State 32 + -20, -20, -20, 0, 0, 0, 0, 0, 0, + // State 33 + -17, -17, -17, 0, 0, 0, 0, 0, 0, + // State 34 + -4, -4, 0, 0, 0, -4, -4, -4, -4, + // State 35 + -19, -19, -19, 0, 0, 0, 0, 0, 0, + // State 36 + -5, -5, 0, 0, 0, -5, -5, -5, -5, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 8 + integer] + __ACTION[(state as usize) * 9 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -7530,83 +11420,102 @@ mod __parse__SpStmt { // State 3 0, // State 4 - -35, + 0, // State 5 - -36, + 0, // State 6 - -14, - // State 7 - -15, - // State 8 - -20, - // State 9 -38, - // State 10 - -46, - // State 11 - -28, - // State 12 - -29, - // State 13 - -32, - // State 14 - -37, - // State 15 - -13, - // State 16 + // State 7 -39, - // State 17 - -40, - // State 18 - -26, - // State 19 - -27, - // State 20 - 0, - // State 21 - 0, - // State 22 - 0, - // State 23 - -17, - // State 24 - -21, - // State 25 - 0, - // State 26 - -19, - // State 27 + // State 8 + -15, + // State 9 -16, + // State 10 + 0, + // State 11 + -21, + // State 12 + -41, + // State 13 + -52, + // State 14 + 0, + // State 15 + -30, + // State 16 + -31, + // State 17 + -34, + // State 18 + -40, + // State 19 + -14, + // State 20 + -43, + // State 21 + -44, + // State 22 + -27, + // State 23 + -28, + // State 24 + 0, + // State 25 + -16, + // State 26 + 0, + // State 27 + -42, // State 28 0, // State 29 -18, // State 30 + -22, + // State 31 + 0, + // State 32 + -20, + // State 33 + -17, + // State 34 + 0, + // State 35 + -19, + // State 36 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 2 => 3, - 8 => 4, - 9 => match state { - 1 => 20, - _ => 5, + 2 => 4, + 8 => 5, + 9 => 6, + 10 => match state { + 1 => 24, + _ => 7, }, - 11 => 6, - 12 => 7, - 13 => 8, - 14 => match state { - 1 => 21, - 2 => 22, - 3 => 25, + 12 => 8, + 13 => match state { + 1..=4 => 25, _ => 9, }, - 16 => 10, - 18 => 11, - 19 => 12, - 20 => 13, - 21 => 14, - 22 => 15, + 14 => 10, + 15 => 11, + 16 => match state { + 1 => 26, + 2 => 27, + 3 => 28, + 4 => 31, + _ => 12, + }, + 18 => 13, + 20 => 14, + 21 => 15, + 22 => 16, + 23 => 17, + 24 => 18, + 25 => 19, _ => 0, } } @@ -7616,6 +11525,7 @@ mod __parse__SpStmt { r###"")""###, r###"",""###, r###"";""###, + r###""=""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -7672,7 +11582,7 @@ mod __parse__SpStmt { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 8 - 1) + __action(state, 9 - 1) } #[inline] @@ -7739,10 +11649,11 @@ mod __parse__SpStmt { Token(5, _) if true => Some(1), Token(6, _) if true => Some(2), Token(7, _) if true => Some(3), - Token(0, _) if true => Some(4), - Token(1, _) if true => Some(5), - Token(2, _) if true => Some(6), - Token(3, _) if true => Some(7), + Token(8, _) if true => Some(4), + Token(0, _) if true => Some(5), + Token(1, _) if true => Some(6), + Token(2, _) if true => Some(7), + Token(3, _) if true => Some(8), _ => None, } } @@ -7755,8 +11666,8 @@ mod __parse__SpStmt { ) -> __Symbol<'input> { match __token_index { - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -7942,6 +11853,24 @@ mod __parse__SpStmt { __reduce44(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 45 => { + __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 46 => { + __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 47 => { + __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 48 => { + __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 49 => { + __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 50 => { + __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 51 => { // __SpStmt = SpStmt => ActionFn(1); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); @@ -7949,8 +11878,8 @@ mod __parse__SpStmt { let __nt = super::__action1::<>(input, __sym0); return Some(Ok(__nt)); } - 46 => { - __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } _ => panic!("invalid action code {}", __action) }; @@ -7969,7 +11898,7 @@ mod __parse__SpStmt { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Atom, usize) + ) -> (usize, AssignLhs, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), @@ -7980,21 +11909,43 @@ mod __parse__SpStmt { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Expr, usize) + ) -> (usize, Atom, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant11< + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Spanned, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -8020,36 +11971,36 @@ mod __parse__SpStmt { _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Stmt, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant10< + fn __pop_Variant11< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant8< + fn __pop_Variant9< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -8075,36 +12026,36 @@ mod __parse__SpStmt { _ => __symbol_type_mismatch() } } - fn __pop_Variant12< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant13< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant9< + fn __pop_Variant10< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -8139,13 +12090,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(27); + // ( ",") = SpExpr, "," => ActionFn(32); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action27::<>(input, __sym0, __sym1); + let __nt = super::__action32::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -8158,10 +12109,10 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(25); + // ( ",")* = => ActionFn(30); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action25::<>(input, &__start, &__end); + let __nt = super::__action30::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (0, 1) } @@ -8174,11 +12125,11 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(26); + // ( ",")* = ( ",")+ => ActionFn(31); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 1) } @@ -8191,13 +12142,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(41); + // ( ",")+ = SpExpr, "," => ActionFn(47); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action41::<>(input, __sym0, __sym1); + let __nt = super::__action47::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 2) } @@ -8210,14 +12161,14 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(42); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(48); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action42::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (3, 2) } @@ -8230,13 +12181,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(34); + // ( ";") = SpStmt, ";" => ActionFn(40); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action34::<>(input, __sym0, __sym1); + let __nt = super::__action40::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -8249,10 +12200,10 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = => ActionFn(32); + // ( ";")* = => ActionFn(38); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action32::<>(input, &__start, &__end); + let __nt = super::__action38::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (0, 4) } @@ -8265,11 +12216,11 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(33); + // ( ";")* = ( ";")+ => ActionFn(39); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 4) } @@ -8282,13 +12233,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(45); + // ( ";")+ = SpStmt, ";" => ActionFn(51); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action45::<>(input, __sym0, __sym1); + let __nt = super::__action51::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 5) } @@ -8301,14 +12252,14 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(46); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(52); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 5) } @@ -8321,10 +12272,10 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @L = => ActionFn(40); + // @L = => ActionFn(46); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action40::<>(input, &__start, &__end); + let __nt = super::__action46::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 6) } @@ -8337,10 +12288,10 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @R = => ActionFn(39); + // @R = => ActionFn(45); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action39::<>(input, &__start, &__end); + let __nt = super::__action45::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 7) } @@ -8353,11 +12304,11 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(15); - let __sym0 = __pop_Variant10(__symbols); + // AssignLhs = Name => ActionFn(14); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action15::<>(input, __sym0); + let __nt = super::__action14::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 8) } @@ -8370,13 +12321,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Int => ActionFn(16); - let __sym0 = __pop_Variant9(__symbols); + // Atom = Str => ActionFn(20); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action16::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce14< 'input, @@ -8387,13 +12338,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(17); + // Atom = Int => ActionFn(21); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action17::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce15< 'input, @@ -8404,17 +12355,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(55); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant1(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + // Atom = Name => ActionFn(22); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + (1, 9) } pub(crate) fn __reduce16< 'input, @@ -8425,16 +12372,17 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(56); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(63); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce17< 'input, @@ -8445,18 +12393,16 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(57); - assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant0(__symbols); - let __sym3 = __pop_Variant1(__symbols); - let __sym2 = __pop_Variant2(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(64); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (5, 9) + let __end = __sym2.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) } pub(crate) fn __reduce18< 'input, @@ -8467,17 +12413,18 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(58); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(65); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant1(__symbols); let __sym2 = __pop_Variant2(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2, __sym3); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + let __end = __sym4.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (5, 10) } pub(crate) fn __reduce19< 'input, @@ -8488,13 +12435,17 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(12); - let __sym0 = __pop_Variant11(__symbols); + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(66); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action12::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce20< 'input, @@ -8505,16 +12456,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = "(", Expr, ")" => ActionFn(13); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant7(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Expr = SpAtom => ActionFn(17); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action13::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 10) } pub(crate) fn __reduce21< 'input, @@ -8525,13 +12473,16 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(59); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(18); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant8(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action59::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + (3, 10) } pub(crate) fn __reduce22< 'input, @@ -8542,12 +12493,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = => ActionFn(60); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action60::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (0, 10) + // File = SpStmt => ActionFn(67); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action67::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) } pub(crate) fn __reduce23< 'input, @@ -8558,15 +12510,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(61); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action61::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (2, 10) + // File = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action68::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce24< 'input, @@ -8577,13 +12526,15 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(62); + // File = ( ";")+, SpStmt => ActionFn(69); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action62::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + let __end = __sym1.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 11) } pub(crate) fn __reduce25< 'input, @@ -8594,11 +12545,11 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Int = r#"[0-9]+"# => ActionFn(18); - let __sym0 = __pop_Variant0(__symbols); + // File = ( ";")+ => ActionFn(70); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action18::<>(input, __sym0); + let __nt = super::__action70::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 11) } @@ -8611,11 +12562,11 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(21); + // Int = r#"[0-9]+"# => ActionFn(23); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action21::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 12) } @@ -8628,11 +12579,11 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 13) } @@ -8645,12 +12596,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(10); - let __sym0 = __pop_Variant1(__symbols); + // SpAssignLhs = Spanned => ActionFn(13); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action10::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + let __nt = super::__action13::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 14) } pub(crate) fn __reduce29< @@ -8662,12 +12613,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(23); - let __sym0 = __pop_Variant1(__symbols); + // SpAtom = Spanned => ActionFn(19); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action23::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 15) } pub(crate) fn __reduce30< @@ -8679,12 +12630,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = => ActionFn(24); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action24::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (0, 15) + // SpExpr = Spanned => ActionFn(15); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 16) } pub(crate) fn __reduce31< 'input, @@ -8695,13 +12647,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(8); - let __sym0 = __pop_Variant3(__symbols); + // SpExpr? = SpExpr => ActionFn(28); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 16) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 17) } pub(crate) fn __reduce32< 'input, @@ -8712,13 +12664,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(30); - let __sym0 = __pop_Variant3(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 17) + // SpExpr? = => ActionFn(29); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action29::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 17) } pub(crate) fn __reduce33< 'input, @@ -8729,12 +12680,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = => ActionFn(31); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action31::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (0, 17) + // SpStmt = Spanned => ActionFn(10); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 18) } pub(crate) fn __reduce34< 'input, @@ -8745,13 +12697,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(52); - let __sym0 = __pop_Variant6(__symbols); + // SpStmt? = SpStmt => ActionFn(36); + let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action52::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 18) + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 19) } pub(crate) fn __reduce35< 'input, @@ -8762,13 +12714,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(53); - let __sym0 = __pop_Variant7(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action53::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 19) + // SpStmt? = => ActionFn(37); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action37::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 19) } pub(crate) fn __reduce36< 'input, @@ -8779,12 +12730,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(54); - let __sym0 = __pop_Variant14(__symbols); + // Spanned = AssignLhs => ActionFn(59); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action54::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 20) } pub(crate) fn __reduce37< @@ -8796,12 +12747,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(9); - let __sym0 = __pop_Variant1(__symbols); + // Spanned = Atom => ActionFn(60); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action9::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + let __nt = super::__action60::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 21) } pub(crate) fn __reduce38< @@ -8813,12 +12764,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(19); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Expr => ActionFn(61); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + let __nt = super::__action61::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 22) } pub(crate) fn __reduce39< @@ -8830,13 +12781,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(20); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Stmt => ActionFn(62); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); - (1, 22) + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) } pub(crate) fn __reduce40< 'input, @@ -8847,13 +12798,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(6); - let __sym0 = __pop_Variant6(__symbols); + // Stmt = SpExpr => ActionFn(11); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 23) + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 24) } pub(crate) fn __reduce41< 'input, @@ -8864,13 +12815,16 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(4); - let __sym0 = __pop_Variant7(__symbols); + // Stmt = SpAssignLhs, "=", SpExpr => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action4::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 24) + let __end = __sym2.2.clone(); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 24) } pub(crate) fn __reduce42< 'input, @@ -8881,12 +12835,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __File = File => ActionFn(0); - let __sym0 = __pop_Variant8(__symbols); + // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action0::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 25) } pub(crate) fn __reduce43< @@ -8898,13 +12852,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(5); - let __sym0 = __pop_Variant11(__symbols); + // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action5::<>(input, __sym0); + let __nt = super::__action25::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 26) + (1, 25) } pub(crate) fn __reduce44< 'input, @@ -8915,12 +12869,29 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpExpr = SpExpr => ActionFn(3); - let __sym0 = __pop_Variant1(__symbols); + // __AssignLhs = AssignLhs => ActionFn(4); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action3::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + let __nt = super::__action4::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 26) + } + pub(crate) fn __reduce45< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Atom = Atom => ActionFn(8); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 27) } pub(crate) fn __reduce46< @@ -8931,14 +12902,99 @@ mod __parse__SpStmt { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) + { + // __Expr = Expr => ActionFn(6); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 28) + } + pub(crate) fn __reduce47< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 29) + } + pub(crate) fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAssignLhs = SpAssignLhs => ActionFn(3); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action3::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce49< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAtom = SpAtom => ActionFn(7); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpExpr = SpExpr => ActionFn(5); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce52< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) { // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action2::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 29) + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 34) } } pub use self::__parse__SpStmt::SpStmtParser; @@ -8966,78 +13022,92 @@ mod __parse__Stmt { Variant3(Spanned), Variant4(alloc::vec::Vec>), Variant5(usize), - Variant6(Atom), - Variant7(Expr), - Variant8(Vec), - Variant9(i64), - Variant10(String), - Variant11(Spanned), - Variant12(core::option::Option>), - Variant13(core::option::Option>), - Variant14(Stmt), + Variant6(AssignLhs), + Variant7(Atom), + Variant8(Expr), + Variant9(Vec), + Variant10(i64), + Variant11(String), + Variant12(Spanned), + Variant13(Spanned), + Variant14(core::option::Option>), + Variant15(core::option::Option>), + Variant16(Stmt), } const __ACTION: &[i8] = &[ // State 0 - 2, 0, 0, 0, 15, 16, 17, 18, + 2, 0, 0, 0, 0, 19, 20, 21, 22, // State 1 - 2, 0, 0, 0, 15, 16, 17, 18, + 2, 0, 0, 0, 0, 19, 20, 21, 22, // State 2 - 2, 22, 0, 0, 15, 16, 17, 18, + 2, 0, 0, 0, 0, 19, 20, 21, 22, // State 3 - 2, 25, 0, 0, 15, 16, 17, 18, + 2, 28, 0, 0, 0, 19, 20, 21, 22, // State 4 - -35, -35, -35, 0, 0, 0, 0, 0, + 2, 31, 0, 0, 0, 19, 20, 21, 22, // State 5 - -36, -36, -36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -37, 0, 0, 0, 0, // State 6 - -14, -14, -14, 0, 0, 0, 0, 0, + -38, -38, -38, 0, 0, 0, 0, 0, 0, // State 7 - -15, -15, -15, 0, 0, 0, 0, 0, + -39, -39, -39, 0, 0, 0, 0, 0, 0, // State 8 - -20, -20, -20, 0, 0, 0, 0, 0, + -15, -15, -15, 0, 0, 0, 0, 0, 0, // State 9 - 3, 0, 0, 0, 0, 0, 0, 0, + -16, 0, 0, 0, -13, 0, 0, 0, 0, // State 10 - -28, -28, -28, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, // State 11 - -29, -29, -29, 0, 0, 0, 0, 0, + -21, -21, -21, 0, 0, 0, 0, 0, 0, // State 12 - 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, // State 13 - -13, -13, -13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -29, 0, 0, 0, 0, // State 14 - -39, -39, -39, 0, 0, 0, 0, 0, + -30, -30, -30, 0, 0, 0, 0, 0, 0, // State 15 - -40, -40, -40, 0, 0, 0, 0, 0, + -31, -31, -31, 0, 0, 0, 0, 0, 0, // State 16 - -26, -26, -26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 17 - -27, -27, -27, 0, 0, 0, 0, 0, + -14, -14, -14, 0, 0, 0, 0, 0, 0, // State 18 - -36, 23, 0, 0, 0, 0, 0, 0, + -43, -43, -43, 0, 0, 0, 0, 0, 0, // State 19 - 3, 0, 0, 0, 0, 0, 0, 0, + -44, -44, -44, 0, 0, 0, 0, 0, 0, // State 20 - 3, 26, 27, 0, 0, 0, 0, 0, + -27, -27, -27, 0, 0, 0, 0, 0, 0, // State 21 - -17, -17, -17, 0, 0, 0, 0, 0, + -28, -28, -28, 0, -28, 0, 0, 0, 0, // State 22 - -21, -21, -21, 0, 0, 0, 0, 0, + -39, 29, 0, 0, 0, 0, 0, 0, 0, // State 23 - 3, 28, 29, 0, 0, 0, 0, 0, + -16, -16, -16, 0, 0, 0, 0, 0, 0, // State 24 - -19, -19, -19, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, // State 25 - -16, -16, -16, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, // State 26 - -4, -4, 0, 0, -4, -4, -4, -4, + 4, 32, 33, 0, 0, 0, 0, 0, 0, // State 27 - -18, -18, -18, 0, 0, 0, 0, 0, + -18, -18, -18, 0, 0, 0, 0, 0, 0, // State 28 - -5, -5, 0, 0, -5, -5, -5, -5, + -22, -22, -22, 0, 0, 0, 0, 0, 0, + // State 29 + 4, 34, 35, 0, 0, 0, 0, 0, 0, + // State 30 + -20, -20, -20, 0, 0, 0, 0, 0, 0, + // State 31 + -17, -17, -17, 0, 0, 0, 0, 0, 0, + // State 32 + -4, -4, 0, 0, 0, -4, -4, -4, -4, + // State 33 + -19, -19, -19, 0, 0, 0, 0, 0, 0, + // State 34 + -5, -5, 0, 0, 0, -5, -5, -5, -5, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 8 + integer] + __ACTION[(state as usize) * 9 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -9049,77 +13119,96 @@ mod __parse__Stmt { // State 3 0, // State 4 - -35, + 0, // State 5 - -36, + 0, // State 6 - -14, - // State 7 - -15, - // State 8 - -20, - // State 9 -38, - // State 10 - -28, - // State 11 - -29, - // State 12 - -47, - // State 13 - -13, - // State 14 + // State 7 -39, - // State 15 - -40, - // State 16 - -26, - // State 17 - -27, - // State 18 - 0, - // State 19 - 0, - // State 20 - 0, - // State 21 - -17, - // State 22 - -21, - // State 23 - 0, - // State 24 - -19, - // State 25 + // State 8 + -15, + // State 9 -16, + // State 10 + 0, + // State 11 + -21, + // State 12 + -41, + // State 13 + 0, + // State 14 + -30, + // State 15 + -31, + // State 16 + -53, + // State 17 + -14, + // State 18 + -43, + // State 19 + -44, + // State 20 + -27, + // State 21 + -28, + // State 22 + 0, + // State 23 + -16, + // State 24 + 0, + // State 25 + -42, // State 26 0, // State 27 -18, // State 28 + -22, + // State 29 + 0, + // State 30 + -20, + // State 31 + -17, + // State 32 + 0, + // State 33 + -19, + // State 34 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 2 => 3, - 8 => 4, - 9 => match state { - 1 => 18, - _ => 5, + 2 => 4, + 8 => 5, + 9 => 6, + 10 => match state { + 1 => 22, + _ => 7, }, - 11 => 6, - 12 => 7, - 13 => 8, - 14 => match state { - 1 => 19, - 2 => 20, - 3 => 23, + 12 => 8, + 13 => match state { + 1..=4 => 23, _ => 9, }, - 18 => 10, - 19 => 11, - 21 => 12, - 22 => 13, + 14 => 10, + 15 => 11, + 16 => match state { + 1 => 24, + 2 => 25, + 3 => 26, + 4 => 29, + _ => 12, + }, + 20 => 13, + 21 => 14, + 22 => 15, + 24 => 16, + 25 => 17, _ => 0, } } @@ -9129,6 +13218,7 @@ mod __parse__Stmt { r###"")""###, r###"",""###, r###"";""###, + r###""=""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -9185,7 +13275,7 @@ mod __parse__Stmt { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 8 - 1) + __action(state, 9 - 1) } #[inline] @@ -9252,10 +13342,11 @@ mod __parse__Stmt { Token(5, _) if true => Some(1), Token(6, _) if true => Some(2), Token(7, _) if true => Some(3), - Token(0, _) if true => Some(4), - Token(1, _) if true => Some(5), - Token(2, _) if true => Some(6), - Token(3, _) if true => Some(7), + Token(8, _) if true => Some(4), + Token(0, _) if true => Some(5), + Token(1, _) if true => Some(6), + Token(2, _) if true => Some(7), + Token(3, _) if true => Some(8), _ => None, } } @@ -9268,8 +13359,8 @@ mod __parse__Stmt { ) -> __Symbol<'input> { match __token_index { - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -9458,8 +13549,26 @@ mod __parse__Stmt { __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 46 => { + __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 47 => { + __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 48 => { + __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 49 => { + __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 50 => { + __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 51 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action2::<>(input, __sym0); @@ -9482,7 +13591,7 @@ mod __parse__Stmt { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Atom, usize) + ) -> (usize, AssignLhs, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), @@ -9493,21 +13602,43 @@ mod __parse__Stmt { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Expr, usize) + ) -> (usize, Atom, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant11< + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Spanned, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9533,36 +13664,36 @@ mod __parse__Stmt { _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Stmt, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant10< + fn __pop_Variant11< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant8< + fn __pop_Variant9< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9588,36 +13719,36 @@ mod __parse__Stmt { _ => __symbol_type_mismatch() } } - fn __pop_Variant12< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant13< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant9< + fn __pop_Variant10< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9652,13 +13783,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(27); + // ( ",") = SpExpr, "," => ActionFn(32); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action27::<>(input, __sym0, __sym1); + let __nt = super::__action32::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -9671,10 +13802,10 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(25); + // ( ",")* = => ActionFn(30); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action25::<>(input, &__start, &__end); + let __nt = super::__action30::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (0, 1) } @@ -9687,11 +13818,11 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(26); + // ( ",")* = ( ",")+ => ActionFn(31); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 1) } @@ -9704,13 +13835,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(41); + // ( ",")+ = SpExpr, "," => ActionFn(47); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action41::<>(input, __sym0, __sym1); + let __nt = super::__action47::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 2) } @@ -9723,14 +13854,14 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(42); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(48); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action42::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (3, 2) } @@ -9743,13 +13874,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(34); + // ( ";") = SpStmt, ";" => ActionFn(40); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action34::<>(input, __sym0, __sym1); + let __nt = super::__action40::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -9762,10 +13893,10 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = => ActionFn(32); + // ( ";")* = => ActionFn(38); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action32::<>(input, &__start, &__end); + let __nt = super::__action38::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (0, 4) } @@ -9778,11 +13909,11 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(33); + // ( ";")* = ( ";")+ => ActionFn(39); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 4) } @@ -9795,13 +13926,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(45); + // ( ";")+ = SpStmt, ";" => ActionFn(51); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action45::<>(input, __sym0, __sym1); + let __nt = super::__action51::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 5) } @@ -9814,14 +13945,14 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(46); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(52); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 5) } @@ -9834,10 +13965,10 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @L = => ActionFn(40); + // @L = => ActionFn(46); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action40::<>(input, &__start, &__end); + let __nt = super::__action46::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 6) } @@ -9850,10 +13981,10 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // @R = => ActionFn(39); + // @R = => ActionFn(45); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action39::<>(input, &__start, &__end); + let __nt = super::__action45::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 7) } @@ -9866,11 +13997,11 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(15); - let __sym0 = __pop_Variant10(__symbols); + // AssignLhs = Name => ActionFn(14); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action15::<>(input, __sym0); + let __nt = super::__action14::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 8) } @@ -9883,13 +14014,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Int => ActionFn(16); - let __sym0 = __pop_Variant9(__symbols); + // Atom = Str => ActionFn(20); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action16::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce14< 'input, @@ -9900,13 +14031,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(17); + // Atom = Int => ActionFn(21); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action17::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 9) } pub(crate) fn __reduce15< 'input, @@ -9917,17 +14048,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(55); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant1(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + // Atom = Name => ActionFn(22); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + (1, 9) } pub(crate) fn __reduce16< 'input, @@ -9938,16 +14065,17 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(56); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(63); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce17< 'input, @@ -9958,18 +14086,16 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(57); - assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant0(__symbols); - let __sym3 = __pop_Variant1(__symbols); - let __sym2 = __pop_Variant2(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(64); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (5, 9) + let __end = __sym2.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 10) } pub(crate) fn __reduce18< 'input, @@ -9980,17 +14106,18 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(58); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant0(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(65); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant1(__symbols); let __sym2 = __pop_Variant2(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2, __sym3); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (4, 9) + let __end = __sym4.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (5, 10) } pub(crate) fn __reduce19< 'input, @@ -10001,13 +14128,17 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(12); - let __sym0 = __pop_Variant11(__symbols); + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(66); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant2(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action12::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + let __end = __sym3.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (4, 10) } pub(crate) fn __reduce20< 'input, @@ -10018,16 +14149,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = "(", Expr, ")" => ActionFn(13); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant7(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Expr = SpAtom => ActionFn(17); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action13::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (3, 9) + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 10) } pub(crate) fn __reduce21< 'input, @@ -10038,13 +14166,16 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(59); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(18); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant8(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action59::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + (3, 10) } pub(crate) fn __reduce22< 'input, @@ -10055,12 +14186,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = => ActionFn(60); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action60::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (0, 10) + // File = SpStmt => ActionFn(67); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action67::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 11) } pub(crate) fn __reduce23< 'input, @@ -10071,15 +14203,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(61); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action61::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (2, 10) + // File = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action68::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce24< 'input, @@ -10090,13 +14219,15 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(62); + // File = ( ";")+, SpStmt => ActionFn(69); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action62::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 10) + let __end = __sym1.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 11) } pub(crate) fn __reduce25< 'input, @@ -10107,11 +14238,11 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Int = r#"[0-9]+"# => ActionFn(18); - let __sym0 = __pop_Variant0(__symbols); + // File = ( ";")+ => ActionFn(70); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action18::<>(input, __sym0); + let __nt = super::__action70::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 11) } @@ -10124,11 +14255,11 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(21); + // Int = r#"[0-9]+"# => ActionFn(23); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action21::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 12) } @@ -10141,11 +14272,11 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 13) } @@ -10158,12 +14289,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(10); - let __sym0 = __pop_Variant1(__symbols); + // SpAssignLhs = Spanned => ActionFn(13); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action10::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + let __nt = super::__action13::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 14) } pub(crate) fn __reduce29< @@ -10175,12 +14306,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(23); - let __sym0 = __pop_Variant1(__symbols); + // SpAtom = Spanned => ActionFn(19); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action23::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 15) } pub(crate) fn __reduce30< @@ -10192,12 +14323,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = => ActionFn(24); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action24::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (0, 15) + // SpExpr = Spanned => ActionFn(15); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 16) } pub(crate) fn __reduce31< 'input, @@ -10208,13 +14340,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(8); - let __sym0 = __pop_Variant3(__symbols); + // SpExpr? = SpExpr => ActionFn(28); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 16) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 17) } pub(crate) fn __reduce32< 'input, @@ -10225,13 +14357,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(30); - let __sym0 = __pop_Variant3(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 17) + // SpExpr? = => ActionFn(29); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action29::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 17) } pub(crate) fn __reduce33< 'input, @@ -10242,12 +14373,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = => ActionFn(31); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); - let __end = __start.clone(); - let __nt = super::__action31::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (0, 17) + // SpStmt = Spanned => ActionFn(10); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 18) } pub(crate) fn __reduce34< 'input, @@ -10258,13 +14390,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(52); - let __sym0 = __pop_Variant6(__symbols); + // SpStmt? = SpStmt => ActionFn(36); + let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action52::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 18) + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 19) } pub(crate) fn __reduce35< 'input, @@ -10275,13 +14407,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(53); - let __sym0 = __pop_Variant7(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action53::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 19) + // SpStmt? = => ActionFn(37); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action37::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 19) } pub(crate) fn __reduce36< 'input, @@ -10292,12 +14423,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(54); - let __sym0 = __pop_Variant14(__symbols); + // Spanned = AssignLhs => ActionFn(59); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action54::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 20) } pub(crate) fn __reduce37< @@ -10309,12 +14440,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(9); - let __sym0 = __pop_Variant1(__symbols); + // Spanned = Atom => ActionFn(60); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action9::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + let __nt = super::__action60::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 21) } pub(crate) fn __reduce38< @@ -10326,12 +14457,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(19); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Expr => ActionFn(61); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + let __nt = super::__action61::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 22) } pub(crate) fn __reduce39< @@ -10343,13 +14474,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(20); - let __sym0 = __pop_Variant0(__symbols); + // Spanned = Stmt => ActionFn(62); + let __sym0 = __pop_Variant16(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant10(__nt), __end)); - (1, 22) + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) } pub(crate) fn __reduce40< 'input, @@ -10360,13 +14491,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(6); - let __sym0 = __pop_Variant6(__symbols); + // Stmt = SpExpr => ActionFn(11); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 23) + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 24) } pub(crate) fn __reduce41< 'input, @@ -10377,13 +14508,16 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(4); - let __sym0 = __pop_Variant7(__symbols); + // Stmt = SpAssignLhs, "=", SpExpr => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action4::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 24) + let __end = __sym2.2.clone(); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 24) } pub(crate) fn __reduce42< 'input, @@ -10394,12 +14528,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __File = File => ActionFn(0); - let __sym0 = __pop_Variant8(__symbols); + // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action0::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 25) } pub(crate) fn __reduce43< @@ -10411,13 +14545,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(5); - let __sym0 = __pop_Variant11(__symbols); + // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action5::<>(input, __sym0); + let __nt = super::__action25::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 26) + (1, 25) } pub(crate) fn __reduce44< 'input, @@ -10428,15 +14562,117 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpExpr = SpExpr => ActionFn(3); - let __sym0 = __pop_Variant1(__symbols); + // __AssignLhs = AssignLhs => ActionFn(4); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 26) + } + pub(crate) fn __reduce45< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Atom = Atom => ActionFn(8); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + pub(crate) fn __reduce46< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Expr = Expr => ActionFn(6); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 28) + } + pub(crate) fn __reduce47< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 29) + } + pub(crate) fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAssignLhs = SpAssignLhs => ActionFn(3); + let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action3::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 27) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 30) } - pub(crate) fn __reduce45< + pub(crate) fn __reduce49< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpAtom = SpAtom => ActionFn(7); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpExpr = SpExpr => ActionFn(5); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce51< 'input, >( input: &'input str, @@ -10451,7 +14687,7 @@ mod __parse__Stmt { let __end = __sym0.2.clone(); let __nt = super::__action1::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 28) + (1, 33) } } pub use self::__parse__Stmt::StmtParser; @@ -10477,6 +14713,7 @@ mod __intern_token { ("^(\\))", false), ("^(,)", false), ("^(;)", false), + ("^(=)", false), (r"^(\s*)", true), ]; __lalrpop_util::lexer::MatcherBuilder::new(__strs.iter().copied()).unwrap() @@ -10520,6 +14757,28 @@ fn __action2< #[allow(unused_variables)] fn __action3< 'input, +>( + input: &'input str, + (_, __0, _): (usize, Spanned, usize), +) -> Spanned +{ + __0 +} + +#[allow(unused_variables)] +fn __action4< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, AssignLhs, usize), +) -> AssignLhs +{ + __0 +} + +#[allow(unused_variables)] +fn __action5< + 'input, >( input: &'input str, (_, __0, _): (usize, Spanned, usize), @@ -10529,7 +14788,7 @@ fn __action3< } #[allow(unused_variables)] -fn __action4< +fn __action6< 'input, >( input: &'input str, @@ -10540,7 +14799,7 @@ fn __action4< } #[allow(unused_variables)] -fn __action5< +fn __action7< 'input, >( input: &'input str, @@ -10551,7 +14810,7 @@ fn __action5< } #[allow(unused_variables)] -fn __action6< +fn __action8< 'input, >( input: &'input str, @@ -10562,7 +14821,7 @@ fn __action6< } #[allow(unused_variables)] -fn __action7< +fn __action9< 'input, >( input: &'input str, @@ -10579,7 +14838,7 @@ fn __action7< } #[allow(unused_variables)] -fn __action8< +fn __action10< 'input, >( input: &'input str, @@ -10590,7 +14849,7 @@ fn __action8< } #[allow(unused_variables)] -fn __action9< +fn __action11< 'input, >( input: &'input str, @@ -10601,7 +14860,42 @@ fn __action9< } #[allow(unused_variables)] -fn __action10< +fn __action12< + 'input, +>( + input: &'input str, + (_, lhs, _): (usize, Spanned, usize), + (_, _, _): (usize, &'input str, usize), + (_, expr, _): (usize, Spanned, usize), +) -> Stmt +{ + Stmt::Assign(lhs, expr) +} + +#[allow(unused_variables)] +fn __action13< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, Spanned, usize), +) -> Spanned +{ + __0 +} + +#[allow(unused_variables)] +fn __action14< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, String, usize), +) -> AssignLhs +{ + { AssignLhs::Name(__0) } +} + +#[allow(unused_variables)] +fn __action15< 'input, >( input: &'input str, @@ -10612,7 +14906,7 @@ fn __action10< } #[allow(unused_variables)] -fn __action11< +fn __action16< 'input, >( input: &'input str, @@ -10636,7 +14930,7 @@ fn __action11< } #[allow(unused_variables)] -fn __action12< +fn __action17< 'input, >( input: &'input str, @@ -10647,7 +14941,7 @@ fn __action12< } #[allow(unused_variables)] -fn __action13< +fn __action18< 'input, >( input: &'input str, @@ -10660,7 +14954,7 @@ fn __action13< } #[allow(unused_variables)] -fn __action14< +fn __action19< 'input, >( input: &'input str, @@ -10671,7 +14965,7 @@ fn __action14< } #[allow(unused_variables)] -fn __action15< +fn __action20< 'input, >( input: &'input str, @@ -10682,7 +14976,7 @@ fn __action15< } #[allow(unused_variables)] -fn __action16< +fn __action21< 'input, >( input: &'input str, @@ -10693,7 +14987,7 @@ fn __action16< } #[allow(unused_variables)] -fn __action17< +fn __action22< 'input, >( input: &'input str, @@ -10704,7 +14998,7 @@ fn __action17< } #[allow(unused_variables)] -fn __action18< +fn __action23< 'input, >( input: &'input str, @@ -10715,7 +15009,7 @@ fn __action18< } #[allow(unused_variables)] -fn __action19< +fn __action24< 'input, >( input: &'input str, @@ -10726,7 +15020,7 @@ fn __action19< } #[allow(unused_variables)] -fn __action20< +fn __action25< 'input, >( input: &'input str, @@ -10737,7 +15031,7 @@ fn __action20< } #[allow(unused_variables)] -fn __action21< +fn __action26< 'input, >( input: &'input str, @@ -10748,7 +15042,7 @@ fn __action21< } #[allow(unused_variables)] -fn __action22< +fn __action27< 'input, >( input: &'input str, @@ -10761,7 +15055,7 @@ fn __action22< } #[allow(unused_variables)] -fn __action23< +fn __action28< 'input, >( input: &'input str, @@ -10772,7 +15066,7 @@ fn __action23< } #[allow(unused_variables)] -fn __action24< +fn __action29< 'input, >( input: &'input str, @@ -10784,7 +15078,7 @@ fn __action24< } #[allow(unused_variables)] -fn __action25< +fn __action30< 'input, >( input: &'input str, @@ -10796,7 +15090,7 @@ fn __action25< } #[allow(unused_variables)] -fn __action26< +fn __action31< 'input, >( input: &'input str, @@ -10807,7 +15101,7 @@ fn __action26< } #[allow(unused_variables)] -fn __action27< +fn __action32< 'input, >( input: &'input str, @@ -10819,7 +15113,7 @@ fn __action27< } #[allow(unused_variables)] -fn __action28< +fn __action33< 'input, >( input: &'input str, @@ -10832,7 +15126,20 @@ fn __action28< } #[allow(unused_variables)] -fn __action29< +fn __action34< + 'input, +>( + input: &'input str, + (_, start, _): (usize, usize, usize), + (_, inner, _): (usize, AssignLhs, usize), + (_, end, _): (usize, usize, usize), +) -> Spanned +{ + Spanned::new(Span::new(start, end), inner) +} + +#[allow(unused_variables)] +fn __action35< 'input, >( input: &'input str, @@ -10845,7 +15152,7 @@ fn __action29< } #[allow(unused_variables)] -fn __action30< +fn __action36< 'input, >( input: &'input str, @@ -10856,7 +15163,7 @@ fn __action30< } #[allow(unused_variables)] -fn __action31< +fn __action37< 'input, >( input: &'input str, @@ -10868,7 +15175,7 @@ fn __action31< } #[allow(unused_variables)] -fn __action32< +fn __action38< 'input, >( input: &'input str, @@ -10880,7 +15187,7 @@ fn __action32< } #[allow(unused_variables)] -fn __action33< +fn __action39< 'input, >( input: &'input str, @@ -10891,7 +15198,7 @@ fn __action33< } #[allow(unused_variables)] -fn __action34< +fn __action40< 'input, >( input: &'input str, @@ -10903,7 +15210,7 @@ fn __action34< } #[allow(unused_variables)] -fn __action35< +fn __action41< 'input, >( input: &'input str, @@ -10914,7 +15221,7 @@ fn __action35< } #[allow(unused_variables)] -fn __action36< +fn __action42< 'input, >( input: &'input str, @@ -10926,7 +15233,7 @@ fn __action36< } #[allow(unused_variables)] -fn __action37< +fn __action43< 'input, >( input: &'input str, @@ -10937,7 +15244,7 @@ fn __action37< } #[allow(unused_variables)] -fn __action38< +fn __action44< 'input, >( input: &'input str, @@ -10949,7 +15256,7 @@ fn __action38< } #[allow(unused_variables)] -fn __action39< +fn __action45< 'input, >( input: &'input str, @@ -10961,7 +15268,7 @@ fn __action39< } #[allow(unused_variables)] -fn __action40< +fn __action46< 'input, >( input: &'input str, @@ -10973,7 +15280,7 @@ fn __action40< } #[allow(unused_variables)] -fn __action41< +fn __action47< 'input, >( input: &'input str, @@ -10983,20 +15290,20 @@ fn __action41< { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action27( + let __temp0 = __action32( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action37( + __action43( input, __temp0, ) } #[allow(unused_variables)] -fn __action42< +fn __action48< 'input, >( input: &'input str, @@ -11007,13 +15314,13 @@ fn __action42< { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action27( + let __temp0 = __action32( input, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action38( + __action44( input, __0, __temp0, @@ -11021,7 +15328,7 @@ fn __action42< } #[allow(unused_variables)] -fn __action43< +fn __action49< 'input, >( input: &'input str, @@ -11033,13 +15340,13 @@ fn __action43< { let __start0 = __1.2.clone(); let __end0 = __2.0.clone(); - let __temp0 = __action25( + let __temp0 = __action30( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action11( + __action16( input, __0, __1, @@ -11050,7 +15357,7 @@ fn __action43< } #[allow(unused_variables)] -fn __action44< +fn __action50< 'input, >( input: &'input str, @@ -11063,12 +15370,12 @@ fn __action44< { let __start0 = __2.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action26( + let __temp0 = __action31( input, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action11( + __action16( input, __0, __1, @@ -11079,7 +15386,7 @@ fn __action44< } #[allow(unused_variables)] -fn __action45< +fn __action51< 'input, >( input: &'input str, @@ -11089,20 +15396,20 @@ fn __action45< { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action34( + let __temp0 = __action40( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action35( + __action41( input, __temp0, ) } #[allow(unused_variables)] -fn __action46< +fn __action52< 'input, >( input: &'input str, @@ -11113,157 +15420,13 @@ fn __action46< { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action34( + let __temp0 = __action40( input, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action36( - input, - __0, - __temp0, - ) -} - -#[allow(unused_variables)] -fn __action47< - 'input, ->( - input: &'input str, - __0: (usize, core::option::Option>, usize), -) -> Vec -{ - let __start0 = __0.0.clone(); - let __end0 = __0.0.clone(); - let __temp0 = __action32( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action7( - input, - __temp0, - __0, - ) -} - -#[allow(unused_variables)] -fn __action48< - 'input, ->( - input: &'input str, - __0: (usize, alloc::vec::Vec>, usize), - __1: (usize, core::option::Option>, usize), -) -> Vec -{ - let __start0 = __0.0.clone(); - let __end0 = __0.2.clone(); - let __temp0 = __action33( - input, - __0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action7( - input, - __temp0, - __1, - ) -} - -#[allow(unused_variables)] -fn __action49< - 'input, ->( - input: &'input str, - __0: (usize, Atom, usize), - __1: (usize, usize, usize), -) -> Spanned -{ - let __start0 = __0.0.clone(); - let __end0 = __0.0.clone(); - let __temp0 = __action40( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action22( - input, - __temp0, - __0, - __1, - ) -} - -#[allow(unused_variables)] -fn __action50< - 'input, ->( - input: &'input str, - __0: (usize, Expr, usize), - __1: (usize, usize, usize), -) -> Spanned -{ - let __start0 = __0.0.clone(); - let __end0 = __0.0.clone(); - let __temp0 = __action40( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action28( - input, - __temp0, - __0, - __1, - ) -} - -#[allow(unused_variables)] -fn __action51< - 'input, ->( - input: &'input str, - __0: (usize, Stmt, usize), - __1: (usize, usize, usize), -) -> Spanned -{ - let __start0 = __0.0.clone(); - let __end0 = __0.0.clone(); - let __temp0 = __action40( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action29( - input, - __temp0, - __0, - __1, - ) -} - -#[allow(unused_variables)] -fn __action52< - 'input, ->( - input: &'input str, - __0: (usize, Atom, usize), -) -> Spanned -{ - let __start0 = __0.2.clone(); - let __end0 = __0.2.clone(); - let __temp0 = __action39( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action49( + __action42( input, __0, __temp0, @@ -11275,21 +15438,21 @@ fn __action53< 'input, >( input: &'input str, - __0: (usize, Expr, usize), -) -> Spanned + __0: (usize, core::option::Option>, usize), +) -> Vec { - let __start0 = __0.2.clone(); - let __end0 = __0.2.clone(); - let __temp0 = __action39( + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action38( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action50( + __action9( input, - __0, __temp0, + __0, ) } @@ -11298,18 +15461,141 @@ fn __action54< 'input, >( input: &'input str, - __0: (usize, Stmt, usize), -) -> Spanned + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, core::option::Option>, usize), +) -> Vec { - let __start0 = __0.2.clone(); + let __start0 = __0.0.clone(); let __end0 = __0.2.clone(); let __temp0 = __action39( + input, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action9( + input, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +fn __action55< + 'input, +>( + input: &'input str, + __0: (usize, AssignLhs, usize), + __1: (usize, usize, usize), +) -> Spanned +{ + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action46( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action51( + __action34( + input, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +fn __action56< + 'input, +>( + input: &'input str, + __0: (usize, Atom, usize), + __1: (usize, usize, usize), +) -> Spanned +{ + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action46( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action27( + input, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +fn __action57< + 'input, +>( + input: &'input str, + __0: (usize, Expr, usize), + __1: (usize, usize, usize), +) -> Spanned +{ + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action46( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action33( + input, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +fn __action58< + 'input, +>( + input: &'input str, + __0: (usize, Stmt, usize), + __1: (usize, usize, usize), +) -> Spanned +{ + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action46( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action35( + input, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +fn __action59< + 'input, +>( + input: &'input str, + __0: (usize, AssignLhs, usize), +) -> Spanned +{ + let __start0 = __0.2.clone(); + let __end0 = __0.2.clone(); + let __temp0 = __action45( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action55( input, __0, __temp0, @@ -11317,7 +15603,76 @@ fn __action54< } #[allow(unused_variables)] -fn __action55< +fn __action60< + 'input, +>( + input: &'input str, + __0: (usize, Atom, usize), +) -> Spanned +{ + let __start0 = __0.2.clone(); + let __end0 = __0.2.clone(); + let __temp0 = __action45( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action56( + input, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +fn __action61< + 'input, +>( + input: &'input str, + __0: (usize, Expr, usize), +) -> Spanned +{ + let __start0 = __0.2.clone(); + let __end0 = __0.2.clone(); + let __temp0 = __action45( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action57( + input, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +fn __action62< + 'input, +>( + input: &'input str, + __0: (usize, Stmt, usize), +) -> Spanned +{ + let __start0 = __0.2.clone(); + let __end0 = __0.2.clone(); + let __temp0 = __action45( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action58( + input, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +fn __action63< 'input, >( input: &'input str, @@ -11329,12 +15684,12 @@ fn __action55< { let __start0 = __2.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action23( + let __temp0 = __action28( input, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action43( + __action49( input, __0, __1, @@ -11344,7 +15699,7 @@ fn __action55< } #[allow(unused_variables)] -fn __action56< +fn __action64< 'input, >( input: &'input str, @@ -11355,13 +15710,13 @@ fn __action56< { let __start0 = __1.2.clone(); let __end0 = __2.0.clone(); - let __temp0 = __action24( + let __temp0 = __action29( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action43( + __action49( input, __0, __1, @@ -11371,7 +15726,7 @@ fn __action56< } #[allow(unused_variables)] -fn __action57< +fn __action65< 'input, >( input: &'input str, @@ -11384,12 +15739,12 @@ fn __action57< { let __start0 = __3.0.clone(); let __end0 = __3.2.clone(); - let __temp0 = __action23( + let __temp0 = __action28( input, __3, ); let __temp0 = (__start0, __temp0, __end0); - __action44( + __action50( input, __0, __1, @@ -11400,7 +15755,7 @@ fn __action57< } #[allow(unused_variables)] -fn __action58< +fn __action66< 'input, >( input: &'input str, @@ -11412,13 +15767,13 @@ fn __action58< { let __start0 = __2.2.clone(); let __end0 = __3.0.clone(); - let __temp0 = __action24( + let __temp0 = __action29( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action44( + __action50( input, __0, __1, @@ -11429,7 +15784,7 @@ fn __action58< } #[allow(unused_variables)] -fn __action59< +fn __action67< 'input, >( input: &'input str, @@ -11438,19 +15793,19 @@ fn __action59< { let __start0 = __0.0.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action30( + let __temp0 = __action36( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action47( + __action53( input, __temp0, ) } #[allow(unused_variables)] -fn __action60< +fn __action68< 'input, >( input: &'input str, @@ -11460,20 +15815,20 @@ fn __action60< { let __start0 = __lookbehind.clone(); let __end0 = __lookahead.clone(); - let __temp0 = __action31( + let __temp0 = __action37( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action47( + __action53( input, __temp0, ) } #[allow(unused_variables)] -fn __action61< +fn __action69< 'input, >( input: &'input str, @@ -11483,12 +15838,12 @@ fn __action61< { let __start0 = __1.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action30( + let __temp0 = __action36( input, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action48( + __action54( input, __0, __temp0, @@ -11496,7 +15851,7 @@ fn __action61< } #[allow(unused_variables)] -fn __action62< +fn __action70< 'input, >( input: &'input str, @@ -11505,13 +15860,13 @@ fn __action62< { let __start0 = __0.2.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action31( + let __temp0 = __action37( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action48( + __action54( input, __0, __temp0, diff --git a/src/vm/mod.rs b/src/vm/mod.rs index d5d36f6..13484f2 100644 --- a/src/vm/mod.rs +++ b/src/vm/mod.rs @@ -91,6 +91,18 @@ impl Vm { None } + pub fn store(&mut self, name: Name, value: Option) { + for frame in self.frames_mut() { + match frame { + Frame::User(frame) => { + frame.locals_mut().insert(name, value); + return; + } + Frame::Builtin(_frame) => continue, + } + } + } + pub fn make_frame(&self, fun: ObjPtr, args: Vec) -> Option { let fun_any = fun.as_any(); if fun_any.is::() { @@ -134,7 +146,11 @@ impl Vm { todo!("Throw exception: Could not load name {name:?} (is it set?)"); } } - Inst::Store(_name) => todo!(), + Inst::Store(name) => { + let name = *name; + let value = self.pop_stack().expect("Stack underflow"); + self.store(name, Some(value)); + } Inst::GetAttr(_attr) => todo!(), Inst::Pop => { self