From 7bac4306c3033d2ed09e0934dee2367ae98f45c3 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Fri, 7 Apr 2023 00:00:04 -0700 Subject: [PATCH] Add base branch logic Signed-off-by: Alek Ratzloff --- examples/hello.np | 24 + src/compile/compiler.rs | 126 +- src/compile/thunk.rs | 62 +- src/main.rs | 16 +- src/obj/boolean.rs | 66 + src/obj/builtin_fun.rs | 4 + src/obj/builtins.rs | 8 + src/obj/int.rs | 10 + src/obj/mod.rs | 9 +- src/obj/none.rs | 11 + src/obj/str.rs | 10 + src/obj/user_fun.rs | 4 + src/syn/ast.rs | 15 +- src/syn/parser.lalrpop | 66 +- src/syn/parser.rs | 25252 ++++++++++++++++++++++++++++++-------- src/vm/inst.rs | 40 + src/vm/mod.rs | 70 +- 17 files changed, 20302 insertions(+), 5491 deletions(-) create mode 100644 src/obj/boolean.rs diff --git a/examples/hello.np b/examples/hello.np index f5e8f5e..8dff0b7 100644 --- a/examples/hello.np +++ b/examples/hello.np @@ -2,3 +2,27 @@ println(123); println(None); message = "hell world"; println(message); + +if 1 { + println("OK"); +} else if 0 { + println("1 - fail?"); +} else { + println("2 - fail?"); +}; + +if 0 { + println("3 - fail?"); +} else if 1 { + println("OK"); +} else { + println("4 - fail?"); +}; + +if 0 { + println("5 - fail?"); +} else if 0 { + println("6 - fail?"); +} else { + println("OK"); +}; \ No newline at end of file diff --git a/src/compile/compiler.rs b/src/compile/compiler.rs index e7a23c5..987bfc6 100644 --- a/src/compile/compiler.rs +++ b/src/compile/compiler.rs @@ -1,8 +1,10 @@ +use std::collections::VecDeque; + use crate::compile::{scope::GlobalScope, thunk::Thunk}; use crate::obj::prelude::*; use crate::obj::ObjPtr; use crate::syn::ast::*; -use crate::vm::inst::Inst; +use crate::vm::inst::*; pub struct Compiler { scope: GlobalScope, @@ -28,20 +30,28 @@ impl Compiler { /// Compile the given list of AST statements, returning the body. pub fn compile_stmts(&mut self, stmts: &Vec) -> Vec { self.gather_names(stmts); - let mut thunks = Vec::new(); + let mut thunks = VecDeque::new(); for stmt in stmts { - thunks.push(self.emit_stmt(stmt)); + thunks.push_back(self.emit_stmt(stmt)); } Thunk::List(thunks).flatten() } + fn emit_body(&mut self, body: &SpBody) -> Thunk { + let mut thunks = VecDeque::new(); + for stmt in body.inner() { + thunks.push_back(self.emit_stmt(stmt)); + } + Thunk::List(thunks) + } + fn emit_stmt(&mut self, stmt: &SpStmt) -> Thunk { match stmt.inner() { 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.push_back(Inst::Store(name)); thunk } AssignLhs::Complex(_, _) => { @@ -50,10 +60,80 @@ impl Compiler { }, Stmt::Expr(expr) => { let mut thunk = self.emit_expr(expr); - thunk.push(Inst::Pop); + thunk.push_back(Inst::Pop); thunk } - Stmt::If { .. } => todo!(), + Stmt::If { + if_true, + elseif, + else_body, + } => { + // compile the "else" thunk first - it doesn't need to jump + let mut else_thunk = if let Some(else_body) = else_body { + self.emit_body(else_body) + } else { + Thunk::empty() + }; + else_thunk.push_front(Inst::Comment("else body".to_string())); + + // compile the "else if" thunks next. These need to jump forward N + // instructions at the very end + let mut jump_forward: isize = (else_thunk.len() + 1).try_into().unwrap(); + let mut thunks = VecDeque::with_capacity( + 1 + // else thunk + elseif.len() + // elseif thunks + 1, // if thunk + ); + thunks.push_front(else_thunk); + + for cond_block in elseif.iter().rev() { + // do block, then condition + let mut body_thunk = self.emit_body(&cond_block.inner().body); + // jump forward by the previous jump forward distance + body_thunk.push_front(Inst::Comment("elseif body".to_string())); + body_thunk.push_back(Inst::JumpRelative(jump_forward, JumpCondition::Always)); + + let mut cond_thunk = self.emit_expr(&cond_block.inner().cond); + cond_thunk.push_front(Inst::Comment("elseif compare ".to_string())); + cond_thunk.push_back(Inst::Compare); + // jump forward by the length of the body + cond_thunk.push_back(Inst::JumpRelative( + isize::try_from(body_thunk.len()).unwrap() + 1, + JumpCondition::False, + )); + + jump_forward += + isize::try_from(body_thunk.len() + cond_thunk.len()).unwrap() + 1; + + thunks.push_front(body_thunk); + thunks.push_front(cond_thunk); + } + + // same as above: do block, then condition + let mut body_thunk = self.emit_body(&if_true.inner().body); + body_thunk.push_front(Inst::Comment("if body".to_string())); + body_thunk.push_back(Inst::JumpRelative(jump_forward, JumpCondition::Always)); + + let mut cond_thunk = self.emit_expr(&if_true.inner().cond); + cond_thunk.push_front(Inst::Comment("if compare".to_string())); + cond_thunk.push_back(Inst::Compare); + cond_thunk.push_back(Inst::JumpRelative( + // + 1 because otherwise we won't end up on the next instruction + isize::try_from(body_thunk.len()).unwrap() + 1, + JumpCondition::False, + )); + + // don't need to add this + //jump_forward += isize::try_from(body_thunk.len() + cond_thunk.len()).unwrap(); + + thunks.push_front(body_thunk); + thunks.push_front(cond_thunk); + thunks.push_back(Thunk::Block( + vec![Inst::Comment("end of if block".to_string())].into(), + )); + + Thunk::List(thunks) + } Stmt::Def { .. } => todo!(), Stmt::Import { .. } => todo!(), } @@ -62,16 +142,16 @@ impl Compiler { fn emit_expr(&mut self, expr: &SpExpr) -> Thunk { match expr.inner() { Expr::Call(expr, args) => { - let mut thunk = Vec::with_capacity(args.len() + 1); - thunk.push(self.emit_expr(expr)); + let mut thunk = VecDeque::with_capacity(args.len() + 1); + thunk.push_back(self.emit_expr(expr)); thunk.extend(args.iter().map(|arg| self.emit_expr(arg))); let mut thunk = Thunk::List(thunk); - thunk.push(Inst::Call(args.len())); + thunk.push_back(Inst::Call(args.len())); thunk } Expr::Get(expr, name) => { let mut thunk = self.emit_expr(expr); - thunk.push(Inst::GetAttr(name.clone())); + thunk.push_back(Inst::GetAttr(name.clone())); thunk } Expr::Atom(atom) => self.emit_atom(atom), @@ -80,19 +160,19 @@ impl Compiler { fn emit_atom(&mut self, atom: &SpAtom) -> Thunk { match atom.inner() { - Atom::Int(i) => Thunk::Block(vec![Inst::Push(ObjPtr::new(Int::new(*i)))]), + Atom::Int(i) => Thunk::Block(vec![Inst::Push(ObjPtr::new(Int::new(*i)))].into()), Atom::Float(_) => todo!(), // Thunk::Block(vec![Inst::Push(Gc::new(Float::new(*f)))]), - Atom::Str(s) => Thunk::Block(vec![Inst::Push(ObjPtr::new(Str::new(s.clone())))]), + Atom::Str(s) => Thunk::Block(vec![Inst::Push(ObjPtr::new(Str::new(s.clone())))].into()), Atom::Sym(_) => todo!(), Atom::Name(n) => { // Look up the symbol first. It may already exist. // If it doesn't exist, create it. It may be created - // dynamically. + // Dynamically. let name = self .scope() .lookup_scoped(n) .unwrap_or_else(|| self.scope_mut().insert_local(n)); - Thunk::Block(vec![Inst::Load(name)]) + Thunk::Block(vec![Inst::Load(name)].into()) } } } @@ -114,8 +194,22 @@ impl Compiler { // Get the names of the variables used in this expr self.gather_expr_names(expr.inner()); } - Stmt::If { .. } => { - todo!() + Stmt::If { + if_true, + elseif, + else_body, + } => { + self.gather_expr_names(if_true.inner().cond.inner()); + self.gather_names(if_true.inner().body.inner()); + + for cond_body in elseif { + self.gather_expr_names(cond_body.inner().cond.inner()); + self.gather_names(cond_body.inner().body.inner()); + } + + if let Some(else_body) = else_body { + self.gather_names(else_body.inner()); + } } Stmt::Import { .. } => { todo!() diff --git a/src/compile/thunk.rs b/src/compile/thunk.rs index ede8107..cdd3d12 100644 --- a/src/compile/thunk.rs +++ b/src/compile/thunk.rs @@ -1,52 +1,62 @@ +use std::collections::VecDeque; + use crate::vm::inst::Inst; pub enum Thunk { - Block(Vec), - List(Vec), - /* - IfElse { - cond: Box, - if_true: Box, - if_false: Box, - }, - */ + Block(VecDeque), + List(VecDeque), } impl Thunk { + pub fn empty() -> Self { + Thunk::Block(Default::default()) + } + pub fn flatten(self) -> Vec { use Thunk::*; match self { - Block(block) => block, + Block(block) => block.into(), List(list) => list.into_iter().flat_map(|thunk| thunk.flatten()).collect(), - /* - IfElse { .. } => { - todo!("flatten if/else") - } - */ } } - pub fn push(&mut self, inst: Inst) { + pub fn push_back(&mut self, inst: Inst) { use Thunk::*; match self { Block(block) => { - block.push(inst); + block.push_back(inst); } List(list) => { - if let Some(Block(last)) = list.last_mut() { + if let Some(Block(last)) = list.back_mut() { // if this is a block, then push the inst to the end of the // block instead of creating a new element - last.push(inst); + last.push_back(inst); } else { // otherwise, push a new list block - list.push(Block(vec![inst])); + list.push_back(Block(vec![inst].into())); } - } /* - IfElse { .. } => { - // replace this with a List type, with *self as the first element - todo!() - } - */ + } + } + } + + pub fn push_front(&mut self, inst: Inst) { + use Thunk::*; + match self { + Block(block) => block.push_front(inst), + List(list) => { + if let Some(Block(first)) = list.front_mut() { + first.push_front(inst); + } else { + list.push_front(Block(vec![inst].into())); + } + } + } + } + + pub fn len(&self) -> usize { + match self { + Thunk::Block(block) => block.len(), + Thunk::List(list) => list.iter().map(Thunk::len).sum(), } } } diff --git a/src/main.rs b/src/main.rs index d53dd62..c44c6ae 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,6 +20,19 @@ struct Opt { type Result> = std::result::Result; +fn disassemble(insts: &Vec) { + // I could do some annoying casting shit, or I could just do string length + let max_digits = insts.len().to_string().len(); + for (addr, inst) in insts.iter().enumerate() { + println!( + "{:0width$} {}", + addr, + inst.disassemble_string(), + width = max_digits + ); + } +} + fn main() -> Result { let opt = Opt::from_args(); @@ -59,7 +72,8 @@ fn main() -> Result { exec_body.push(Inst::Push(ObjPtr::new(Int::new(0)))); exec_body.push(Inst::Return); - //println!("{:#?}", exec_body); + //disassemble(&exec_body); + //return Ok(()); let locals: Vec<_> = scope.keys().copied().collect(); let main_fun: ObjPtr<_> = UserFun::new(None, vec![], locals, exec_body).into(); diff --git a/src/obj/boolean.rs b/src/obj/boolean.rs new file mode 100644 index 0000000..742479f --- /dev/null +++ b/src/obj/boolean.rs @@ -0,0 +1,66 @@ +use crate::obj::prelude::*; +use std::{any::Any, sync::LazyLock}; + +pub type BooleanValue = bool; + +pub static BOOL_TRUE_INST: LazyLock = LazyLock::new(|| ObjPtr::new(Boolean::new(true))); +pub static BOOL_FALSE_INST: LazyLock = LazyLock::new(|| ObjPtr::new(Boolean::new(false))); +pub static BOOL_INSTS: &[&LazyLock] = &[&BOOL_FALSE_INST, &BOOL_TRUE_INST]; + +static BOOL_ATTRS: LazyLock = LazyLock::new(|| { + attrs_ptr! { + // + "__str__" => builtin_fun_ptr!("__str__", |_vm, args, _state| { + if args.len() != 1 { + todo!("Throw exception: arity error"); + } + let arg_any = &args[0].as_any(); + let obj = arg_any.downcast_ref::().expect("Boolean.__str__ did not receive Boolean?"); + + BuiltinFunResult::Return(Some(ObjPtr::new(Str::new(obj.value().to_string())))) + }), + "__bool__" => builtin_fun_ptr!("__bool__", |_vm, args, _state| { + let arg_any = &args[0].as_any(); + let obj = arg_any.downcast_ref::().expect("Boolean.__str__ did not receive Boolean?"); + + BuiltinFunResult::Return(Some(ObjPtr::new(Boolean::new(obj.is_truthy())))) + }), + } +}); + +#[derive(Debug, Clone)] +pub struct Boolean { + attrs: AttrsPtr, + value: BooleanValue, +} + +impl Boolean { + fn new(value: BooleanValue) -> Self { + let attrs = AttrsPtr::clone(&BOOL_ATTRS); + Boolean { attrs, value } + } + + pub fn value(&self) -> BooleanValue { + self.value + } +} + +impl Obj for Boolean { + fn attrs(&self) -> AttrsPtr { + AttrsPtr::clone(&self.attrs) + } + + fn as_any(&self) -> &(dyn Any + 'static) { + self + } + + fn is_truthy(&self) -> bool { + self.value() + } +} + +impl ToString for Boolean { + fn to_string(&self) -> String { + format!("{}", self.value()) + } +} diff --git a/src/obj/builtin_fun.rs b/src/obj/builtin_fun.rs index f755fbd..85fa1bf 100644 --- a/src/obj/builtin_fun.rs +++ b/src/obj/builtin_fun.rs @@ -134,4 +134,8 @@ impl Obj for BuiltinFun { fn as_any(&self) -> &(dyn std::any::Any + 'static) { self } + + fn is_truthy(&self) -> bool { + true + } } diff --git a/src/obj/builtins.rs b/src/obj/builtins.rs index 787b711..e735267 100644 --- a/src/obj/builtins.rs +++ b/src/obj/builtins.rs @@ -1,12 +1,20 @@ //! Builtin functions and objects. use crate::obj::prelude::*; +//////////////////////////////////////////////////////////////////////////////// +// Builtin functions +//////////////////////////////////////////////////////////////////////////////// + pub const BUILTIN_FUNS: &[(&str, BuiltinFunPtr)] = &[ // ("println", println), ("print", print), ]; +//////////////////////////////////////////////////////////////////////////////// +// Shared functionality between builtins +//////////////////////////////////////////////////////////////////////////////// + fn println(vm: BuiltinFunVm, args: Vec, state: BuiltinFunState) -> BuiltinFunResult { do_print(vm, args, state, "\n") } diff --git a/src/obj/int.rs b/src/obj/int.rs index 3f372a8..25f5d13 100644 --- a/src/obj/int.rs +++ b/src/obj/int.rs @@ -15,6 +15,12 @@ static INT_ATTRS: LazyLock = LazyLock::new(|| { BuiltinFunResult::Return(Some(ObjPtr::new(Str::new(obj.value().to_string())))) }), + "__bool__" => builtin_fun_ptr!("__bool__", |_vm, args, _state| { + let arg_any = &args[0].as_any(); + let obj = arg_any.downcast_ref::().expect("Int.__bool__ did not receive Int?"); + let result = ObjPtr::clone(&BOOL_INSTS[obj.is_truthy() as usize]); + BuiltinFunResult::Return(Some(result)) + }), } }); @@ -44,6 +50,10 @@ impl Obj for Int { fn as_any(&self) -> &(dyn Any + 'static) { self } + + fn is_truthy(&self) -> bool { + self.value() != 0 + } } impl ToString for Int { diff --git a/src/obj/mod.rs b/src/obj/mod.rs index 404a352..97106d0 100644 --- a/src/obj/mod.rs +++ b/src/obj/mod.rs @@ -1,3 +1,4 @@ +pub mod boolean; pub mod builtin_fun; pub mod builtins; pub mod int; @@ -7,7 +8,7 @@ pub mod user_fun; pub mod prelude { // Module types - pub use super::{builtin_fun::*, int::*, none::*, str::*, user_fun::*}; + pub use super::{boolean::*, builtin_fun::*, int::*, none::*, str::*, user_fun::*}; // Local types pub use super::{Attrs, AttrsPtr, Obj, ObjPtr}; // Macros @@ -70,4 +71,10 @@ pub trait Obj: Debug + Sync + Send { let mut attrs = attrs_ptr.write().unwrap(); attrs.insert(key, value) } + + fn is_truthy(&self) -> bool; + + fn is_falsey(&self) -> bool { + !self.is_truthy() + } } diff --git a/src/obj/none.rs b/src/obj/none.rs index 61a8ebe..2683393 100644 --- a/src/obj/none.rs +++ b/src/obj/none.rs @@ -13,6 +13,13 @@ static NONE_ATTRS: LazyLock = LazyLock::new(|| { } BuiltinFunResult::Return(Some(ObjPtr::clone(&NONE_STR))) }), + + "__bool__" => builtin_fun_ptr!("__bool__", |_vm, args, _state| { + let arg_any = &args[0].as_any(); + let obj = arg_any.downcast_ref::().expect("None.__bool__ did not receive Int?"); + let result = ObjPtr::clone(&BOOL_INSTS[obj.is_truthy() as usize]); + BuiltinFunResult::Return(Some(result)) + }), } }); @@ -36,4 +43,8 @@ impl Obj for None { fn as_any(&self) -> &(dyn Any + 'static) { self } + + fn is_truthy(&self) -> bool { + false + } } diff --git a/src/obj/str.rs b/src/obj/str.rs index fdfe13c..d9a8df1 100644 --- a/src/obj/str.rs +++ b/src/obj/str.rs @@ -12,6 +12,12 @@ static STR_ATTRS: LazyLock = LazyLock::new(|| { } BuiltinFunResult::Return(Some(args.pop().unwrap())) }), + "__bool__" => builtin_fun_ptr!("__bool__", |_vm, args, _state| { + let arg_any = &args[0].as_any(); + let obj = arg_any.downcast_ref::().expect("Str.__bool__ did not receive Int?"); + let result = ObjPtr::clone(&BOOL_INSTS[obj.is_truthy() as usize]); + BuiltinFunResult::Return(Some(result)) + }), } }); @@ -44,6 +50,10 @@ impl Obj for Str { fn as_any(&self) -> &(dyn Any + 'static) { self } + + fn is_truthy(&self) -> bool { + self.value().len() > 0 + } } impl ToString for Str { diff --git a/src/obj/user_fun.rs b/src/obj/user_fun.rs index 6a470ff..47fb383 100644 --- a/src/obj/user_fun.rs +++ b/src/obj/user_fun.rs @@ -47,4 +47,8 @@ impl Obj for UserFun { fn as_any(&self) -> &(dyn std::any::Any + 'static) { self } + + fn is_truthy(&self) -> bool { + true + } } diff --git a/src/syn/ast.rs b/src/syn/ast.rs index 0276225..2688ddf 100644 --- a/src/syn/ast.rs +++ b/src/syn/ast.rs @@ -1,13 +1,16 @@ use crate::syn::Spanned; +pub type SpBody = Spanned; +pub type Body = Vec; + #[derive(Debug, Clone)] pub enum Stmt { Assign(SpAssignLhs, SpExpr), Expr(SpExpr), If { - if_true: SpCondExpr, - elseif: Vec, - else_expr: Option, + if_true: SpCondBody, + elseif: Vec, + else_body: Option, }, Def { name: String, @@ -38,12 +41,12 @@ pub enum AssignLhs { pub type SpStmt = Spanned; #[derive(Debug, Clone)] -pub struct CondExpr { +pub struct CondBody { pub cond: SpExpr, - pub expr: SpExpr, + pub body: SpBody, } -pub type SpCondExpr = Spanned; +pub type SpCondBody = Spanned; #[derive(Debug, Clone)] pub struct Param { diff --git a/src/syn/parser.lalrpop b/src/syn/parser.lalrpop index 2ae1038..1d41834 100644 --- a/src/syn/parser.lalrpop +++ b/src/syn/parser.lalrpop @@ -9,7 +9,21 @@ Spanned: Spanned = { => Spanned::new(Span::new(start, end), inner), }; -pub File: Vec = { +//////////////////////////////////////////////////////////////////////////////// +// File, block, body +//////////////////////////////////////////////////////////////////////////////// + +pub File: Body = { + => <>, +} + +pub SpBlock = Spanned; + +pub Block: Body = { + "{" "}" => <>, +} + +pub Body: Body = { ";")*> => { if let Some(tail) = tail { head.push(tail); @@ -18,11 +32,16 @@ pub File: Vec = { }, } +//////////////////////////////////////////////////////////////////////////////// +// Statements, assignment +//////////////////////////////////////////////////////////////////////////////// + pub SpStmt = Spanned; pub Stmt: Stmt = { => Stmt::Expr(<>), "=" => Stmt::Assign(lhs, expr), + => <>, } pub SpAssignLhs = Spanned; @@ -31,6 +50,46 @@ pub AssignLhs: AssignLhs = { => { AssignLhs::Name(<>) } } +//////////////////////////////////////////////////////////////////////////////// +// Branch, condition blocks +//////////////////////////////////////////////////////////////////////////////// + +pub IfStmt: Stmt = { + + "if" + + + "else" "if" <@R>)*> + + + )?> + => { + // Make if statement cond body + let if_true = CondBody { + cond: if_condition, + body: if_block, + }; + // Make elif statement cond body + let mut elseif = Vec::with_capacity(elif_block.len()); + for (start, expr, block, end) in elif_block { + let elseif_cond_body = CondBody { + cond: expr, + body: block + }; + elseif.push(Spanned::new(Span::new(start, end), elseif_cond_body)); + } + Stmt::If { + if_true: Spanned::new(Span::new(if_start, if_end), if_true), + elseif, + else_body: else_block, + } + } +} + +//////////////////////////////////////////////////////////////////////////////// +// Expressions +//////////////////////////////////////////////////////////////////////////////// + pub SpExpr = Spanned; pub Expr: Expr = { @@ -48,6 +107,9 @@ pub Expr: Expr = { "(" ")" => expr, }; +//////////////////////////////////////////////////////////////////////////////// +// Atoms +//////////////////////////////////////////////////////////////////////////////// pub SpAtom = Spanned; @@ -66,4 +128,4 @@ Str: String = { } Name: String = { => s.to_string(), -} \ No newline at end of file +} diff --git a/src/syn/parser.rs b/src/syn/parser.rs index ab4a34c..bce01d6 100644 --- a/src/syn/parser.rs +++ b/src/syn/parser.rs @@ -1,14 +1,14 @@ // auto-generated: "lalrpop 0.19.9" -// sha3: 0726ef7fadf69dda69d89a6ed417384f733fb20c2ae0e92b5c0ce4f4b4e3e3ee -use std::str::FromStr; -use crate::syn::{Span, Spanned, unescape}; +// sha3: e3c0aaee72cba0cffa77a0a1341baf0059c3cd40d77aa5ee684fb58b4861fdda use crate::syn::ast::*; +use crate::syn::{unescape, Span, Spanned}; +use std::str::FromStr; #[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; +extern crate core; #[cfg_attr(rustfmt, rustfmt_skip)] mod __parse__AssignLhs { @@ -28,50 +28,54 @@ mod __parse__AssignLhs { 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), + Variant1(Spanned), + Variant2(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, // State 2 - 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 9 + integer] + __ACTION[(state as usize) * 13 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 0, // State 1 - -45, + -62, // State 2 - -13, + -21, // State 3 - -28, + -42, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 8 => 1, - 13 => 2, + 13 => 1, + 21 => 2, _ => 0, } } @@ -82,6 +86,10 @@ mod __parse__AssignLhs { r###"",""###, r###"";""###, r###""=""###, + r###""else""###, + r###""if""###, + r###""{""###, + r###""}""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -138,7 +146,7 @@ mod __parse__AssignLhs { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 9 - 1) + __action(state, 13 - 1) } #[inline] @@ -206,10 +214,14 @@ mod __parse__AssignLhs { 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), + Token(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), _ => None, } } @@ -222,8 +234,8 @@ mod __parse__AssignLhs { ) -> __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), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -406,12 +418,7 @@ mod __parse__AssignLhs { __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)); + __reduce44(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 45 => { __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -437,6 +444,74 @@ mod __parse__AssignLhs { 52 => { __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + // __AssignLhs = AssignLhs => ActionFn(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + return Some(Ok(__nt)); + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -450,36 +525,36 @@ mod __parse__AssignLhs { fn __symbol_type_mismatch() -> ! { panic!("symbol type mismatch") } - fn __pop_Variant6< + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< '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), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant7< + fn __pop_Variant11< '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), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -487,7 +562,7 @@ mod __parse__AssignLhs { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Body, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), @@ -498,134 +573,178 @@ mod __parse__AssignLhs { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Expr, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant1< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, 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) + ) -> (usize, Spanned, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant0< 'input, >( @@ -646,13 +765,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(32); + // ("else" ) = "else", SpBlock => ActionFn(45); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action32::<>(input, __sym0, __sym1); + let __nt = super::__action45::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -665,12 +784,15 @@ mod __parse__AssignLhs { _: 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); + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -681,13 +803,12 @@ mod __parse__AssignLhs { _: 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); + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (0, 1) } pub(crate) fn __reduce3< 'input, @@ -698,15 +819,17 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(47); - assert!(__symbols.len() >= 2); + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 2) } pub(crate) fn __reduce4< 'input, @@ -717,16 +840,12 @@ mod __parse__AssignLhs { _: 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) + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) } pub(crate) fn __reduce5< 'input, @@ -737,15 +856,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(40); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 3) } pub(crate) fn __reduce6< 'input, @@ -756,12 +873,17 @@ mod __parse__AssignLhs { _: 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); + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (0, 4) + (4, 4) } pub(crate) fn __reduce7< 'input, @@ -772,13 +894,18 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(39); + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 4) + (5, 4) } pub(crate) fn __reduce8< 'input, @@ -789,14 +916,14 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(51); + // ( ",") = SpExpr, "," => ActionFn(41); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant5(__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)); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } pub(crate) fn __reduce9< @@ -808,16 +935,12 @@ mod __parse__AssignLhs { _: 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) + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) } pub(crate) fn __reduce10< 'input, @@ -828,12 +951,13 @@ mod __parse__AssignLhs { _: 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) + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 6) } pub(crate) fn __reduce11< 'input, @@ -844,12 +968,15 @@ mod __parse__AssignLhs { _: 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) + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 7) } pub(crate) fn __reduce12< 'input, @@ -860,13 +987,16 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AssignLhs = Name => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + (3, 7) } pub(crate) fn __reduce13< 'input, @@ -877,13 +1007,15 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(20); - let __sym0 = __pop_Variant11(__symbols); + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -894,13 +1026,12 @@ mod __parse__AssignLhs { _: 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) + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 9) } pub(crate) fn __reduce15< 'input, @@ -911,12 +1042,12 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(22); - let __sym0 = __pop_Variant11(__symbols); + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } pub(crate) fn __reduce16< @@ -928,17 +1059,15 @@ mod __parse__AssignLhs { _: 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); + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (4, 10) + (2, 10) } pub(crate) fn __reduce17< 'input, @@ -949,14 +1078,14 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(64); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (3, 10) } @@ -969,18 +1098,12 @@ mod __parse__AssignLhs { _: 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) + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce19< 'input, @@ -991,17 +1114,12 @@ mod __parse__AssignLhs { _: 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) + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) } pub(crate) fn __reduce20< 'input, @@ -1012,13 +1130,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(17); - let __sym0 = __pop_Variant13(__symbols); + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__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) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) } pub(crate) fn __reduce21< 'input, @@ -1029,16 +1147,13 @@ mod __parse__AssignLhs { _: 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); + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce22< 'input, @@ -1049,13 +1164,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(67); - let __sym0 = __pop_Variant3(__symbols); + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__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) + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce23< 'input, @@ -1066,12 +1181,13 @@ mod __parse__AssignLhs { _: 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) + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce24< 'input, @@ -1082,15 +1198,16 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(69); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) } pub(crate) fn __reduce25< 'input, @@ -1101,13 +1218,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(70); - let __sym0 = __pop_Variant4(__symbols); + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) } pub(crate) fn __reduce26< 'input, @@ -1118,13 +1235,12 @@ mod __parse__AssignLhs { _: 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) + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) } pub(crate) fn __reduce27< 'input, @@ -1135,13 +1251,15 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); - let __sym0 = __pop_Variant0(__symbols); + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__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) + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) } pub(crate) fn __reduce28< 'input, @@ -1152,13 +1270,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAssignLhs = Spanned => ActionFn(13); - let __sym0 = __pop_Variant12(__symbols); + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action13::<>(input, __sym0); + let __nt = super::__action105::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 14) + (1, 16) } pub(crate) fn __reduce29< 'input, @@ -1169,13 +1287,17 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 15) + (4, 17) } pub(crate) fn __reduce30< 'input, @@ -1186,13 +1308,16 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(15); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce31< 'input, @@ -1203,13 +1328,18 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(28); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 17) } pub(crate) fn __reduce32< 'input, @@ -1220,12 +1350,17 @@ mod __parse__AssignLhs { _: 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) + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) } pub(crate) fn __reduce33< 'input, @@ -1236,13 +1371,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(10); - let __sym0 = __pop_Variant3(__symbols); + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } pub(crate) fn __reduce34< 'input, @@ -1253,13 +1388,16 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(36); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce35< 'input, @@ -1270,12 +1408,13 @@ mod __parse__AssignLhs { _: 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) + // File = Body => 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, 18) } pub(crate) fn __reduce36< 'input, @@ -1286,13 +1425,18 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = AssignLhs => ActionFn(59); - let __sym0 = __pop_Variant6(__symbols); + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) } pub(crate) fn __reduce37< 'input, @@ -1303,13 +1447,19 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(60); - let __sym0 = __pop_Variant7(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) } pub(crate) fn __reduce38< 'input, @@ -1320,13 +1470,16 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(61); - let __sym0 = __pop_Variant8(__symbols); + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) } pub(crate) fn __reduce39< 'input, @@ -1337,13 +1490,17 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(62); - let __sym0 = __pop_Variant16(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) } pub(crate) fn __reduce40< 'input, @@ -1354,13 +1511,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(11); - let __sym0 = __pop_Variant1(__symbols); + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__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) + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } pub(crate) fn __reduce41< 'input, @@ -1371,16 +1528,13 @@ mod __parse__AssignLhs { _: 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); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (3, 24) + (1, 21) } pub(crate) fn __reduce42< 'input, @@ -1391,13 +1545,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); - let __sym0 = __pop_Variant0(__symbols); + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__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) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) } pub(crate) fn __reduce43< 'input, @@ -1408,13 +1562,30 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); - let __sym0 = __pop_Variant0(__symbols); + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) + } + 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) + { + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) } pub(crate) fn __reduce45< 'input, @@ -1425,13 +1596,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(8); - let __sym0 = __pop_Variant7(__symbols); + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) } pub(crate) fn __reduce46< 'input, @@ -1442,13 +1613,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(6); - let __sym0 = __pop_Variant8(__symbols); + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) } pub(crate) fn __reduce47< 'input, @@ -1459,13 +1630,12 @@ mod __parse__AssignLhs { _: 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) + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) } pub(crate) fn __reduce48< 'input, @@ -1476,13 +1646,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAssignLhs = SpAssignLhs => ActionFn(3); - let __sym0 = __pop_Variant12(__symbols); + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) } pub(crate) fn __reduce49< 'input, @@ -1493,13 +1663,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(7); - let __sym0 = __pop_Variant13(__symbols); + // SpStmt? = SpStmt => ActionFn(53); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action53::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } pub(crate) fn __reduce50< 'input, @@ -1510,13 +1680,12 @@ mod __parse__AssignLhs { _: 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) + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) } pub(crate) fn __reduce51< 'input, @@ -1527,13 +1696,13 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpStmt = SpStmt => ActionFn(1); - let __sym0 = __pop_Variant3(__symbols); + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__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) + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) } pub(crate) fn __reduce52< 'input, @@ -1544,13 +1713,356 @@ mod __parse__AssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant16(__symbols); + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__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) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) } } pub use self::__parse__AssignLhs::AssignLhsParser; @@ -1573,72 +2085,76 @@ mod __parse__Atom { 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), + Variant1(Spanned), + Variant2(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 0, 6, 7, 8, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, // State 1 - 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, // State 3 - 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 9 + integer] + __ACTION[(state as usize) * 13 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 0, // State 1 - -46, + -63, // State 2 - -15, + -23, // State 3 - -16, + -24, // State 4 - -14, + -22, // State 5 - -43, + -60, // State 6 - -44, + -61, // State 7 - -27, + -41, // State 8 - -28, + -42, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 9 => 1, - 12 => 2, - 13 => 3, - 25 => 4, + 14 => 1, + 20 => 2, + 21 => 3, + 35 => 4, _ => 0, } } @@ -1649,6 +2165,10 @@ mod __parse__Atom { r###"",""###, r###"";""###, r###""=""###, + r###""else""###, + r###""if""###, + r###""{""###, + r###""}""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -1705,7 +2225,7 @@ mod __parse__Atom { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 9 - 1) + __action(state, 13 - 1) } #[inline] @@ -1773,10 +2293,14 @@ mod __parse__Atom { 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), + Token(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), _ => None, } } @@ -1789,8 +2313,8 @@ mod __parse__Atom { ) -> __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), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -1976,12 +2500,7 @@ mod __parse__Atom { __reduce44(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 45 => { - // __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)); + __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 46 => { __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -2004,6 +2523,74 @@ mod __parse__Atom { 52 => { __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + // __Atom = Atom => ActionFn(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + return Some(Ok(__nt)); + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -2017,36 +2604,36 @@ mod __parse__Atom { fn __symbol_type_mismatch() -> ! { panic!("symbol type mismatch") } - fn __pop_Variant6< + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< '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), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant7< + fn __pop_Variant11< '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), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -2054,7 +2641,7 @@ mod __parse__Atom { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Body, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), @@ -2065,134 +2652,178 @@ mod __parse__Atom { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Expr, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant1< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, 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) + ) -> (usize, Spanned, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant0< 'input, >( @@ -2213,13 +2844,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(32); + // ("else" ) = "else", SpBlock => ActionFn(45); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action32::<>(input, __sym0, __sym1); + let __nt = super::__action45::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -2232,12 +2863,15 @@ mod __parse__Atom { _: 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); + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -2248,13 +2882,12 @@ mod __parse__Atom { _: 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); + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (0, 1) } pub(crate) fn __reduce3< 'input, @@ -2265,15 +2898,17 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(47); - assert!(__symbols.len() >= 2); + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 2) } pub(crate) fn __reduce4< 'input, @@ -2284,16 +2919,12 @@ mod __parse__Atom { _: 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) + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) } pub(crate) fn __reduce5< 'input, @@ -2304,15 +2935,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(40); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 3) } pub(crate) fn __reduce6< 'input, @@ -2323,12 +2952,17 @@ mod __parse__Atom { _: 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); + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (0, 4) + (4, 4) } pub(crate) fn __reduce7< 'input, @@ -2339,13 +2973,18 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(39); + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 4) + (5, 4) } pub(crate) fn __reduce8< 'input, @@ -2356,14 +2995,14 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(51); + // ( ",") = SpExpr, "," => ActionFn(41); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant5(__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)); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } pub(crate) fn __reduce9< @@ -2375,16 +3014,12 @@ mod __parse__Atom { _: 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) + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) } pub(crate) fn __reduce10< 'input, @@ -2395,12 +3030,13 @@ mod __parse__Atom { _: 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) + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 6) } pub(crate) fn __reduce11< 'input, @@ -2411,12 +3047,15 @@ mod __parse__Atom { _: 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) + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 7) } pub(crate) fn __reduce12< 'input, @@ -2427,13 +3066,16 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AssignLhs = Name => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + (3, 7) } pub(crate) fn __reduce13< 'input, @@ -2444,13 +3086,15 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(20); - let __sym0 = __pop_Variant11(__symbols); + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -2461,13 +3105,12 @@ mod __parse__Atom { _: 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) + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 9) } pub(crate) fn __reduce15< 'input, @@ -2478,12 +3121,12 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(22); - let __sym0 = __pop_Variant11(__symbols); + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } pub(crate) fn __reduce16< @@ -2495,17 +3138,15 @@ mod __parse__Atom { _: 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); + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (4, 10) + (2, 10) } pub(crate) fn __reduce17< 'input, @@ -2516,14 +3157,14 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(64); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (3, 10) } @@ -2536,18 +3177,12 @@ mod __parse__Atom { _: 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) + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce19< 'input, @@ -2558,17 +3193,12 @@ mod __parse__Atom { _: 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) + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) } pub(crate) fn __reduce20< 'input, @@ -2579,13 +3209,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(17); - let __sym0 = __pop_Variant13(__symbols); + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__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) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) } pub(crate) fn __reduce21< 'input, @@ -2596,16 +3226,13 @@ mod __parse__Atom { _: 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); + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce22< 'input, @@ -2616,13 +3243,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(67); - let __sym0 = __pop_Variant3(__symbols); + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__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) + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce23< 'input, @@ -2633,12 +3260,13 @@ mod __parse__Atom { _: 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) + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce24< 'input, @@ -2649,15 +3277,16 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(69); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) } pub(crate) fn __reduce25< 'input, @@ -2668,13 +3297,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(70); - let __sym0 = __pop_Variant4(__symbols); + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) } pub(crate) fn __reduce26< 'input, @@ -2685,13 +3314,12 @@ mod __parse__Atom { _: 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) + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) } pub(crate) fn __reduce27< 'input, @@ -2702,13 +3330,15 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); - let __sym0 = __pop_Variant0(__symbols); + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__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) + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) } pub(crate) fn __reduce28< 'input, @@ -2719,13 +3349,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAssignLhs = Spanned => ActionFn(13); - let __sym0 = __pop_Variant12(__symbols); + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action13::<>(input, __sym0); + let __nt = super::__action105::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 14) + (1, 16) } pub(crate) fn __reduce29< 'input, @@ -2736,13 +3366,17 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 15) + (4, 17) } pub(crate) fn __reduce30< 'input, @@ -2753,13 +3387,16 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(15); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce31< 'input, @@ -2770,13 +3407,18 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(28); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 17) } pub(crate) fn __reduce32< 'input, @@ -2787,12 +3429,17 @@ mod __parse__Atom { _: 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) + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) } pub(crate) fn __reduce33< 'input, @@ -2803,13 +3450,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(10); - let __sym0 = __pop_Variant3(__symbols); + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } pub(crate) fn __reduce34< 'input, @@ -2820,13 +3467,16 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(36); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce35< 'input, @@ -2837,12 +3487,13 @@ mod __parse__Atom { _: 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) + // File = Body => 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, 18) } pub(crate) fn __reduce36< 'input, @@ -2853,13 +3504,18 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = AssignLhs => ActionFn(59); - let __sym0 = __pop_Variant6(__symbols); + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) } pub(crate) fn __reduce37< 'input, @@ -2870,13 +3526,19 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(60); - let __sym0 = __pop_Variant7(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) } pub(crate) fn __reduce38< 'input, @@ -2887,13 +3549,16 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(61); - let __sym0 = __pop_Variant8(__symbols); + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) } pub(crate) fn __reduce39< 'input, @@ -2904,13 +3569,17 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(62); - let __sym0 = __pop_Variant16(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) } pub(crate) fn __reduce40< 'input, @@ -2921,13 +3590,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(11); - let __sym0 = __pop_Variant1(__symbols); + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__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) + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } pub(crate) fn __reduce41< 'input, @@ -2938,16 +3607,13 @@ mod __parse__Atom { _: 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); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (3, 24) + (1, 21) } pub(crate) fn __reduce42< 'input, @@ -2958,13 +3624,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); - let __sym0 = __pop_Variant0(__symbols); + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__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) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) } pub(crate) fn __reduce43< 'input, @@ -2975,13 +3641,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); - let __sym0 = __pop_Variant0(__symbols); + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) } pub(crate) fn __reduce44< 'input, @@ -2992,13 +3658,30 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __AssignLhs = AssignLhs => ActionFn(4); - let __sym0 = __pop_Variant6(__symbols); + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__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) + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) + } + 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) + { + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) } pub(crate) fn __reduce46< 'input, @@ -3009,13 +3692,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(6); - let __sym0 = __pop_Variant8(__symbols); + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) } pub(crate) fn __reduce47< 'input, @@ -3026,13 +3709,12 @@ mod __parse__Atom { _: 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) + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) } pub(crate) fn __reduce48< 'input, @@ -3043,13 +3725,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAssignLhs = SpAssignLhs => ActionFn(3); - let __sym0 = __pop_Variant12(__symbols); + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) } pub(crate) fn __reduce49< 'input, @@ -3060,13 +3742,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(7); - let __sym0 = __pop_Variant13(__symbols); + // SpStmt? = SpStmt => ActionFn(53); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action53::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } pub(crate) fn __reduce50< 'input, @@ -3077,13 +3759,12 @@ mod __parse__Atom { _: 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) + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) } pub(crate) fn __reduce51< 'input, @@ -3094,13 +3775,13 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpStmt = SpStmt => ActionFn(1); - let __sym0 = __pop_Variant3(__symbols); + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__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) + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) } pub(crate) fn __reduce52< 'input, @@ -3111,19 +3792,362 @@ mod __parse__Atom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant16(__symbols); + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__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) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) } } pub use self::__parse__Atom::AtomParser; #[cfg_attr(rustfmt, rustfmt_skip)] -mod __parse__Expr { +mod __parse__Block { #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)] use std::str::FromStr; @@ -3140,83 +4164,155 @@ mod __parse__Expr { 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), + Variant1(Spanned), + Variant2(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), } const __ACTION: &[i8] = &[ // State 0 - 2, 0, 0, 0, 0, 14, 15, 16, 17, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // State 1 - 2, 0, 0, 0, 0, 14, 15, 16, 17, + 4, 0, 0, 0, 0, 0, 5, 0, -27, 35, 36, 37, 38, // State 2 - 2, 21, 0, 0, 0, 14, 15, 16, 17, + 4, 0, 0, 0, 0, 0, 5, 0, -29, 35, 36, 37, 38, // State 3 - 2, 24, 0, 0, 0, 14, 15, 16, 17, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 4 - -38, -38, -38, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 5 - -39, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 6 - -15, -15, -15, 0, 0, 0, 0, 0, 0, + 4, 48, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 7 - -16, -16, -16, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // State 8 - -21, -21, -21, 0, 0, 0, 0, 0, 0, + 4, 53, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 9 - 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -39, 0, 11, 0, 0, -39, 0, 0, 0, 0, // State 10 - -30, -30, -30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 0, 0, // State 11 - -31, -31, -31, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 0, 0, // State 12 - -14, -14, -14, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 13 - -43, -43, -43, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 14 - -44, -44, -44, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // State 15 - -27, -27, -27, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // State 16 - -28, -28, -28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 17 - -39, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, // State 18 - -39, -39, -39, 0, 0, 0, 0, 0, 0, + -53, -53, -53, -53, 0, 0, 0, -53, -53, 0, 0, 0, 0, // State 19 - 3, 25, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, // State 20 - -18, -18, -18, 0, 0, 0, 0, 0, 0, + -55, -55, -55, -55, 0, 0, 0, -55, -55, 0, 0, 0, 0, // State 21 - -22, -22, -22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -59, 0, 0, 0, 0, -59, 0, 0, 0, 0, // State 22 - 3, 27, 28, 0, 0, 0, 0, 0, 0, + -23, -23, -23, -23, 0, 0, 0, -23, -23, 0, 0, 0, 0, // State 23 - -20, -20, -20, 0, 0, 0, 0, 0, 0, + -24, 0, 0, -24, -21, 0, 0, 0, -24, 0, 0, 0, 0, // State 24 - -17, -17, -17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, // State 25 - -4, -4, 0, 0, 0, -4, -4, -4, -4, + -34, -34, -34, -34, 0, 0, 0, -34, -34, 0, 0, 0, 0, // State 26 - -19, -19, -19, 0, 0, 0, 0, 0, 0, + 7, 0, 0, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, // State 27 - -5, -5, 0, 0, 0, -5, -5, -5, -5, + 0, 0, 0, 41, 0, 0, 0, 0, -26, 0, 0, 0, 0, + // State 28 + 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, + // State 29 + -44, -44, -44, -44, 0, 0, 0, -44, -44, 0, 0, 0, 0, + // State 30 + -46, -46, -46, -46, 0, 0, 0, -46, -46, 0, 0, 0, 0, + // State 31 + 0, 0, 0, -49, 0, 0, 0, 0, -49, 0, 0, 0, 0, + // State 32 + 0, 0, 0, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, + // State 33 + -22, -22, -22, -22, 0, 0, 0, -22, -22, 0, 0, 0, 0, + // State 34 + -60, -60, -60, -60, 0, 0, 0, -60, -60, 0, 0, 0, 0, + // State 35 + -61, -61, -61, -61, 0, 0, 0, -61, -61, 0, 0, 0, 0, + // State 36 + -41, -41, -41, -41, 0, 0, 0, -41, -41, 0, 0, 0, 0, + // State 37 + -42, -42, -42, -42, -42, 0, 0, -42, -42, 0, 0, 0, 0, + // State 38 + 0, 0, 0, 45, 0, 0, 0, 0, -28, 0, 0, 0, 0, + // State 39 + 0, 0, 0, -25, 0, -25, 0, 0, -25, 0, 0, 0, 0, + // State 40 + -17, 0, 0, 0, 0, 0, -17, 0, -17, -17, -17, -17, -17, + // State 41 + -55, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 42 + -24, -24, -24, -24, 0, 0, 0, -24, -24, 0, 0, 0, 0, + // State 43 + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 44 + -18, 0, 0, 0, 0, 0, -18, 0, -18, -18, -18, -18, -18, + // State 45 + 7, 0, 0, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, + // State 46 + 7, 54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 47 + -31, -31, -31, -31, 0, 0, 0, -31, -31, 0, 0, 0, 0, + // State 48 + -35, -35, -35, -35, 0, 0, 0, -35, -35, 0, 0, 0, 0, + // State 49 + 0, 0, 0, -54, 0, -54, 0, 0, -54, 0, 0, 0, 0, + // State 50 + 0, 0, 0, -45, 0, -45, 0, 0, -45, 0, 0, 0, 0, + // State 51 + 7, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 52 + -33, -33, -33, -33, 0, 0, 0, -33, -33, 0, 0, 0, 0, + // State 53 + -30, -30, -30, -30, 0, 0, 0, -30, -30, 0, 0, 0, 0, + // State 54 + -12, -12, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, + // State 55 + 0, 0, 0, -40, 0, 12, 0, 0, -40, 0, 0, 0, 0, + // State 56 + -32, -32, -32, -32, 0, 0, 0, -32, -32, 0, 0, 0, 0, + // State 57 + -13, -13, 0, 0, 0, 0, 0, 0, 0, -13, -13, -13, -13, + // State 58 + 0, 0, 0, -37, 0, 0, 0, 0, -37, 0, 0, 0, 0, + // State 59 + 0, 0, 0, -38, 0, 0, 0, 0, -38, 0, 0, 0, 0, + // State 60 + 0, 0, 0, -7, 0, -7, 0, 0, -7, 0, 0, 0, 0, + // State 61 + 0, 0, 0, -8, 0, -8, 0, 0, -8, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 9 + integer] + __ACTION[(state as usize) * 13 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -3228,31 +4324,31 @@ mod __parse__Expr { // State 3 0, // State 4 - -38, + 0, // State 5 - -47, + 0, // State 6 - -15, + 0, // State 7 - -16, + 0, // State 8 - -21, + 0, // State 9 0, // State 10 - -30, + 0, // State 11 0, // State 12 - -14, + 0, // State 13 - -43, + 0, // State 14 - -44, + 0, // State 15 - -27, + 0, // State 16 - -28, + -64, // State 17 0, // State 18 @@ -3260,42 +4356,142 @@ mod __parse__Expr { // State 19 0, // State 20 - -18, + 0, // State 21 - -22, + 0, // State 22 0, // State 23 - -20, + 0, // State 24 - -17, + 0, // State 25 0, // State 26 - -19, + 0, // State 27 0, + // State 28 + 0, + // State 29 + 0, + // State 30 + 0, + // State 31 + 0, + // State 32 + 0, + // State 33 + 0, + // State 34 + 0, + // State 35 + 0, + // State 36 + 0, + // State 37 + 0, + // State 38 + 0, + // State 39 + -25, + // State 40 + 0, + // State 41 + 0, + // State 42 + 0, + // State 43 + 0, + // State 44 + 0, + // State 45 + 0, + // State 46 + 0, + // State 47 + 0, + // State 48 + 0, + // State 49 + 0, + // State 50 + 0, + // State 51 + 0, + // State 52 + 0, + // State 53 + 0, + // State 54 + 0, + // State 55 + 0, + // State 56 + 0, + // State 57 + 0, + // State 58 + 0, + // State 59 + 0, + // State 60 + 0, + // State 61 + 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 2 => 3, - 9 => 4, - 10 => match state { - 1 => 17, - 2..=3 => 18, - _ => 5, + 4 => 55, + 7 => 8, + 10 => 2, + 13 => 17, + 14 => 18, + 15 => match state { + 0 => 16, + _ => 49, }, - 12 => 6, - 13 => 7, - 15 => 8, - 16 => match state { - 2 => 19, - 3 => 22, + 16 => 19, + 17 => match state { + 3 => 41, + _ => 20, + }, + 19 => 21, + 20 => 22, + 21 => match state { + 1..=2 => 23, + _ => 42, + }, + 22 => 24, + 23 => 25, + 24 => match state { + 10 => 58, + 11 => 59, + 14 => 60, + 15 => 61, _ => 9, }, - 21 => 10, - 22 => 11, - 25 => 12, + 25 => match state { + 12 => 14, + 13 => 15, + 1..=2 => 26, + 3 => 43, + 5 => 45, + 6 => 46, + 8 => 51, + _ => 7, + }, + 27 => match state { + 2 => 38, + _ => 27, + }, + 29 => 28, + 30 => 29, + 31 => 50, + 32 => 30, + 33 => 31, + 34 => 32, + 35 => 33, _ => 0, } } @@ -3306,6 +4502,10 @@ mod __parse__Expr { r###"",""###, r###"";""###, r###""=""###, + r###""else""###, + r###""if""###, + r###""{""###, + r###""}""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -3334,7 +4534,7 @@ mod __parse__Expr { type Token = Token<'input>; type TokenIndex = usize; type Symbol = __Symbol<'input>; - type Success = Expr; + type Success = Body; type StateIndex = i8; type Action = i8; type ReduceIndex = i8; @@ -3362,7 +4562,7 @@ mod __parse__Expr { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 9 - 1) + __action(state, 13 - 1) } #[inline] @@ -3430,10 +4630,14 @@ mod __parse__Expr { 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), + Token(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), _ => None, } } @@ -3446,8 +4650,4514 @@ mod __parse__Expr { ) -> __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), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + } + } + pub struct BlockParser { + builder: __lalrpop_util::lexer::MatcherBuilder, + _priv: (), + } + + impl BlockParser { + pub fn new() -> BlockParser { + let __builder = super::__intern_token::new_builder(); + BlockParser { + 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 => { + __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 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + return Some(Ok(__nt)); + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(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_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, AssignLhs, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant11< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Atom, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Body, 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, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__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_Variant5< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__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) + { + // ("else" ) = "else", SpBlock => ActionFn(45); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action45::<>(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) + { + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (2, 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) + { + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (0, 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) + { + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 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) + { + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) + } + 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) + { + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 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) + { + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (4, 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) + { + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (5, 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) + { + // ( ",") = SpExpr, "," => ActionFn(41); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__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) + { + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) + } + 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) + { + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 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) + { + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 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) + { + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (3, 7) + } + 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) + { + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (2, 8) + } + 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) + { + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 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) + { + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__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) + { + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (2, 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) + { + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action95::<>(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) + { + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) + } + 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) + { + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) + } + 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) + { + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) + } + 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) + { + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) + } + 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) + { + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) + } + 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) + { + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) + } + 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) + { + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) + } + 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) + { + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action105::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) + } + 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) + { + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) + } + 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) + { + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) + } + 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) + { + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 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) + { + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 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) + { + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) + } + 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) + { + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) + } + 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) + { + // File = Body => 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, 18) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) + } + 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) + { + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) + } + 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) + { + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) + } + 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) + { + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) + } + 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) + { + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) + } + 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) + { + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) + } + 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) + { + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) + } + 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) + { + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) + } + 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) + { + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) + } + 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) + { + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + 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) + { + // SpStmt? = SpStmt => 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::Variant20(__nt), __end)); + (1, 28) + } + 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) + { + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) + } + 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) + { + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) + } + 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) + { + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) + } +} +pub use self::__parse__Block::BlockParser; + +#[cfg_attr(rustfmt, rustfmt_skip)] +mod __parse__Body { + #![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(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), + } + const __ACTION: &[i8] = &[ + // State 0 + 3, 0, 0, 0, 0, 0, 4, 0, 0, 34, 35, 36, 37, + // State 1 + 3, 0, 0, 0, 0, 0, 4, 0, -29, 34, 35, 36, 37, + // State 2 + 3, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, + // State 3 + 3, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, + // State 4 + 3, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, + // State 5 + 3, 46, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, + // State 6 + 6, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, + // State 7 + 3, 51, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, + // State 8 + 0, 0, 0, -39, 0, 11, 0, 0, -39, 0, 0, 0, 0, + // State 9 + 3, 0, 0, 0, 0, 0, 4, 0, -27, 34, 35, 36, 37, + // State 10 + 0, 0, 0, 0, 0, 0, 13, 10, 0, 0, 0, 0, 0, + // State 11 + 0, 0, 0, 0, 0, 0, 14, 10, 0, 0, 0, 0, 0, + // State 12 + 3, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, + // State 13 + 3, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, + // State 14 + 6, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, + // State 15 + 6, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, + // State 16 + 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, + // State 17 + -53, -53, -53, -53, 0, 0, 0, -53, -53, 0, 0, 0, 0, + // State 18 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 19 + -55, -55, -55, -55, 0, 0, 0, -55, -55, 0, 0, 0, 0, + // State 20 + 0, 0, 0, -59, 0, 0, 0, 0, -59, 0, 0, 0, 0, + // State 21 + -23, -23, -23, -23, 0, 0, 0, -23, -23, 0, 0, 0, 0, + // State 22 + -24, 0, 0, -24, -21, 0, 0, 0, -24, 0, 0, 0, 0, + // State 23 + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, + // State 24 + -34, -34, -34, -34, 0, 0, 0, -34, -34, 0, 0, 0, 0, + // State 25 + 6, 0, 0, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, + // State 26 + 0, 0, 0, 39, 0, 0, 0, 0, -26, 0, 0, 0, 0, + // State 27 + 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, + // State 28 + -44, -44, -44, -44, 0, 0, 0, -44, -44, 0, 0, 0, 0, + // State 29 + -46, -46, -46, -46, 0, 0, 0, -46, -46, 0, 0, 0, 0, + // State 30 + 0, 0, 0, -49, 0, 0, 0, 0, -49, 0, 0, 0, 0, + // State 31 + 0, 0, 0, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, + // State 32 + -22, -22, -22, -22, 0, 0, 0, -22, -22, 0, 0, 0, 0, + // State 33 + -60, -60, -60, -60, 0, 0, 0, -60, -60, 0, 0, 0, 0, + // State 34 + -61, -61, -61, -61, 0, 0, 0, -61, -61, 0, 0, 0, 0, + // State 35 + -41, -41, -41, -41, 0, 0, 0, -41, -41, 0, 0, 0, 0, + // State 36 + -42, -42, -42, -42, -42, 0, 0, -42, -42, 0, 0, 0, 0, + // State 37 + 0, 0, 0, 43, 0, 0, 0, 0, -28, 0, 0, 0, 0, + // State 38 + -17, 0, 0, 0, 0, 0, -17, 0, -17, -17, -17, -17, -17, + // State 39 + -55, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 40 + -24, -24, -24, -24, 0, 0, 0, -24, -24, 0, 0, 0, 0, + // State 41 + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 42 + -18, 0, 0, 0, 0, 0, -18, 0, -18, -18, -18, -18, -18, + // State 43 + 6, 0, 0, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, + // State 44 + 6, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 45 + -31, -31, -31, -31, 0, 0, 0, -31, -31, 0, 0, 0, 0, + // State 46 + -35, -35, -35, -35, 0, 0, 0, -35, -35, 0, 0, 0, 0, + // State 47 + 0, 0, 0, -54, 0, -54, 0, 0, -54, 0, 0, 0, 0, + // State 48 + 0, 0, 0, -45, 0, -45, 0, 0, -45, 0, 0, 0, 0, + // State 49 + 6, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 50 + -33, -33, -33, -33, 0, 0, 0, -33, -33, 0, 0, 0, 0, + // State 51 + -30, -30, -30, -30, 0, 0, 0, -30, -30, 0, 0, 0, 0, + // State 52 + -12, -12, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, + // State 53 + 0, 0, 0, -40, 0, 12, 0, 0, -40, 0, 0, 0, 0, + // State 54 + 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, + // State 55 + -32, -32, -32, -32, 0, 0, 0, -32, -32, 0, 0, 0, 0, + // State 56 + -13, -13, 0, 0, 0, 0, 0, 0, 0, -13, -13, -13, -13, + // State 57 + 0, 0, 0, -37, 0, 0, 0, 0, -37, 0, 0, 0, 0, + // State 58 + 0, 0, 0, -25, 0, -25, 0, 0, -25, 0, 0, 0, 0, + // State 59 + 0, 0, 0, -38, 0, 0, 0, 0, -38, 0, 0, 0, 0, + // State 60 + 0, 0, 0, -7, 0, -7, 0, 0, -7, 0, 0, 0, 0, + // State 61 + 0, 0, 0, -8, 0, -8, 0, 0, -8, 0, 0, 0, 0, + ]; + fn __action(state: i8, integer: usize) -> i8 { + __ACTION[(state as usize) * 13 + integer] + } + const __EOF_ACTION: &[i8] = &[ + // State 0 + -27, + // State 1 + -29, + // State 2 + 0, + // State 3 + 0, + // State 4 + 0, + // State 5 + 0, + // State 6 + 0, + // State 7 + 0, + // State 8 + -39, + // State 9 + 0, + // State 10 + 0, + // State 11 + 0, + // State 12 + 0, + // State 13 + 0, + // State 14 + 0, + // State 15 + 0, + // State 16 + 0, + // State 17 + -53, + // State 18 + -65, + // State 19 + -55, + // State 20 + -59, + // State 21 + -23, + // State 22 + -24, + // State 23 + 0, + // State 24 + -34, + // State 25 + -57, + // State 26 + -26, + // State 27 + 0, + // State 28 + -44, + // State 29 + -46, + // State 30 + -49, + // State 31 + -56, + // State 32 + -22, + // State 33 + -60, + // State 34 + -61, + // State 35 + -41, + // State 36 + -42, + // State 37 + -28, + // State 38 + -17, + // State 39 + 0, + // State 40 + -24, + // State 41 + 0, + // State 42 + -18, + // State 43 + -58, + // State 44 + 0, + // State 45 + -31, + // State 46 + -35, + // State 47 + -54, + // State 48 + -45, + // State 49 + 0, + // State 50 + -33, + // State 51 + -30, + // State 52 + 0, + // State 53 + -40, + // State 54 + 0, + // State 55 + -32, + // State 56 + 0, + // State 57 + -37, + // State 58 + -25, + // State 59 + -38, + // State 60 + -7, + // State 61 + -8, + ]; + fn __goto(state: i8, nt: usize) -> i8 { + match nt { + 4 => 53, + 7 => 7, + 10 => 1, + 13 => 16, + 14 => 17, + 15 => 47, + 16 => match state { + 9 => 54, + _ => 18, + }, + 17 => match state { + 2 => 39, + _ => 19, + }, + 19 => 20, + 20 => 21, + 21 => match state { + 0..=1 | 9 => 22, + _ => 40, + }, + 22 => 23, + 23 => 24, + 24 => match state { + 10 => 57, + 11 => 59, + 14 => 60, + 15 => 61, + _ => 8, + }, + 25 => match state { + 3 => 6, + 12 => 14, + 13 => 15, + 2 => 41, + 4 => 43, + 5 => 44, + 7 => 49, + _ => 25, + }, + 27 => match state { + 1 => 37, + _ => 26, + }, + 29 => 27, + 30 => 28, + 31 => 48, + 32 => 29, + 33 => 30, + 34 => 31, + 35 => 32, + _ => 0, + } + } + fn __expected_tokens(__state: i8) -> alloc::vec::Vec { + const __TERMINAL: &[&str] = &[ + r###""(""###, + r###"")""###, + r###"",""###, + r###"";""###, + r###""=""###, + r###""else""###, + r###""if""###, + 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 = Body; + 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, 13 - 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(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), + _ => 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 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + } + } + pub struct BodyParser { + builder: __lalrpop_util::lexer::MatcherBuilder, + _priv: (), + } + + impl BodyParser { + pub fn new() -> BodyParser { + let __builder = super::__intern_token::new_builder(); + BodyParser { + 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 => { + __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 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + // __Body = Body => 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)); + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(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_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, AssignLhs, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant11< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Atom, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Body, 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, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__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_Variant5< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__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) + { + // ("else" ) = "else", SpBlock => ActionFn(45); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action45::<>(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) + { + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (2, 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) + { + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (0, 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) + { + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 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) + { + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) + } + 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) + { + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 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) + { + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (4, 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) + { + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (5, 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) + { + // ( ",") = SpExpr, "," => ActionFn(41); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__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) + { + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) + } + 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) + { + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 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) + { + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 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) + { + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (3, 7) + } + 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) + { + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (2, 8) + } + 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) + { + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 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) + { + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__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) + { + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (2, 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) + { + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action95::<>(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) + { + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) + } + 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) + { + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) + } + 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) + { + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) + } + 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) + { + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) + } + 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) + { + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) + } + 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) + { + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) + } + 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) + { + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) + } + 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) + { + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action105::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) + } + 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) + { + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) + } + 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) + { + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) + } + 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) + { + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 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) + { + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 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) + { + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) + } + 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) + { + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) + } + 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) + { + // File = Body => 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, 18) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) + } + 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) + { + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) + } + 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) + { + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) + } + 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) + { + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) + } + 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) + { + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) + } + 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) + { + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) + } + 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) + { + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) + } + 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) + { + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) + } + 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) + { + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) + } + 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) + { + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + 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) + { + // SpStmt? = SpStmt => 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::Variant20(__nt), __end)); + (1, 28) + } + 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) + { + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) + } + 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) + { + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) + } + 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) + { + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) + } +} +pub use self::__parse__Body::BodyParser; + +#[cfg_attr(rustfmt, rustfmt_skip)] +mod __parse__Expr { + #![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(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), + } + const __ACTION: &[i8] = &[ + // State 0 + 2, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, + // State 1 + 2, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, + // State 2 + 2, 21, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, + // State 3 + 2, 24, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, + // State 4 + -53, -53, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 5 + -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 6 + -23, -23, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 7 + -24, -24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 8 + -34, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 9 + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 10 + -44, -44, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 11 + -46, -46, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 12 + -22, -22, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 13 + -60, -60, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 14 + -61, -61, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 15 + -41, -41, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 16 + -42, -42, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 17 + -55, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 18 + -55, -55, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 19 + 3, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 20 + -31, -31, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 21 + -35, -35, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 22 + 3, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 23 + -33, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 24 + -30, -30, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 25 + -12, -12, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, + // State 26 + -32, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 27 + -13, -13, 0, 0, 0, 0, 0, 0, 0, -13, -13, -13, -13, + ]; + fn __action(state: i8, integer: usize) -> i8 { + __ACTION[(state as usize) * 13 + integer] + } + const __EOF_ACTION: &[i8] = &[ + // State 0 + 0, + // State 1 + 0, + // State 2 + 0, + // State 3 + 0, + // State 4 + -53, + // State 5 + -66, + // State 6 + -23, + // State 7 + -24, + // State 8 + -34, + // State 9 + 0, + // State 10 + -44, + // State 11 + 0, + // State 12 + -22, + // State 13 + -60, + // State 14 + -61, + // State 15 + -41, + // State 16 + -42, + // State 17 + 0, + // State 18 + 0, + // State 19 + 0, + // State 20 + -31, + // State 21 + -35, + // State 22 + 0, + // State 23 + -33, + // State 24 + -30, + // State 25 + 0, + // State 26 + -32, + // State 27 + 0, + ]; + fn __goto(state: i8, nt: usize) -> i8 { + match nt { + 7 => 3, + 14 => 4, + 17 => match state { + 1 => 17, + 2..=3 => 18, + _ => 5, + }, + 20 => 6, + 21 => 7, + 23 => 8, + 25 => match state { + 2 => 19, + 3 => 22, + _ => 9, + }, + 30 => 10, + 32 => 11, + 35 => 12, + _ => 0, + } + } + fn __expected_tokens(__state: i8) -> alloc::vec::Vec { + const __TERMINAL: &[&str] = &[ + r###""(""###, + r###"")""###, + r###"",""###, + r###"";""###, + r###""=""###, + r###""else""###, + r###""if""###, + 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 = Expr; + 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, 13 - 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(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), + _ => 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 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -3636,12 +9346,7 @@ mod __parse__Expr { __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 46 => { - // __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)); + __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 47 => { __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -3661,6 +9366,74 @@ mod __parse__Expr { 52 => { __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + // __Expr = Expr => ActionFn(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + return Some(Ok(__nt)); + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -3674,36 +9447,36 @@ mod __parse__Expr { fn __symbol_type_mismatch() -> ! { panic!("symbol type mismatch") } - fn __pop_Variant6< + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< '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), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant7< + fn __pop_Variant11< '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), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -3711,7 +9484,7 @@ mod __parse__Expr { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Body, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), @@ -3722,134 +9495,178 @@ mod __parse__Expr { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Expr, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant1< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, 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) + ) -> (usize, Spanned, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant0< 'input, >( @@ -3870,13 +9687,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(32); + // ("else" ) = "else", SpBlock => ActionFn(45); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action32::<>(input, __sym0, __sym1); + let __nt = super::__action45::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -3889,12 +9706,15 @@ mod __parse__Expr { _: 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); + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -3905,13 +9725,12 @@ mod __parse__Expr { _: 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); + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (0, 1) } pub(crate) fn __reduce3< 'input, @@ -3922,15 +9741,17 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(47); - assert!(__symbols.len() >= 2); + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 2) } pub(crate) fn __reduce4< 'input, @@ -3941,16 +9762,12 @@ mod __parse__Expr { _: 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) + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) } pub(crate) fn __reduce5< 'input, @@ -3961,15 +9778,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(40); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 3) } pub(crate) fn __reduce6< 'input, @@ -3980,12 +9795,17 @@ mod __parse__Expr { _: 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); + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (0, 4) + (4, 4) } pub(crate) fn __reduce7< 'input, @@ -3996,13 +9816,18 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(39); + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 4) + (5, 4) } pub(crate) fn __reduce8< 'input, @@ -4013,14 +9838,14 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(51); + // ( ",") = SpExpr, "," => ActionFn(41); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant5(__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)); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } pub(crate) fn __reduce9< @@ -4032,16 +9857,12 @@ mod __parse__Expr { _: 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) + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) } pub(crate) fn __reduce10< 'input, @@ -4052,12 +9873,13 @@ mod __parse__Expr { _: 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) + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 6) } pub(crate) fn __reduce11< 'input, @@ -4068,12 +9890,15 @@ mod __parse__Expr { _: 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) + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 7) } pub(crate) fn __reduce12< 'input, @@ -4084,13 +9909,16 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AssignLhs = Name => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + (3, 7) } pub(crate) fn __reduce13< 'input, @@ -4101,13 +9929,15 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(20); - let __sym0 = __pop_Variant11(__symbols); + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -4118,13 +9948,12 @@ mod __parse__Expr { _: 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) + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 9) } pub(crate) fn __reduce15< 'input, @@ -4135,12 +9964,12 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(22); - let __sym0 = __pop_Variant11(__symbols); + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } pub(crate) fn __reduce16< @@ -4152,17 +9981,15 @@ mod __parse__Expr { _: 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); + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (4, 10) + (2, 10) } pub(crate) fn __reduce17< 'input, @@ -4173,14 +10000,14 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(64); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (3, 10) } @@ -4193,18 +10020,12 @@ mod __parse__Expr { _: 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) + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce19< 'input, @@ -4215,17 +10036,12 @@ mod __parse__Expr { _: 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) + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) } pub(crate) fn __reduce20< 'input, @@ -4236,13 +10052,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(17); - let __sym0 = __pop_Variant13(__symbols); + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__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) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) } pub(crate) fn __reduce21< 'input, @@ -4253,16 +10069,13 @@ mod __parse__Expr { _: 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); + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce22< 'input, @@ -4273,13 +10086,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(67); - let __sym0 = __pop_Variant3(__symbols); + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__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) + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce23< 'input, @@ -4290,12 +10103,13 @@ mod __parse__Expr { _: 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) + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce24< 'input, @@ -4306,15 +10120,16 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(69); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) } pub(crate) fn __reduce25< 'input, @@ -4325,13 +10140,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(70); - let __sym0 = __pop_Variant4(__symbols); + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) } pub(crate) fn __reduce26< 'input, @@ -4342,13 +10157,12 @@ mod __parse__Expr { _: 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) + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) } pub(crate) fn __reduce27< 'input, @@ -4359,13 +10173,15 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); - let __sym0 = __pop_Variant0(__symbols); + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__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) + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) } pub(crate) fn __reduce28< 'input, @@ -4376,13 +10192,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAssignLhs = Spanned => ActionFn(13); - let __sym0 = __pop_Variant12(__symbols); + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action13::<>(input, __sym0); + let __nt = super::__action105::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 14) + (1, 16) } pub(crate) fn __reduce29< 'input, @@ -4393,13 +10209,17 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 15) + (4, 17) } pub(crate) fn __reduce30< 'input, @@ -4410,13 +10230,16 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(15); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce31< 'input, @@ -4427,13 +10250,18 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(28); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 17) } pub(crate) fn __reduce32< 'input, @@ -4444,12 +10272,17 @@ mod __parse__Expr { _: 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) + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) } pub(crate) fn __reduce33< 'input, @@ -4460,13 +10293,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(10); - let __sym0 = __pop_Variant3(__symbols); + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } pub(crate) fn __reduce34< 'input, @@ -4477,13 +10310,16 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(36); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce35< 'input, @@ -4494,12 +10330,13 @@ mod __parse__Expr { _: 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) + // File = Body => 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, 18) } pub(crate) fn __reduce36< 'input, @@ -4510,13 +10347,18 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = AssignLhs => ActionFn(59); - let __sym0 = __pop_Variant6(__symbols); + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) } pub(crate) fn __reduce37< 'input, @@ -4527,13 +10369,19 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(60); - let __sym0 = __pop_Variant7(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) } pub(crate) fn __reduce38< 'input, @@ -4544,13 +10392,16 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(61); - let __sym0 = __pop_Variant8(__symbols); + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) } pub(crate) fn __reduce39< 'input, @@ -4561,13 +10412,17 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(62); - let __sym0 = __pop_Variant16(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) } pub(crate) fn __reduce40< 'input, @@ -4578,13 +10433,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(11); - let __sym0 = __pop_Variant1(__symbols); + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__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) + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } pub(crate) fn __reduce41< 'input, @@ -4595,16 +10450,13 @@ mod __parse__Expr { _: 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); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (3, 24) + (1, 21) } pub(crate) fn __reduce42< 'input, @@ -4615,13 +10467,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); - let __sym0 = __pop_Variant0(__symbols); + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__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) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) } pub(crate) fn __reduce43< 'input, @@ -4632,13 +10484,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); - let __sym0 = __pop_Variant0(__symbols); + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) } pub(crate) fn __reduce44< 'input, @@ -4649,13 +10501,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __AssignLhs = AssignLhs => ActionFn(4); - let __sym0 = __pop_Variant6(__symbols); + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__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) + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) } pub(crate) fn __reduce45< 'input, @@ -4666,13 +10518,30 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(8); - let __sym0 = __pop_Variant7(__symbols); + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) + } + 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) + { + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) } pub(crate) fn __reduce47< 'input, @@ -4683,13 +10552,12 @@ mod __parse__Expr { _: 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) + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) } pub(crate) fn __reduce48< 'input, @@ -4700,13 +10568,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAssignLhs = SpAssignLhs => ActionFn(3); - let __sym0 = __pop_Variant12(__symbols); + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) } pub(crate) fn __reduce49< 'input, @@ -4717,13 +10585,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(7); - let __sym0 = __pop_Variant13(__symbols); + // SpStmt? = SpStmt => ActionFn(53); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action53::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } pub(crate) fn __reduce50< 'input, @@ -4734,13 +10602,12 @@ mod __parse__Expr { _: 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) + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) } pub(crate) fn __reduce51< 'input, @@ -4751,13 +10618,13 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpStmt = SpStmt => ActionFn(1); - let __sym0 = __pop_Variant3(__symbols); + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__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) + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) } pub(crate) fn __reduce52< 'input, @@ -4768,13 +10635,356 @@ mod __parse__Expr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant16(__symbols); + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__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) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) } } pub use self::__parse__Expr::ExprParser; @@ -4797,117 +11007,163 @@ mod __parse__File { 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), + Variant1(Spanned), + Variant2(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), } const __ACTION: &[i8] = &[ // State 0 - 3, 0, 0, 0, 0, 23, 24, 25, 26, + 3, 0, 0, 0, 0, 0, 4, 0, 0, 35, 36, 37, 38, // State 1 - 3, 0, 0, 0, 0, 23, 24, 25, 26, + 3, 0, 0, 0, 0, 0, 4, 0, -29, 35, 36, 37, 38, // State 2 - 3, 0, 0, 0, 0, 23, 24, 25, 26, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 3 - 3, 0, 0, 0, 0, 23, 24, 25, 26, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 4 - 3, 35, 0, 0, 0, 23, 24, 25, 26, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 5 - 3, 38, 0, 0, 0, 23, 24, 25, 26, + 3, 47, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 6 - 0, 0, 0, 0, -37, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, // State 7 - -38, -38, -38, -38, 0, 0, 0, 0, 0, + 3, 52, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 8 - -39, -39, -39, -39, 0, 0, 0, 0, 0, + 0, 0, 0, -39, 0, 11, 0, 0, -39, 0, 0, 0, 0, // State 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 4, 0, -27, 35, 36, 37, 38, // State 10 - -15, -15, -15, -15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 10, 0, 0, 0, 0, 0, // State 11 - -16, 0, 0, -16, -13, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 10, 0, 0, 0, 0, 0, // State 12 - 0, 0, 0, 0, 4, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 13 - -21, -21, -21, -21, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, // State 14 - 5, 0, 0, -41, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, // State 15 - 0, 0, 0, 28, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, // State 16 - 0, 0, 0, 0, -29, 0, 0, 0, 0, + 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, // State 17 - -30, -30, -30, -30, 0, 0, 0, 0, 0, + -53, -53, -53, -53, 0, 0, 0, -53, -53, 0, 0, 0, 0, // State 18 - -31, -31, -31, -31, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 19 - 0, 0, 0, -34, 0, 0, 0, 0, 0, + -55, -55, -55, -55, 0, 0, 0, -55, -55, 0, 0, 0, 0, // State 20 - 0, 0, 0, -40, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 21 - -14, -14, -14, -14, 0, 0, 0, 0, 0, + 0, 0, 0, -59, 0, 0, 0, 0, -59, 0, 0, 0, 0, // State 22 - -43, -43, -43, -43, 0, 0, 0, 0, 0, + -23, -23, -23, -23, 0, 0, 0, -23, -23, 0, 0, 0, 0, // State 23 - -44, -44, -44, -44, 0, 0, 0, 0, 0, + -24, 0, 0, -24, -21, 0, 0, 0, -24, 0, 0, 0, 0, // State 24 - -27, -27, -27, -27, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, // State 25 - -28, -28, -28, -28, -28, 0, 0, 0, 0, + -34, -34, -34, -34, 0, 0, 0, -34, -34, 0, 0, 0, 0, // State 26 - 0, 0, 0, 32, 0, 0, 0, 0, 0, + 6, 0, 0, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, // State 27 - -9, 0, 0, 0, 0, -9, -9, -9, -9, + 0, 0, 0, 40, 0, 0, 0, 0, -26, 0, 0, 0, 0, // State 28 - -39, 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, // State 29 - -16, -16, -16, -16, 0, 0, 0, 0, 0, + -44, -44, -44, -44, 0, 0, 0, -44, -44, 0, 0, 0, 0, // State 30 - 5, 0, 0, 0, 0, 0, 0, 0, 0, + -46, -46, -46, -46, 0, 0, 0, -46, -46, 0, 0, 0, 0, // State 31 - -10, 0, 0, 0, 0, -10, -10, -10, -10, + 0, 0, 0, -49, 0, 0, 0, 0, -49, 0, 0, 0, 0, // State 32 - 5, 0, 0, -42, 0, 0, 0, 0, 0, + 0, 0, 0, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, // State 33 - 5, 39, 40, 0, 0, 0, 0, 0, 0, + -22, -22, -22, -22, 0, 0, 0, -22, -22, 0, 0, 0, 0, // State 34 - -18, -18, -18, -18, 0, 0, 0, 0, 0, + -60, -60, -60, -60, 0, 0, 0, -60, -60, 0, 0, 0, 0, // State 35 - -22, -22, -22, -22, 0, 0, 0, 0, 0, + -61, -61, -61, -61, 0, 0, 0, -61, -61, 0, 0, 0, 0, // State 36 - 5, 41, 42, 0, 0, 0, 0, 0, 0, + -41, -41, -41, -41, 0, 0, 0, -41, -41, 0, 0, 0, 0, // State 37 - -20, -20, -20, -20, 0, 0, 0, 0, 0, + -42, -42, -42, -42, -42, 0, 0, -42, -42, 0, 0, 0, 0, // State 38 - -17, -17, -17, -17, 0, 0, 0, 0, 0, + 0, 0, 0, 44, 0, 0, 0, 0, -28, 0, 0, 0, 0, // State 39 - -4, -4, 0, 0, 0, -4, -4, -4, -4, + -17, 0, 0, 0, 0, 0, -17, 0, -17, -17, -17, -17, -17, // State 40 - -19, -19, -19, -19, 0, 0, 0, 0, 0, + -55, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 41 - -5, -5, 0, 0, 0, -5, -5, -5, -5, + -24, -24, -24, -24, 0, 0, 0, -24, -24, 0, 0, 0, 0, + // State 42 + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 43 + -18, 0, 0, 0, 0, 0, -18, 0, -18, -18, -18, -18, -18, + // State 44 + 6, 0, 0, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, + // State 45 + 6, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 46 + -31, -31, -31, -31, 0, 0, 0, -31, -31, 0, 0, 0, 0, + // State 47 + -35, -35, -35, -35, 0, 0, 0, -35, -35, 0, 0, 0, 0, + // State 48 + 0, 0, 0, -54, 0, -54, 0, 0, -54, 0, 0, 0, 0, + // State 49 + 0, 0, 0, -45, 0, -45, 0, 0, -45, 0, 0, 0, 0, + // State 50 + 6, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 51 + -33, -33, -33, -33, 0, 0, 0, -33, -33, 0, 0, 0, 0, + // State 52 + -30, -30, -30, -30, 0, 0, 0, -30, -30, 0, 0, 0, 0, + // State 53 + -12, -12, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, + // State 54 + 0, 0, 0, -40, 0, 12, 0, 0, -40, 0, 0, 0, 0, + // State 55 + 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, + // State 56 + -32, -32, -32, -32, 0, 0, 0, -32, -32, 0, 0, 0, 0, + // State 57 + -13, -13, 0, 0, 0, 0, 0, 0, 0, -13, -13, -13, -13, + // State 58 + 0, 0, 0, -37, 0, 0, 0, 0, -37, 0, 0, 0, 0, + // State 59 + 0, 0, 0, -25, 0, -25, 0, 0, -25, 0, 0, 0, 0, + // State 60 + 0, 0, 0, -38, 0, 0, 0, 0, -38, 0, 0, 0, 0, + // State 61 + 0, 0, 0, -7, 0, -7, 0, 0, -7, 0, 0, 0, 0, + // State 62 + 0, 0, 0, -8, 0, -8, 0, 0, -8, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 9 + integer] + __ACTION[(state as usize) * 13 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 - -24, + -27, // State 1 - -26, + -29, // State 2 0, // State 3 @@ -4919,111 +11175,171 @@ mod __parse__File { // State 6 0, // State 7 - -38, + 0, // State 8 -39, // State 9 - -48, + 0, // State 10 - -15, + 0, // State 11 - -16, + 0, // State 12 0, // State 13 - -21, + 0, // State 14 - -41, + 0, // State 15 - -23, + 0, // State 16 0, // State 17 - -30, + -53, // State 18 - -31, + -36, // State 19 - -34, + -55, // State 20 - -40, + -67, // State 21 - -14, + -59, // State 22 - -43, + -23, // State 23 - -44, + -24, // State 24 - -27, + 0, // State 25 - -28, + -34, // State 26 - -25, + -57, // State 27 - -9, + -26, // State 28 0, // State 29 - -16, + -44, // State 30 - 0, + -46, // State 31 - -10, + -49, // State 32 - -42, + -56, // State 33 - 0, - // State 34 - -18, - // State 35 -22, + // State 34 + -60, + // State 35 + -61, // State 36 - 0, + -41, // State 37 - -20, + -42, // State 38 - -17, + -28, // State 39 - 0, + -17, // State 40 - -19, - // State 41 0, + // State 41 + -24, + // State 42 + 0, + // State 43 + -18, + // State 44 + -58, + // State 45 + 0, + // State 46 + -31, + // State 47 + -35, + // State 48 + -54, + // State 49 + -45, + // State 50 + 0, + // State 51 + -33, + // State 52 + -30, + // State 53 + 0, + // State 54 + -40, + // State 55 + 0, + // State 56 + -32, + // State 57 + 0, + // State 58 + -37, + // State 59 + -25, + // State 60 + -38, + // State 61 + -7, + // State 62 + -8, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 2 => 5, - 5 => 1, - 8 => 6, - 9 => 7, - 10 => match state { - 2 => 28, + 4 => 54, + 7 => 7, + 10 => 1, + 13 => 16, + 14 => 17, + 15 => 48, + 16 => match state { + 9 => 55, + _ => 18, + }, + 17 => match state { + 2 => 40, + _ => 19, + }, + 18 => 20, + 19 => 21, + 20 => 22, + 21 => match state { + 0..=1 | 9 => 23, + _ => 41, + }, + 22 => 24, + 23 => 25, + 24 => match state { + 10 => 58, + 11 => 60, + 14 => 61, + 15 => 62, _ => 8, }, - 11 => 9, - 12 => 10, - 13 => match state { - 2..=5 => 29, - _ => 11, + 25 => match state { + 3 => 6, + 12 => 14, + 13 => 15, + 2 => 42, + 4 => 44, + 5 => 45, + 7 => 50, + _ => 26, }, - 14 => 12, - 15 => 13, - 16 => match state { - 2 => 30, - 3 => 32, - 4 => 33, - 5 => 36, - _ => 14, + 27 => match state { + 1 => 38, + _ => 27, }, - 18 => match state { - 1 => 26, - _ => 15, - }, - 20 => 16, - 21 => 17, - 22 => 18, - 23 => 19, - 24 => 20, - 25 => 21, + 29 => 28, + 30 => 29, + 31 => 49, + 32 => 30, + 33 => 31, + 34 => 32, + 35 => 33, _ => 0, } } @@ -5034,6 +11350,10 @@ mod __parse__File { r###"",""###, r###"";""###, r###""=""###, + r###""else""###, + r###""if""###, + r###""{""###, + r###""}""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -5062,7 +11382,7 @@ mod __parse__File { type Token = Token<'input>; type TokenIndex = usize; type Symbol = __Symbol<'input>; - type Success = Vec; + type Success = Body; type StateIndex = i8; type Action = i8; type ReduceIndex = i8; @@ -5090,7 +11410,7 @@ mod __parse__File { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 9 - 1) + __action(state, 13 - 1) } #[inline] @@ -5158,10 +11478,14 @@ mod __parse__File { 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), + Token(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), _ => None, } } @@ -5174,8 +11498,8 @@ mod __parse__File { ) -> __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), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -5201,7 +11525,7 @@ mod __parse__File { >( &self, input: &'input str, - ) -> Result, __lalrpop_util::ParseError, &'static str>> + ) -> Result, &'static str>> { let mut __tokens = self.builder.matcher(input); __state_machine::Parser::drive( @@ -5222,7 +11546,7 @@ mod __parse__File { __states: &mut alloc::vec::Vec, __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, - ) -> Option,__lalrpop_util::ParseError, &'static str>>> + ) -> Option, &'static str>>> { let (__pop_states, __nonterminal) = match __action { 0 => { @@ -5367,12 +11691,7 @@ mod __parse__File { __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)); + __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 48 => { __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -5389,6 +11708,74 @@ mod __parse__File { 52 => { __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + // __File = File => ActionFn(0); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + return Some(Ok(__nt)); + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -5402,36 +11789,36 @@ mod __parse__File { fn __symbol_type_mismatch() -> ! { panic!("symbol type mismatch") } - fn __pop_Variant6< + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< '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), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant7< + fn __pop_Variant11< '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), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5439,7 +11826,7 @@ mod __parse__File { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Body, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), @@ -5450,134 +11837,178 @@ mod __parse__File { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Expr, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant1< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, 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) + ) -> (usize, Spanned, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant0< 'input, >( @@ -5598,13 +12029,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(32); + // ("else" ) = "else", SpBlock => ActionFn(45); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action32::<>(input, __sym0, __sym1); + let __nt = super::__action45::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -5617,12 +12048,15 @@ mod __parse__File { _: 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); + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -5633,13 +12067,12 @@ mod __parse__File { _: 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); + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (0, 1) } pub(crate) fn __reduce3< 'input, @@ -5650,15 +12083,17 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(47); - assert!(__symbols.len() >= 2); + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 2) } pub(crate) fn __reduce4< 'input, @@ -5669,16 +12104,12 @@ mod __parse__File { _: 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) + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) } pub(crate) fn __reduce5< 'input, @@ -5689,15 +12120,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(40); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 3) } pub(crate) fn __reduce6< 'input, @@ -5708,12 +12137,17 @@ mod __parse__File { _: 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); + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (0, 4) + (4, 4) } pub(crate) fn __reduce7< 'input, @@ -5724,13 +12158,18 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(39); + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 4) + (5, 4) } pub(crate) fn __reduce8< 'input, @@ -5741,14 +12180,14 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(51); + // ( ",") = SpExpr, "," => ActionFn(41); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant5(__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)); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } pub(crate) fn __reduce9< @@ -5760,16 +12199,12 @@ mod __parse__File { _: 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) + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) } pub(crate) fn __reduce10< 'input, @@ -5780,12 +12215,13 @@ mod __parse__File { _: 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) + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 6) } pub(crate) fn __reduce11< 'input, @@ -5796,12 +12232,15 @@ mod __parse__File { _: 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) + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 7) } pub(crate) fn __reduce12< 'input, @@ -5812,13 +12251,16 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AssignLhs = Name => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + (3, 7) } pub(crate) fn __reduce13< 'input, @@ -5829,13 +12271,15 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(20); - let __sym0 = __pop_Variant11(__symbols); + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -5846,13 +12290,12 @@ mod __parse__File { _: 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) + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 9) } pub(crate) fn __reduce15< 'input, @@ -5863,12 +12306,12 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(22); - let __sym0 = __pop_Variant11(__symbols); + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } pub(crate) fn __reduce16< @@ -5880,17 +12323,15 @@ mod __parse__File { _: 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); + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (4, 10) + (2, 10) } pub(crate) fn __reduce17< 'input, @@ -5901,14 +12342,14 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(64); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (3, 10) } @@ -5921,18 +12362,12 @@ mod __parse__File { _: 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) + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce19< 'input, @@ -5943,17 +12378,12 @@ mod __parse__File { _: 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) + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) } pub(crate) fn __reduce20< 'input, @@ -5964,13 +12394,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(17); - let __sym0 = __pop_Variant13(__symbols); + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__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) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) } pub(crate) fn __reduce21< 'input, @@ -5981,16 +12411,13 @@ mod __parse__File { _: 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); + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce22< 'input, @@ -6001,13 +12428,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(67); - let __sym0 = __pop_Variant3(__symbols); + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__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) + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce23< 'input, @@ -6018,12 +12445,13 @@ mod __parse__File { _: 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) + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce24< 'input, @@ -6034,15 +12462,16 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(69); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) } pub(crate) fn __reduce25< 'input, @@ -6053,13 +12482,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(70); - let __sym0 = __pop_Variant4(__symbols); + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) } pub(crate) fn __reduce26< 'input, @@ -6070,13 +12499,12 @@ mod __parse__File { _: 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) + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) } pub(crate) fn __reduce27< 'input, @@ -6087,13 +12515,15 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); - let __sym0 = __pop_Variant0(__symbols); + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__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) + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) } pub(crate) fn __reduce28< 'input, @@ -6104,13 +12534,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAssignLhs = Spanned => ActionFn(13); - let __sym0 = __pop_Variant12(__symbols); + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action13::<>(input, __sym0); + let __nt = super::__action105::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 14) + (1, 16) } pub(crate) fn __reduce29< 'input, @@ -6121,13 +12551,17 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 15) + (4, 17) } pub(crate) fn __reduce30< 'input, @@ -6138,13 +12572,16 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(15); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce31< 'input, @@ -6155,13 +12592,18 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(28); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 17) } pub(crate) fn __reduce32< 'input, @@ -6172,12 +12614,17 @@ mod __parse__File { _: 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) + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) } pub(crate) fn __reduce33< 'input, @@ -6188,13 +12635,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(10); - let __sym0 = __pop_Variant3(__symbols); + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } pub(crate) fn __reduce34< 'input, @@ -6205,13 +12652,16 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(36); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce35< 'input, @@ -6222,12 +12672,13 @@ mod __parse__File { _: 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) + // File = Body => 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, 18) } pub(crate) fn __reduce36< 'input, @@ -6238,13 +12689,18 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = AssignLhs => ActionFn(59); - let __sym0 = __pop_Variant6(__symbols); + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) } pub(crate) fn __reduce37< 'input, @@ -6255,13 +12711,19 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(60); - let __sym0 = __pop_Variant7(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) } pub(crate) fn __reduce38< 'input, @@ -6272,13 +12734,16 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(61); - let __sym0 = __pop_Variant8(__symbols); + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) } pub(crate) fn __reduce39< 'input, @@ -6289,13 +12754,17 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(62); - let __sym0 = __pop_Variant16(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) } pub(crate) fn __reduce40< 'input, @@ -6306,13 +12775,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(11); - let __sym0 = __pop_Variant1(__symbols); + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__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) + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } pub(crate) fn __reduce41< 'input, @@ -6323,16 +12792,13 @@ mod __parse__File { _: 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); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (3, 24) + (1, 21) } pub(crate) fn __reduce42< 'input, @@ -6343,13 +12809,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); - let __sym0 = __pop_Variant0(__symbols); + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__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) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) } pub(crate) fn __reduce43< 'input, @@ -6360,13 +12826,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); - let __sym0 = __pop_Variant0(__symbols); + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) } pub(crate) fn __reduce44< 'input, @@ -6377,13 +12843,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __AssignLhs = AssignLhs => ActionFn(4); - let __sym0 = __pop_Variant6(__symbols); + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__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) + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) } pub(crate) fn __reduce45< 'input, @@ -6394,13 +12860,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(8); - let __sym0 = __pop_Variant7(__symbols); + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) } pub(crate) fn __reduce46< 'input, @@ -6411,13 +12877,29 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(6); - let __sym0 = __pop_Variant8(__symbols); + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) + } + 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) + { + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) } pub(crate) fn __reduce48< 'input, @@ -6428,13 +12910,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAssignLhs = SpAssignLhs => ActionFn(3); - let __sym0 = __pop_Variant12(__symbols); + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) } pub(crate) fn __reduce49< 'input, @@ -6445,13 +12927,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(7); - let __sym0 = __pop_Variant13(__symbols); + // SpStmt? = SpStmt => ActionFn(53); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action53::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } pub(crate) fn __reduce50< 'input, @@ -6462,13 +12944,12 @@ mod __parse__File { _: 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) + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) } pub(crate) fn __reduce51< 'input, @@ -6479,13 +12960,13 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpStmt = SpStmt => ActionFn(1); - let __sym0 = __pop_Variant3(__symbols); + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__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) + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) } pub(crate) fn __reduce52< 'input, @@ -6496,19 +12977,362 @@ mod __parse__File { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant16(__symbols); + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__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) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) } } pub use self::__parse__File::FileParser; #[cfg_attr(rustfmt, rustfmt_skip)] -mod __parse__SpAssignLhs { +mod __parse__IfStmt { #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)] use std::str::FromStr; @@ -6525,60 +13349,334 @@ mod __parse__SpAssignLhs { 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), + Variant1(Spanned), + Variant2(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, // State 1 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, // State 2 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, // State 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, // State 4 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -39, 0, 8, 0, 0, -39, 0, 0, 0, 0, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 36, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, + // State 6 + 4, 0, 0, 0, 0, 0, 2, 0, -27, 26, 27, 28, 29, + // State 7 + 0, 0, 0, 0, 0, 0, 12, 7, 0, 0, 0, 0, 0, + // State 8 + 4, 50, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, + // State 9 + 4, 0, 0, 0, 0, 0, 2, 0, -29, 26, 27, 28, 29, + // State 10 + 0, 0, 0, 0, 0, 0, 14, 7, 0, 0, 0, 0, 0, + // State 11 + 4, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, + // State 12 + 4, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, + // State 13 + 4, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, + // State 14 + 6, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, + // State 15 + 6, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, + // State 16 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 17 + -53, -53, -53, -53, 0, 0, 0, -53, -53, 0, 0, 0, 0, + // State 18 + -55, -55, -55, -55, 0, 0, 0, -55, -55, 0, 0, 0, 0, + // State 19 + -23, -23, -23, -23, 0, 0, 0, -23, -23, 0, 0, 0, 0, + // State 20 + -24, -24, -24, -24, 0, 0, 0, -24, -24, 0, 0, 0, 0, + // State 21 + -34, -34, -34, -34, 0, 0, 0, -34, -34, 0, 0, 0, 0, + // State 22 + -44, -44, -44, -44, 0, 0, 0, -44, -44, 0, 0, 0, 0, + // State 23 + -46, -46, -46, -46, 0, 0, 0, -46, -46, 0, 0, 0, 0, + // State 24 + -22, -22, -22, -22, 0, 0, 0, -22, -22, 0, 0, 0, 0, + // State 25 + -60, -60, -60, -60, 0, 0, 0, -60, -60, 0, 0, 0, 0, + // State 26 + -61, -61, -61, -61, 0, 0, 0, -61, -61, 0, 0, 0, 0, + // State 27 + -41, -41, -41, -41, 0, 0, 0, -41, -41, 0, 0, 0, 0, + // State 28 + -42, -42, -42, -42, -42, 0, 0, -42, -42, 0, 0, 0, 0, + // State 29 + 0, 0, 0, -54, 0, -54, 0, 0, -54, 0, 0, 0, 0, + // State 30 + 0, 0, 0, -45, 0, -45, 0, 0, -45, 0, 0, 0, 0, + // State 31 + -55, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 32 + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 33 + 0, 0, 0, -40, 0, 11, 0, 0, -40, 0, 0, 0, 0, + // State 34 + 6, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 35 + -31, -31, -31, -31, 0, 0, 0, -31, -31, 0, 0, 0, 0, + // State 36 + 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, + // State 37 + 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, + // State 38 + 0, 0, 0, -59, 0, 0, 0, 0, -59, 0, 0, 0, 0, + // State 39 + -24, 0, 0, -24, -21, 0, 0, 0, -24, 0, 0, 0, 0, + // State 40 + 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, + // State 41 + 6, 0, 0, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, + // State 42 + 0, 0, 0, 55, 0, 0, 0, 0, -26, 0, 0, 0, 0, + // State 43 + 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, + // State 44 + 0, 0, 0, -49, 0, 0, 0, 0, -49, 0, 0, 0, 0, + // State 45 + 0, 0, 0, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, + // State 46 + -35, -35, -35, -35, 0, 0, 0, -35, -35, 0, 0, 0, 0, + // State 47 + 0, 0, 0, -37, 0, 0, 0, 0, -37, 0, 0, 0, 0, + // State 48 + 6, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 49 + -33, -33, -33, -33, 0, 0, 0, -33, -33, 0, 0, 0, 0, + // State 50 + -30, -30, -30, -30, 0, 0, 0, -30, -30, 0, 0, 0, 0, + // State 51 + -12, -12, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, + // State 52 + 0, 0, 0, 59, 0, 0, 0, 0, -28, 0, 0, 0, 0, + // State 53 + 0, 0, 0, -25, 0, -25, 0, 0, -25, 0, 0, 0, 0, + // State 54 + -17, 0, 0, 0, 0, 0, -17, 0, -17, -17, -17, -17, -17, + // State 55 + 0, 0, 0, -38, 0, 0, 0, 0, -38, 0, 0, 0, 0, + // State 56 + -32, -32, -32, -32, 0, 0, 0, -32, -32, 0, 0, 0, 0, + // State 57 + -13, -13, 0, 0, 0, 0, 0, 0, 0, -13, -13, -13, -13, + // State 58 + -18, 0, 0, 0, 0, 0, -18, 0, -18, -18, -18, -18, -18, + // State 59 + 6, 0, 0, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, + // State 60 + 0, 0, 0, -7, 0, -7, 0, 0, -7, 0, 0, 0, 0, + // State 61 + 0, 0, 0, -8, 0, -8, 0, 0, -8, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 9 + integer] + __ACTION[(state as usize) * 13 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 0, // State 1 - -37, + 0, // State 2 - -13, + 0, // State 3 - -49, + 0, // State 4 - -29, + -39, // State 5 - -28, + 0, + // State 6 + 0, + // State 7 + 0, + // State 8 + 0, + // State 9 + 0, + // State 10 + 0, + // State 11 + 0, + // State 12 + 0, + // State 13 + 0, + // State 14 + 0, + // State 15 + 0, + // State 16 + -68, + // State 17 + 0, + // State 18 + 0, + // State 19 + 0, + // State 20 + 0, + // State 21 + 0, + // State 22 + 0, + // State 23 + 0, + // State 24 + 0, + // State 25 + 0, + // State 26 + 0, + // State 27 + 0, + // State 28 + 0, + // State 29 + -54, + // State 30 + -45, + // State 31 + 0, + // State 32 + 0, + // State 33 + -40, + // State 34 + 0, + // State 35 + 0, + // State 36 + 0, + // State 37 + 0, + // State 38 + 0, + // State 39 + 0, + // State 40 + 0, + // State 41 + 0, + // State 42 + 0, + // State 43 + 0, + // State 44 + 0, + // State 45 + 0, + // State 46 + 0, + // State 47 + -37, + // State 48 + 0, + // State 49 + 0, + // State 50 + 0, + // State 51 + 0, + // State 52 + 0, + // State 53 + -25, + // State 54 + 0, + // State 55 + -38, + // State 56 + 0, + // State 57 + 0, + // State 58 + 0, + // State 59 + 0, + // State 60 + -7, + // State 61 + -8, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 8 => 1, - 13 => 2, - 14 => 3, - 20 => 4, + 4 => 33, + 7 => 8, + 10 => 9, + 13 => 36, + 14 => 17, + 15 => 29, + 16 => 37, + 17 => match state { + 3 => 31, + _ => 18, + }, + 19 => match state { + 0 => 16, + _ => 38, + }, + 20 => 19, + 21 => match state { + 6 | 9 => 39, + _ => 20, + }, + 22 => 40, + 23 => 21, + 24 => match state { + 7 => 47, + 10 => 55, + 14 => 60, + 15 => 61, + _ => 4, + }, + 25 => match state { + 1 => 2, + 11 => 14, + 13 => 15, + 3 => 32, + 5 => 34, + 8 => 48, + 12 => 59, + _ => 41, + }, + 27 => match state { + 9 => 52, + _ => 42, + }, + 29 => 43, + 30 => 22, + 31 => 30, + 32 => 23, + 33 => 44, + 34 => 45, + 35 => 24, _ => 0, } } @@ -6589,6 +13687,10 @@ mod __parse__SpAssignLhs { r###"",""###, r###"";""###, r###""=""###, + r###""else""###, + r###""if""###, + r###""{""###, + r###""}""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -6617,7 +13719,7 @@ mod __parse__SpAssignLhs { type Token = Token<'input>; type TokenIndex = usize; type Symbol = __Symbol<'input>; - type Success = Spanned; + type Success = Stmt; type StateIndex = i8; type Action = i8; type ReduceIndex = i8; @@ -6645,7 +13747,7 @@ mod __parse__SpAssignLhs { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 9 - 1) + __action(state, 13 - 1) } #[inline] @@ -6713,10 +13815,14 @@ mod __parse__SpAssignLhs { 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), + Token(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), _ => None, } } @@ -6729,8 +13835,2075 @@ mod __parse__SpAssignLhs { ) -> __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), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + } + } + pub struct IfStmtParser { + builder: __lalrpop_util::lexer::MatcherBuilder, + _priv: (), + } + + impl IfStmtParser { + pub fn new() -> IfStmtParser { + let __builder = super::__intern_token::new_builder(); + IfStmtParser { + 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 => { + __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 => { + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 52 => { + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + return Some(Ok(__nt)); + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(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_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, AssignLhs, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant11< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Atom, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Body, 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, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__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_Variant5< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__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) + { + // ("else" ) = "else", SpBlock => ActionFn(45); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action45::<>(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) + { + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (2, 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) + { + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (0, 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) + { + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 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) + { + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) + } + 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) + { + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 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) + { + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (4, 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) + { + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (5, 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) + { + // ( ",") = SpExpr, "," => ActionFn(41); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__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) + { + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) + } + 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) + { + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 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) + { + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 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) + { + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (3, 7) + } + 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) + { + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (2, 8) + } + 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) + { + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 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) + { + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__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) + { + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (2, 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) + { + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action95::<>(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) + { + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) + } + 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) + { + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) + } + 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) + { + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) + } + 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) + { + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) + } + 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) + { + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) + } + 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) + { + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) + } + 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) + { + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) + } + 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) + { + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action105::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) + } + 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) + { + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) + } + 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) + { + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) + } + 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) + { + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 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) + { + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 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) + { + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) + } + 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) + { + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) + } + 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) + { + // File = Body => 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, 18) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) + } + 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) + { + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) + } + 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) + { + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) + } + 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) + { + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) + } + 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) + { + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) + } + 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) + { + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) + } + 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) + { + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) + } + 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) + { + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) + } + 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) + { + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) + } + 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) + { + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + 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) + { + // SpStmt? = SpStmt => 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::Variant20(__nt), __end)); + (1, 28) + } + 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) + { + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) + } + 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) + { + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) + } + 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) + { + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) + } +} +pub use self::__parse__IfStmt::IfStmtParser; + +#[cfg_attr(rustfmt, rustfmt_skip)] +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; + 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(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), + } + const __ACTION: &[i8] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, + // State 1 + 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, + // State 3 + 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, + // State 5 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + fn __action(state: i8, integer: usize) -> i8 { + __ACTION[(state as usize) * 13 + integer] + } + const __EOF_ACTION: &[i8] = &[ + // State 0 + 0, + // State 1 + -52, + // State 2 + -21, + // State 3 + -69, + // State 4 + -43, + // State 5 + -42, + ]; + fn __goto(state: i8, nt: usize) -> i8 { + match nt { + 13 => 1, + 21 => 2, + 22 => 3, + 29 => 4, + _ => 0, + } + } + fn __expected_tokens(__state: i8) -> alloc::vec::Vec { + const __TERMINAL: &[&str] = &[ + r###""(""###, + r###"")""###, + r###"",""###, + r###"";""###, + r###""=""###, + r###""else""###, + r###""if""###, + 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, 13 - 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(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), + _ => 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 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -6925,12 +16098,7 @@ mod __parse__SpAssignLhs { __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)); + __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 49 => { __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -6944,6 +16112,74 @@ mod __parse__SpAssignLhs { 52 => { __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + // __SpAssignLhs = SpAssignLhs => ActionFn(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + return Some(Ok(__nt)); + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -6957,36 +16193,36 @@ mod __parse__SpAssignLhs { fn __symbol_type_mismatch() -> ! { panic!("symbol type mismatch") } - fn __pop_Variant6< + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< '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), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant7< + fn __pop_Variant11< '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), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -6994,7 +16230,7 @@ mod __parse__SpAssignLhs { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Body, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), @@ -7005,134 +16241,178 @@ mod __parse__SpAssignLhs { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Expr, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant1< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, 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) + ) -> (usize, Spanned, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant0< 'input, >( @@ -7153,13 +16433,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(32); + // ("else" ) = "else", SpBlock => ActionFn(45); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action32::<>(input, __sym0, __sym1); + let __nt = super::__action45::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -7172,12 +16452,15 @@ mod __parse__SpAssignLhs { _: 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); + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -7188,13 +16471,12 @@ mod __parse__SpAssignLhs { _: 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); + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (0, 1) } pub(crate) fn __reduce3< 'input, @@ -7205,15 +16487,17 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(47); - assert!(__symbols.len() >= 2); + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 2) } pub(crate) fn __reduce4< 'input, @@ -7224,16 +16508,12 @@ mod __parse__SpAssignLhs { _: 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) + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) } pub(crate) fn __reduce5< 'input, @@ -7244,15 +16524,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(40); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 3) } pub(crate) fn __reduce6< 'input, @@ -7263,12 +16541,17 @@ mod __parse__SpAssignLhs { _: 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); + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (0, 4) + (4, 4) } pub(crate) fn __reduce7< 'input, @@ -7279,13 +16562,18 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(39); + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 4) + (5, 4) } pub(crate) fn __reduce8< 'input, @@ -7296,14 +16584,14 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(51); + // ( ",") = SpExpr, "," => ActionFn(41); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant5(__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)); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } pub(crate) fn __reduce9< @@ -7315,16 +16603,12 @@ mod __parse__SpAssignLhs { _: 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) + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) } pub(crate) fn __reduce10< 'input, @@ -7335,12 +16619,13 @@ mod __parse__SpAssignLhs { _: 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) + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 6) } pub(crate) fn __reduce11< 'input, @@ -7351,12 +16636,15 @@ mod __parse__SpAssignLhs { _: 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) + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 7) } pub(crate) fn __reduce12< 'input, @@ -7367,13 +16655,16 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AssignLhs = Name => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + (3, 7) } pub(crate) fn __reduce13< 'input, @@ -7384,13 +16675,15 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(20); - let __sym0 = __pop_Variant11(__symbols); + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -7401,13 +16694,12 @@ mod __parse__SpAssignLhs { _: 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) + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 9) } pub(crate) fn __reduce15< 'input, @@ -7418,12 +16710,12 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(22); - let __sym0 = __pop_Variant11(__symbols); + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } pub(crate) fn __reduce16< @@ -7435,17 +16727,15 @@ mod __parse__SpAssignLhs { _: 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); + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (4, 10) + (2, 10) } pub(crate) fn __reduce17< 'input, @@ -7456,14 +16746,14 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(64); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (3, 10) } @@ -7476,18 +16766,12 @@ mod __parse__SpAssignLhs { _: 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) + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce19< 'input, @@ -7498,17 +16782,12 @@ mod __parse__SpAssignLhs { _: 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) + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) } pub(crate) fn __reduce20< 'input, @@ -7519,13 +16798,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(17); - let __sym0 = __pop_Variant13(__symbols); + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__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) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) } pub(crate) fn __reduce21< 'input, @@ -7536,16 +16815,13 @@ mod __parse__SpAssignLhs { _: 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); + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce22< 'input, @@ -7556,13 +16832,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(67); - let __sym0 = __pop_Variant3(__symbols); + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__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) + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce23< 'input, @@ -7573,12 +16849,13 @@ mod __parse__SpAssignLhs { _: 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) + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce24< 'input, @@ -7589,15 +16866,16 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(69); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) } pub(crate) fn __reduce25< 'input, @@ -7608,13 +16886,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(70); - let __sym0 = __pop_Variant4(__symbols); + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) } pub(crate) fn __reduce26< 'input, @@ -7625,13 +16903,12 @@ mod __parse__SpAssignLhs { _: 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) + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) } pub(crate) fn __reduce27< 'input, @@ -7642,13 +16919,15 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); - let __sym0 = __pop_Variant0(__symbols); + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__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) + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) } pub(crate) fn __reduce28< 'input, @@ -7659,13 +16938,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAssignLhs = Spanned => ActionFn(13); - let __sym0 = __pop_Variant12(__symbols); + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action13::<>(input, __sym0); + let __nt = super::__action105::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 14) + (1, 16) } pub(crate) fn __reduce29< 'input, @@ -7676,13 +16955,17 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 15) + (4, 17) } pub(crate) fn __reduce30< 'input, @@ -7693,13 +16976,16 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(15); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce31< 'input, @@ -7710,13 +16996,18 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(28); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 17) } pub(crate) fn __reduce32< 'input, @@ -7727,12 +17018,17 @@ mod __parse__SpAssignLhs { _: 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) + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) } pub(crate) fn __reduce33< 'input, @@ -7743,13 +17039,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(10); - let __sym0 = __pop_Variant3(__symbols); + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } pub(crate) fn __reduce34< 'input, @@ -7760,13 +17056,16 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(36); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce35< 'input, @@ -7777,12 +17076,13 @@ mod __parse__SpAssignLhs { _: 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) + // File = Body => 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, 18) } pub(crate) fn __reduce36< 'input, @@ -7793,13 +17093,18 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = AssignLhs => ActionFn(59); - let __sym0 = __pop_Variant6(__symbols); + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) } pub(crate) fn __reduce37< 'input, @@ -7810,13 +17115,19 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(60); - let __sym0 = __pop_Variant7(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) } pub(crate) fn __reduce38< 'input, @@ -7827,13 +17138,16 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(61); - let __sym0 = __pop_Variant8(__symbols); + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) } pub(crate) fn __reduce39< 'input, @@ -7844,13 +17158,17 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(62); - let __sym0 = __pop_Variant16(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) } pub(crate) fn __reduce40< 'input, @@ -7861,13 +17179,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(11); - let __sym0 = __pop_Variant1(__symbols); + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__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) + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } pub(crate) fn __reduce41< 'input, @@ -7878,16 +17196,13 @@ mod __parse__SpAssignLhs { _: 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); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (3, 24) + (1, 21) } pub(crate) fn __reduce42< 'input, @@ -7898,13 +17213,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); - let __sym0 = __pop_Variant0(__symbols); + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__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) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) } pub(crate) fn __reduce43< 'input, @@ -7915,13 +17230,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); - let __sym0 = __pop_Variant0(__symbols); + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) } pub(crate) fn __reduce44< 'input, @@ -7932,13 +17247,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __AssignLhs = AssignLhs => ActionFn(4); - let __sym0 = __pop_Variant6(__symbols); + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__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) + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) } pub(crate) fn __reduce45< 'input, @@ -7949,13 +17264,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(8); - let __sym0 = __pop_Variant7(__symbols); + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) } pub(crate) fn __reduce46< 'input, @@ -7966,13 +17281,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(6); - let __sym0 = __pop_Variant8(__symbols); + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) } pub(crate) fn __reduce47< 'input, @@ -7983,13 +17298,29 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __File = File => ActionFn(0); - let __sym0 = __pop_Variant9(__symbols); + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) + } + 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) + { + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) } pub(crate) fn __reduce49< 'input, @@ -8000,13 +17331,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(7); - let __sym0 = __pop_Variant13(__symbols); + // SpStmt? = SpStmt => ActionFn(53); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action53::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } pub(crate) fn __reduce50< 'input, @@ -8017,13 +17348,12 @@ mod __parse__SpAssignLhs { _: 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) + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) } pub(crate) fn __reduce51< 'input, @@ -8034,13 +17364,13 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpStmt = SpStmt => ActionFn(1); - let __sym0 = __pop_Variant3(__symbols); + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__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) + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) } pub(crate) fn __reduce52< 'input, @@ -8051,13 +17381,356 @@ mod __parse__SpAssignLhs { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant16(__symbols); + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__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) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) } } pub use self::__parse__SpAssignLhs::SpAssignLhsParser; @@ -8080,82 +17753,86 @@ mod __parse__SpAtom { 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), + Variant1(Spanned), + Variant2(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 0, 8, 9, 10, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, // State 1 - 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, // State 3 - 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, // State 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 9 + integer] + __ACTION[(state as usize) * 13 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 0, // State 1 - -38, + -53, // State 2 - -15, + -23, // State 3 - -16, + -24, // State 4 - -50, + -70, // State 5 - -30, - // State 6 - -14, - // State 7 - -43, - // State 8 -44, + // State 6 + -22, + // State 7 + -60, + // State 8 + -61, // State 9 - -27, + -41, // State 10 - -28, + -42, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 9 => 1, - 12 => 2, - 13 => 3, - 15 => 4, - 21 => 5, - 25 => 6, + 14 => 1, + 20 => 2, + 21 => 3, + 23 => 4, + 30 => 5, + 35 => 6, _ => 0, } } @@ -8166,6 +17843,10 @@ mod __parse__SpAtom { r###"",""###, r###"";""###, r###""=""###, + r###""else""###, + r###""if""###, + r###""{""###, + r###""}""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -8222,7 +17903,7 @@ mod __parse__SpAtom { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 9 - 1) + __action(state, 13 - 1) } #[inline] @@ -8290,10 +17971,14 @@ mod __parse__SpAtom { 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), + Token(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), _ => None, } } @@ -8306,8 +17991,8 @@ mod __parse__SpAtom { ) -> __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), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -8505,12 +18190,7 @@ mod __parse__SpAtom { __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)); + __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 50 => { __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -8521,6 +18201,74 @@ mod __parse__SpAtom { 52 => { __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + // __SpAtom = SpAtom => ActionFn(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + return Some(Ok(__nt)); + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -8534,36 +18282,36 @@ mod __parse__SpAtom { fn __symbol_type_mismatch() -> ! { panic!("symbol type mismatch") } - fn __pop_Variant6< + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< '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), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant7< + fn __pop_Variant11< '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), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -8571,7 +18319,7 @@ mod __parse__SpAtom { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Body, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), @@ -8582,134 +18330,178 @@ mod __parse__SpAtom { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Expr, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant1< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, 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) + ) -> (usize, Spanned, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant0< 'input, >( @@ -8730,13 +18522,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(32); + // ("else" ) = "else", SpBlock => ActionFn(45); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action32::<>(input, __sym0, __sym1); + let __nt = super::__action45::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -8749,12 +18541,15 @@ mod __parse__SpAtom { _: 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); + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -8765,13 +18560,12 @@ mod __parse__SpAtom { _: 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); + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (0, 1) } pub(crate) fn __reduce3< 'input, @@ -8782,15 +18576,17 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(47); - assert!(__symbols.len() >= 2); + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 2) } pub(crate) fn __reduce4< 'input, @@ -8801,16 +18597,12 @@ mod __parse__SpAtom { _: 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) + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) } pub(crate) fn __reduce5< 'input, @@ -8821,15 +18613,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(40); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 3) } pub(crate) fn __reduce6< 'input, @@ -8840,12 +18630,17 @@ mod __parse__SpAtom { _: 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); + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (0, 4) + (4, 4) } pub(crate) fn __reduce7< 'input, @@ -8856,13 +18651,18 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(39); + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 4) + (5, 4) } pub(crate) fn __reduce8< 'input, @@ -8873,14 +18673,14 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(51); + // ( ",") = SpExpr, "," => ActionFn(41); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant5(__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)); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } pub(crate) fn __reduce9< @@ -8892,16 +18692,12 @@ mod __parse__SpAtom { _: 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) + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) } pub(crate) fn __reduce10< 'input, @@ -8912,12 +18708,13 @@ mod __parse__SpAtom { _: 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) + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 6) } pub(crate) fn __reduce11< 'input, @@ -8928,12 +18725,15 @@ mod __parse__SpAtom { _: 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) + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 7) } pub(crate) fn __reduce12< 'input, @@ -8944,13 +18744,16 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AssignLhs = Name => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + (3, 7) } pub(crate) fn __reduce13< 'input, @@ -8961,13 +18764,15 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(20); - let __sym0 = __pop_Variant11(__symbols); + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -8978,13 +18783,12 @@ mod __parse__SpAtom { _: 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) + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 9) } pub(crate) fn __reduce15< 'input, @@ -8995,12 +18799,12 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(22); - let __sym0 = __pop_Variant11(__symbols); + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } pub(crate) fn __reduce16< @@ -9012,17 +18816,15 @@ mod __parse__SpAtom { _: 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); + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (4, 10) + (2, 10) } pub(crate) fn __reduce17< 'input, @@ -9033,14 +18835,14 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(64); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (3, 10) } @@ -9053,18 +18855,12 @@ mod __parse__SpAtom { _: 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) + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce19< 'input, @@ -9075,17 +18871,12 @@ mod __parse__SpAtom { _: 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) + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) } pub(crate) fn __reduce20< 'input, @@ -9096,13 +18887,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(17); - let __sym0 = __pop_Variant13(__symbols); + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__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) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) } pub(crate) fn __reduce21< 'input, @@ -9113,16 +18904,13 @@ mod __parse__SpAtom { _: 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); + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce22< 'input, @@ -9133,13 +18921,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(67); - let __sym0 = __pop_Variant3(__symbols); + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__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) + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce23< 'input, @@ -9150,12 +18938,13 @@ mod __parse__SpAtom { _: 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) + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce24< 'input, @@ -9166,15 +18955,16 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(69); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) } pub(crate) fn __reduce25< 'input, @@ -9185,13 +18975,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(70); - let __sym0 = __pop_Variant4(__symbols); + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) } pub(crate) fn __reduce26< 'input, @@ -9202,13 +18992,12 @@ mod __parse__SpAtom { _: 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) + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) } pub(crate) fn __reduce27< 'input, @@ -9219,13 +19008,15 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); - let __sym0 = __pop_Variant0(__symbols); + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__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) + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) } pub(crate) fn __reduce28< 'input, @@ -9236,13 +19027,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAssignLhs = Spanned => ActionFn(13); - let __sym0 = __pop_Variant12(__symbols); + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action13::<>(input, __sym0); + let __nt = super::__action105::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 14) + (1, 16) } pub(crate) fn __reduce29< 'input, @@ -9253,13 +19044,17 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 15) + (4, 17) } pub(crate) fn __reduce30< 'input, @@ -9270,13 +19065,16 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(15); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce31< 'input, @@ -9287,13 +19085,18 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(28); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 17) } pub(crate) fn __reduce32< 'input, @@ -9304,12 +19107,17 @@ mod __parse__SpAtom { _: 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) + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) } pub(crate) fn __reduce33< 'input, @@ -9320,13 +19128,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(10); - let __sym0 = __pop_Variant3(__symbols); + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } pub(crate) fn __reduce34< 'input, @@ -9337,13 +19145,16 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(36); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce35< 'input, @@ -9354,12 +19165,13 @@ mod __parse__SpAtom { _: 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) + // File = Body => 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, 18) } pub(crate) fn __reduce36< 'input, @@ -9370,13 +19182,18 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = AssignLhs => ActionFn(59); - let __sym0 = __pop_Variant6(__symbols); + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) } pub(crate) fn __reduce37< 'input, @@ -9387,13 +19204,19 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(60); - let __sym0 = __pop_Variant7(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) } pub(crate) fn __reduce38< 'input, @@ -9404,13 +19227,16 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(61); - let __sym0 = __pop_Variant8(__symbols); + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) } pub(crate) fn __reduce39< 'input, @@ -9421,13 +19247,17 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(62); - let __sym0 = __pop_Variant16(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) } pub(crate) fn __reduce40< 'input, @@ -9438,13 +19268,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(11); - let __sym0 = __pop_Variant1(__symbols); + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__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) + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } pub(crate) fn __reduce41< 'input, @@ -9455,16 +19285,13 @@ mod __parse__SpAtom { _: 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); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (3, 24) + (1, 21) } pub(crate) fn __reduce42< 'input, @@ -9475,13 +19302,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); - let __sym0 = __pop_Variant0(__symbols); + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__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) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) } pub(crate) fn __reduce43< 'input, @@ -9492,13 +19319,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); - let __sym0 = __pop_Variant0(__symbols); + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) } pub(crate) fn __reduce44< 'input, @@ -9509,13 +19336,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __AssignLhs = AssignLhs => ActionFn(4); - let __sym0 = __pop_Variant6(__symbols); + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__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) + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) } pub(crate) fn __reduce45< 'input, @@ -9526,13 +19353,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(8); - let __sym0 = __pop_Variant7(__symbols); + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) } pub(crate) fn __reduce46< 'input, @@ -9543,13 +19370,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(6); - let __sym0 = __pop_Variant8(__symbols); + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) } pub(crate) fn __reduce47< 'input, @@ -9560,13 +19387,12 @@ mod __parse__SpAtom { _: 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) + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) } pub(crate) fn __reduce48< 'input, @@ -9577,13 +19403,30 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAssignLhs = SpAssignLhs => ActionFn(3); - let __sym0 = __pop_Variant12(__symbols); + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + 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) + { + // SpStmt? = SpStmt => 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::Variant20(__nt), __end)); + (1, 28) } pub(crate) fn __reduce50< 'input, @@ -9594,13 +19437,12 @@ mod __parse__SpAtom { _: 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) + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) } pub(crate) fn __reduce51< 'input, @@ -9611,13 +19453,13 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpStmt = SpStmt => ActionFn(1); - let __sym0 = __pop_Variant3(__symbols); + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__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) + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) } pub(crate) fn __reduce52< 'input, @@ -9628,19 +19470,362 @@ mod __parse__SpAtom { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant16(__symbols); + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__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) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) } } pub use self::__parse__SpAtom::SpAtomParser; #[cfg_attr(rustfmt, rustfmt_skip)] -mod __parse__SpExpr { +mod __parse__SpBlock { #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)] use std::str::FromStr; @@ -9657,83 +19842,155 @@ mod __parse__SpExpr { 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), + Variant1(Spanned), + Variant2(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), } const __ACTION: &[i8] = &[ // State 0 - 2, 0, 0, 0, 0, 14, 15, 16, 17, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // State 1 - 2, 0, 0, 0, 0, 14, 15, 16, 17, + 4, 0, 0, 0, 0, 0, 5, 0, -27, 37, 38, 39, 40, // State 2 - 2, 21, 0, 0, 0, 14, 15, 16, 17, + 4, 0, 0, 0, 0, 0, 5, 0, -29, 37, 38, 39, 40, // State 3 - 2, 24, 0, 0, 0, 14, 15, 16, 17, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, // State 4 - -38, -38, -38, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, // State 5 - -39, -39, -39, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, // State 6 - -15, -15, -15, 0, 0, 0, 0, 0, 0, + 4, 50, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, // State 7 - -16, -16, -16, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // State 8 - -21, -21, -21, 0, 0, 0, 0, 0, 0, + 4, 53, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, // State 9 - 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -39, 0, 11, 0, 0, -39, 0, 0, 0, 0, // State 10 - -30, -30, -30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 0, 0, // State 11 - -31, -31, -31, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 0, 0, // State 12 - -14, -14, -14, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, // State 13 - -43, -43, -43, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, // State 14 - -44, -44, -44, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // State 15 - -27, -27, -27, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, // State 16 - -28, -28, -28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -54, 0, -54, 0, 0, -54, 0, 0, 0, 0, // State 17 - -39, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 18 - 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -45, 0, -45, 0, 0, -45, 0, 0, 0, 0, // State 19 - 3, 25, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, // State 20 - -18, -18, -18, 0, 0, 0, 0, 0, 0, + -53, -53, -53, -53, 0, 0, 0, -53, -53, 0, 0, 0, 0, // State 21 - -22, -22, -22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, // State 22 - 3, 27, 28, 0, 0, 0, 0, 0, 0, + -55, -55, -55, -55, 0, 0, 0, -55, -55, 0, 0, 0, 0, // State 23 - -20, -20, -20, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -59, 0, 0, 0, 0, -59, 0, 0, 0, 0, // State 24 - -17, -17, -17, 0, 0, 0, 0, 0, 0, + -23, -23, -23, -23, 0, 0, 0, -23, -23, 0, 0, 0, 0, // State 25 - -4, -4, 0, 0, 0, -4, -4, -4, -4, + -24, 0, 0, -24, -21, 0, 0, 0, -24, 0, 0, 0, 0, // State 26 - -19, -19, -19, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, // State 27 - -5, -5, 0, 0, 0, -5, -5, -5, -5, + -34, -34, -34, -34, 0, 0, 0, -34, -34, 0, 0, 0, 0, + // State 28 + 7, 0, 0, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, + // State 29 + 0, 0, 0, 43, 0, 0, 0, 0, -26, 0, 0, 0, 0, + // State 30 + 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, + // State 31 + -44, -44, -44, -44, 0, 0, 0, -44, -44, 0, 0, 0, 0, + // State 32 + -46, -46, -46, -46, 0, 0, 0, -46, -46, 0, 0, 0, 0, + // State 33 + 0, 0, 0, -49, 0, 0, 0, 0, -49, 0, 0, 0, 0, + // State 34 + 0, 0, 0, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, + // State 35 + -22, -22, -22, -22, 0, 0, 0, -22, -22, 0, 0, 0, 0, + // State 36 + -60, -60, -60, -60, 0, 0, 0, -60, -60, 0, 0, 0, 0, + // State 37 + -61, -61, -61, -61, 0, 0, 0, -61, -61, 0, 0, 0, 0, + // State 38 + -41, -41, -41, -41, 0, 0, 0, -41, -41, 0, 0, 0, 0, + // State 39 + -42, -42, -42, -42, -42, 0, 0, -42, -42, 0, 0, 0, 0, + // State 40 + 0, 0, 0, 47, 0, 0, 0, 0, -28, 0, 0, 0, 0, + // State 41 + 0, 0, 0, -25, 0, -25, 0, 0, -25, 0, 0, 0, 0, + // State 42 + -17, 0, 0, 0, 0, 0, -17, 0, -17, -17, -17, -17, -17, + // State 43 + -55, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 44 + -24, -24, -24, -24, 0, 0, 0, -24, -24, 0, 0, 0, 0, + // State 45 + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 46 + -18, 0, 0, 0, 0, 0, -18, 0, -18, -18, -18, -18, -18, + // State 47 + 7, 0, 0, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, + // State 48 + 7, 54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 49 + -31, -31, -31, -31, 0, 0, 0, -31, -31, 0, 0, 0, 0, + // State 50 + -35, -35, -35, -35, 0, 0, 0, -35, -35, 0, 0, 0, 0, + // State 51 + 7, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 52 + -33, -33, -33, -33, 0, 0, 0, -33, -33, 0, 0, 0, 0, + // State 53 + -30, -30, -30, -30, 0, 0, 0, -30, -30, 0, 0, 0, 0, + // State 54 + -12, -12, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, + // State 55 + 0, 0, 0, -40, 0, 12, 0, 0, -40, 0, 0, 0, 0, + // State 56 + -32, -32, -32, -32, 0, 0, 0, -32, -32, 0, 0, 0, 0, + // State 57 + -13, -13, 0, 0, 0, 0, 0, 0, 0, -13, -13, -13, -13, + // State 58 + 0, 0, 0, -37, 0, 0, 0, 0, -37, 0, 0, 0, 0, + // State 59 + 0, 0, 0, -38, 0, 0, 0, 0, -38, 0, 0, 0, 0, + // State 60 + 0, 0, 0, -7, 0, -7, 0, 0, -7, 0, 0, 0, 0, + // State 61 + 0, 0, 0, -8, 0, -8, 0, 0, -8, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 9 + integer] + __ACTION[(state as usize) * 13 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -9745,74 +20002,172 @@ mod __parse__SpExpr { // State 3 0, // State 4 - -38, + 0, // State 5 - -39, + 0, // State 6 - -15, + 0, // State 7 - -16, + 0, // State 8 - -21, + 0, // State 9 - -51, + 0, // State 10 - -30, + 0, // State 11 - -31, + 0, // State 12 - -14, + 0, // State 13 - -43, + 0, // State 14 - -44, + 0, // State 15 - -27, + 0, // State 16 - -28, + -54, // State 17 - 0, + -71, // State 18 - 0, + -45, // State 19 0, // State 20 - -18, + 0, // State 21 - -22, + 0, // State 22 0, // State 23 - -20, + 0, // State 24 - -17, + 0, // State 25 0, // State 26 - -19, + 0, // State 27 0, + // State 28 + 0, + // State 29 + 0, + // State 30 + 0, + // State 31 + 0, + // State 32 + 0, + // State 33 + 0, + // State 34 + 0, + // State 35 + 0, + // State 36 + 0, + // State 37 + 0, + // State 38 + 0, + // State 39 + 0, + // State 40 + 0, + // State 41 + -25, + // State 42 + 0, + // State 43 + 0, + // State 44 + 0, + // State 45 + 0, + // State 46 + 0, + // State 47 + 0, + // State 48 + 0, + // State 49 + 0, + // State 50 + 0, + // State 51 + 0, + // State 52 + 0, + // State 53 + 0, + // State 54 + 0, + // State 55 + 0, + // State 56 + 0, + // State 57 + 0, + // State 58 + 0, + // State 59 + 0, + // State 60 + 0, + // State 61 + 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 2 => 3, - 9 => 4, - 10 => match state { - 1 => 17, - _ => 5, + 4 => 55, + 7 => 8, + 10 => 2, + 13 => 19, + 14 => 20, + 15 => 16, + 16 => 21, + 17 => match state { + 3 => 43, + _ => 22, }, - 12 => 6, - 13 => 7, - 15 => 8, - 16 => match state { - 1 => 18, - 2 => 19, - 3 => 22, + 19 => 23, + 20 => 24, + 21 => match state { + 1..=2 => 25, + _ => 44, + }, + 22 => 26, + 23 => 27, + 24 => match state { + 0 => 17, + 10 => 58, + 11 => 59, + 14 => 60, + 15 => 61, _ => 9, }, - 21 => 10, - 22 => 11, - 25 => 12, + 25 => match state { + 12 => 14, + 13 => 15, + 1..=2 => 28, + 3 => 45, + 5 => 47, + 6 => 48, + 8 => 51, + _ => 7, + }, + 27 => match state { + 2 => 40, + _ => 29, + }, + 29 => 30, + 30 => 31, + 31 => 18, + 32 => 32, + 33 => 33, + 34 => 34, + 35 => 35, _ => 0, } } @@ -9823,6 +20178,10 @@ mod __parse__SpExpr { r###"",""###, r###"";""###, r###""=""###, + r###""else""###, + r###""if""###, + r###""{""###, + r###""}""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -9851,7 +20210,7 @@ mod __parse__SpExpr { 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; @@ -9879,7 +20238,7 @@ mod __parse__SpExpr { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 9 - 1) + __action(state, 13 - 1) } #[inline] @@ -9947,10 +20306,14 @@ mod __parse__SpExpr { 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), + Token(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), _ => None, } } @@ -9963,8 +20326,2177 @@ mod __parse__SpExpr { ) -> __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), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + } + } + pub struct SpBlockParser { + builder: __lalrpop_util::lexer::MatcherBuilder, + _priv: (), + } + + impl SpBlockParser { + pub fn new() -> SpBlockParser { + let __builder = super::__intern_token::new_builder(); + SpBlockParser { + 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 => { + __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::<(&())>) + } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + return Some(Ok(__nt)); + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(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_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, AssignLhs, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant11< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Atom, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Body, 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, Expr, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__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_Variant5< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__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) + { + // ("else" ) = "else", SpBlock => ActionFn(45); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action45::<>(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) + { + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (2, 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) + { + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + (0, 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) + { + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 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) + { + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) + } + 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) + { + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 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) + { + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (4, 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) + { + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (5, 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) + { + // ( ",") = SpExpr, "," => ActionFn(41); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__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) + { + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) + } + 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) + { + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 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) + { + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 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) + { + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (3, 7) + } + 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) + { + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (2, 8) + } + 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) + { + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 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) + { + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__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) + { + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (2, 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) + { + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action95::<>(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) + { + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) + } + 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) + { + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) + } + 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) + { + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) + } + 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) + { + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) + } + 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) + { + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) + } + 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) + { + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) + } + 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) + { + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) + } + 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) + { + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) + } + 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) + { + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action105::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) + } + 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) + { + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) + } + 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) + { + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) + } + 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) + { + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 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) + { + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 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) + { + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) + } + 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) + { + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) + } + 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) + { + // File = Body => 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, 18) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) + } + 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) + { + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) + } + 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) + { + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) + } + 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) + { + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) + } + 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) + { + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) + } + 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) + { + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) + } + 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) + { + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) + } + 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) + { + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) + } + 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) + { + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) + } + 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) + { + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) + } + 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) + { + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) + } + 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) + { + // SpStmt? = SpStmt => 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::Variant20(__nt), __end)); + (1, 28) + } + 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) + { + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) + } + 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) + { + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) + } + 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) + { + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) + } +} +pub use self::__parse__SpBlock::SpBlockParser; + +#[cfg_attr(rustfmt, rustfmt_skip)] +mod __parse__SpExpr { + #![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(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), + } + const __ACTION: &[i8] = &[ + // State 0 + 2, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, + // State 1 + 2, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, + // State 2 + 2, 21, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, + // State 3 + 2, 24, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, + // State 4 + -53, -53, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 5 + -55, -55, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 6 + -23, -23, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 7 + -24, -24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 8 + -34, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 9 + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 10 + -44, -44, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 11 + -46, -46, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 12 + -22, -22, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 13 + -60, -60, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 14 + -61, -61, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 15 + -41, -41, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 16 + -42, -42, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 17 + -55, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 18 + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 19 + 3, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 20 + -31, -31, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 21 + -35, -35, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 22 + 3, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 23 + -33, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 24 + -30, -30, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 25 + -12, -12, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, + // State 26 + -32, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 27 + -13, -13, 0, 0, 0, 0, 0, 0, 0, -13, -13, -13, -13, + ]; + fn __action(state: i8, integer: usize) -> i8 { + __ACTION[(state as usize) * 13 + integer] + } + const __EOF_ACTION: &[i8] = &[ + // State 0 + 0, + // State 1 + 0, + // State 2 + 0, + // State 3 + 0, + // State 4 + -53, + // State 5 + -55, + // State 6 + -23, + // State 7 + -24, + // State 8 + -34, + // State 9 + -72, + // State 10 + -44, + // State 11 + -46, + // State 12 + -22, + // State 13 + -60, + // State 14 + -61, + // State 15 + -41, + // State 16 + -42, + // State 17 + 0, + // State 18 + 0, + // State 19 + 0, + // State 20 + -31, + // State 21 + -35, + // State 22 + 0, + // State 23 + -33, + // State 24 + -30, + // State 25 + 0, + // State 26 + -32, + // State 27 + 0, + ]; + fn __goto(state: i8, nt: usize) -> i8 { + match nt { + 7 => 3, + 14 => 4, + 17 => match state { + 1 => 17, + _ => 5, + }, + 20 => 6, + 21 => 7, + 23 => 8, + 25 => match state { + 1 => 18, + 2 => 19, + 3 => 22, + _ => 9, + }, + 30 => 10, + 32 => 11, + 35 => 12, + _ => 0, + } + } + fn __expected_tokens(__state: i8) -> alloc::vec::Vec { + const __TERMINAL: &[&str] = &[ + r###""(""###, + r###"")""###, + r###"",""###, + r###"";""###, + r###""=""###, + r###""else""###, + r###""if""###, + 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, 13 - 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(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), + _ => 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 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -10165,12 +22697,7 @@ mod __parse__SpExpr { __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)); + __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 51 => { __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -10178,6 +22705,74 @@ mod __parse__SpExpr { 52 => { __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + // __SpExpr = SpExpr => ActionFn(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + return Some(Ok(__nt)); + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + __reduce73(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -10191,36 +22786,36 @@ mod __parse__SpExpr { fn __symbol_type_mismatch() -> ! { panic!("symbol type mismatch") } - fn __pop_Variant6< + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< '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), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant7< + fn __pop_Variant11< '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), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -10228,7 +22823,7 @@ mod __parse__SpExpr { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Body, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), @@ -10239,134 +22834,178 @@ mod __parse__SpExpr { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Expr, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant1< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, 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) + ) -> (usize, Spanned, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant0< 'input, >( @@ -10387,13 +23026,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(32); + // ("else" ) = "else", SpBlock => ActionFn(45); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action32::<>(input, __sym0, __sym1); + let __nt = super::__action45::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -10406,12 +23045,15 @@ mod __parse__SpExpr { _: 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); + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -10422,13 +23064,12 @@ mod __parse__SpExpr { _: 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); + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (0, 1) } pub(crate) fn __reduce3< 'input, @@ -10439,15 +23080,17 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(47); - assert!(__symbols.len() >= 2); + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 2) } pub(crate) fn __reduce4< 'input, @@ -10458,16 +23101,12 @@ mod __parse__SpExpr { _: 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) + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) } pub(crate) fn __reduce5< 'input, @@ -10478,15 +23117,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(40); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 3) } pub(crate) fn __reduce6< 'input, @@ -10497,12 +23134,17 @@ mod __parse__SpExpr { _: 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); + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (0, 4) + (4, 4) } pub(crate) fn __reduce7< 'input, @@ -10513,13 +23155,18 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(39); + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 4) + (5, 4) } pub(crate) fn __reduce8< 'input, @@ -10530,14 +23177,14 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(51); + // ( ",") = SpExpr, "," => ActionFn(41); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant5(__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)); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } pub(crate) fn __reduce9< @@ -10549,16 +23196,12 @@ mod __parse__SpExpr { _: 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) + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) } pub(crate) fn __reduce10< 'input, @@ -10569,12 +23212,13 @@ mod __parse__SpExpr { _: 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) + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 6) } pub(crate) fn __reduce11< 'input, @@ -10585,12 +23229,15 @@ mod __parse__SpExpr { _: 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) + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 7) } pub(crate) fn __reduce12< 'input, @@ -10601,13 +23248,16 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AssignLhs = Name => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + (3, 7) } pub(crate) fn __reduce13< 'input, @@ -10618,13 +23268,15 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(20); - let __sym0 = __pop_Variant11(__symbols); + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -10635,13 +23287,12 @@ mod __parse__SpExpr { _: 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) + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 9) } pub(crate) fn __reduce15< 'input, @@ -10652,12 +23303,12 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(22); - let __sym0 = __pop_Variant11(__symbols); + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } pub(crate) fn __reduce16< @@ -10669,17 +23320,15 @@ mod __parse__SpExpr { _: 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); + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (4, 10) + (2, 10) } pub(crate) fn __reduce17< 'input, @@ -10690,14 +23339,14 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(64); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (3, 10) } @@ -10710,18 +23359,12 @@ mod __parse__SpExpr { _: 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) + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce19< 'input, @@ -10732,17 +23375,12 @@ mod __parse__SpExpr { _: 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) + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) } pub(crate) fn __reduce20< 'input, @@ -10753,13 +23391,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(17); - let __sym0 = __pop_Variant13(__symbols); + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__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) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) } pub(crate) fn __reduce21< 'input, @@ -10770,16 +23408,13 @@ mod __parse__SpExpr { _: 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); + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce22< 'input, @@ -10790,13 +23425,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(67); - let __sym0 = __pop_Variant3(__symbols); + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__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) + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce23< 'input, @@ -10807,12 +23442,13 @@ mod __parse__SpExpr { _: 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) + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce24< 'input, @@ -10823,15 +23459,16 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(69); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) } pub(crate) fn __reduce25< 'input, @@ -10842,13 +23479,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(70); - let __sym0 = __pop_Variant4(__symbols); + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) } pub(crate) fn __reduce26< 'input, @@ -10859,13 +23496,12 @@ mod __parse__SpExpr { _: 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) + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) } pub(crate) fn __reduce27< 'input, @@ -10876,13 +23512,15 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); - let __sym0 = __pop_Variant0(__symbols); + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__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) + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) } pub(crate) fn __reduce28< 'input, @@ -10893,13 +23531,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAssignLhs = Spanned => ActionFn(13); - let __sym0 = __pop_Variant12(__symbols); + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action13::<>(input, __sym0); + let __nt = super::__action105::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 14) + (1, 16) } pub(crate) fn __reduce29< 'input, @@ -10910,13 +23548,17 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 15) + (4, 17) } pub(crate) fn __reduce30< 'input, @@ -10927,13 +23569,16 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(15); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce31< 'input, @@ -10944,13 +23589,18 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(28); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 17) } pub(crate) fn __reduce32< 'input, @@ -10961,12 +23611,17 @@ mod __parse__SpExpr { _: 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) + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) } pub(crate) fn __reduce33< 'input, @@ -10977,13 +23632,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(10); - let __sym0 = __pop_Variant3(__symbols); + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } pub(crate) fn __reduce34< 'input, @@ -10994,13 +23649,16 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(36); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce35< 'input, @@ -11011,12 +23669,13 @@ mod __parse__SpExpr { _: 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) + // File = Body => 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, 18) } pub(crate) fn __reduce36< 'input, @@ -11027,13 +23686,18 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = AssignLhs => ActionFn(59); - let __sym0 = __pop_Variant6(__symbols); + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) } pub(crate) fn __reduce37< 'input, @@ -11044,13 +23708,19 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(60); - let __sym0 = __pop_Variant7(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) } pub(crate) fn __reduce38< 'input, @@ -11061,13 +23731,16 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(61); - let __sym0 = __pop_Variant8(__symbols); + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) } pub(crate) fn __reduce39< 'input, @@ -11078,13 +23751,17 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(62); - let __sym0 = __pop_Variant16(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) } pub(crate) fn __reduce40< 'input, @@ -11095,13 +23772,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(11); - let __sym0 = __pop_Variant1(__symbols); + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__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) + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } pub(crate) fn __reduce41< 'input, @@ -11112,16 +23789,13 @@ mod __parse__SpExpr { _: 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); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (3, 24) + (1, 21) } pub(crate) fn __reduce42< 'input, @@ -11132,13 +23806,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); - let __sym0 = __pop_Variant0(__symbols); + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__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) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) } pub(crate) fn __reduce43< 'input, @@ -11149,13 +23823,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); - let __sym0 = __pop_Variant0(__symbols); + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) } pub(crate) fn __reduce44< 'input, @@ -11166,13 +23840,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __AssignLhs = AssignLhs => ActionFn(4); - let __sym0 = __pop_Variant6(__symbols); + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__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) + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) } pub(crate) fn __reduce45< 'input, @@ -11183,13 +23857,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(8); - let __sym0 = __pop_Variant7(__symbols); + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) } pub(crate) fn __reduce46< 'input, @@ -11200,13 +23874,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(6); - let __sym0 = __pop_Variant8(__symbols); + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) } pub(crate) fn __reduce47< 'input, @@ -11217,13 +23891,12 @@ mod __parse__SpExpr { _: 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) + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) } pub(crate) fn __reduce48< 'input, @@ -11234,13 +23907,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAssignLhs = SpAssignLhs => ActionFn(3); - let __sym0 = __pop_Variant12(__symbols); + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) } pub(crate) fn __reduce49< 'input, @@ -11251,13 +23924,29 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(7); - let __sym0 = __pop_Variant13(__symbols); + // SpStmt? = SpStmt => ActionFn(53); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action53::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) + } + 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) + { + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) } pub(crate) fn __reduce51< 'input, @@ -11268,13 +23957,13 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpStmt = SpStmt => ActionFn(1); - let __sym0 = __pop_Variant3(__symbols); + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__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) + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) } pub(crate) fn __reduce52< 'input, @@ -11285,13 +23974,356 @@ mod __parse__SpExpr { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant16(__symbols); + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__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) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) } } pub use self::__parse__SpExpr::SpExprParser; @@ -11314,101 +24346,155 @@ mod __parse__SpStmt { 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), + Variant1(Spanned), + Variant2(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), } const __ACTION: &[i8] = &[ // State 0 - 2, 0, 0, 0, 0, 21, 22, 23, 24, + 2, 0, 0, 0, 0, 0, 3, 0, 0, 33, 34, 35, 36, // State 1 - 2, 0, 0, 0, 0, 21, 22, 23, 24, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, // State 2 - 2, 0, 0, 0, 0, 21, 22, 23, 24, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, // State 3 - 2, 30, 0, 0, 0, 21, 22, 23, 24, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, // State 4 - 2, 33, 0, 0, 0, 21, 22, 23, 24, + 2, 42, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, // State 5 - 0, 0, 0, 0, -37, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, // State 6 - -38, -38, -38, 0, 0, 0, 0, 0, 0, + 2, 47, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, // State 7 - -39, -39, -39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -39, 0, 10, 0, 0, -39, 0, 0, 0, 0, // State 8 - -15, -15, -15, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 3, 0, -27, 33, 34, 35, 36, // State 9 - -16, 0, 0, 0, -13, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 9, 0, 0, 0, 0, 0, // State 10 - 0, 0, 0, 0, 3, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 3, 0, -29, 33, 34, 35, 36, // State 11 - -21, -21, -21, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 9, 0, 0, 0, 0, 0, // State 12 - 4, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, // State 13 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, // State 14 - 0, 0, 0, 0, -29, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, // State 15 - -30, -30, -30, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, // State 16 - -31, -31, -31, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, // State 17 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + -53, -53, -53, -53, 0, 0, 0, -53, -53, 0, 0, 0, 0, // State 18 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + -55, -55, -55, -55, 0, 0, 0, -55, -55, 0, 0, 0, 0, // State 19 - -14, -14, -14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -59, 0, 0, 0, 0, -59, 0, 0, 0, 0, // State 20 - -43, -43, -43, 0, 0, 0, 0, 0, 0, + -23, -23, -23, -23, 0, 0, 0, -23, -23, 0, 0, 0, 0, // State 21 - -44, -44, -44, 0, 0, 0, 0, 0, 0, + -24, 0, 0, -24, -21, 0, 0, 0, -24, 0, 0, 0, 0, // State 22 - -27, -27, -27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, // State 23 - -28, -28, -28, 0, -28, 0, 0, 0, 0, + -34, -34, -34, -34, 0, 0, 0, -34, -34, 0, 0, 0, 0, // State 24 - -39, 31, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, // State 25 - -16, -16, -16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 26 - 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, // State 27 - 4, 0, 0, 0, 0, 0, 0, 0, 0, + -44, -44, -44, -44, 0, 0, 0, -44, -44, 0, 0, 0, 0, // State 28 - 4, 34, 35, 0, 0, 0, 0, 0, 0, + -46, -46, -46, -46, 0, 0, 0, -46, -46, 0, 0, 0, 0, // State 29 - -18, -18, -18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -49, 0, 0, 0, 0, -49, 0, 0, 0, 0, // State 30 - -22, -22, -22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, // State 31 - 4, 36, 37, 0, 0, 0, 0, 0, 0, + -22, -22, -22, -22, 0, 0, 0, -22, -22, 0, 0, 0, 0, // State 32 - -20, -20, -20, 0, 0, 0, 0, 0, 0, + -60, -60, -60, -60, 0, 0, 0, -60, -60, 0, 0, 0, 0, // State 33 - -17, -17, -17, 0, 0, 0, 0, 0, 0, + -61, -61, -61, -61, 0, 0, 0, -61, -61, 0, 0, 0, 0, // State 34 - -4, -4, 0, 0, 0, -4, -4, -4, -4, + -41, -41, -41, -41, 0, 0, 0, -41, -41, 0, 0, 0, 0, // State 35 - -19, -19, -19, 0, 0, 0, 0, 0, 0, + -42, -42, -42, -42, -42, 0, 0, -42, -42, 0, 0, 0, 0, // State 36 - -5, -5, 0, 0, 0, -5, -5, -5, -5, + -55, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 37 + -24, -24, -24, -24, 0, 0, 0, -24, -24, 0, 0, 0, 0, + // State 38 + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 39 + 5, 0, 0, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, + // State 40 + 5, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 41 + -31, -31, -31, -31, 0, 0, 0, -31, -31, 0, 0, 0, 0, + // State 42 + -35, -35, -35, -35, 0, 0, 0, -35, -35, 0, 0, 0, 0, + // State 43 + 0, 0, 0, -54, 0, -54, 0, 0, -54, 0, 0, 0, 0, + // State 44 + 0, 0, 0, -45, 0, -45, 0, 0, -45, 0, 0, 0, 0, + // State 45 + 5, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 46 + -33, -33, -33, -33, 0, 0, 0, -33, -33, 0, 0, 0, 0, + // State 47 + -30, -30, -30, -30, 0, 0, 0, -30, -30, 0, 0, 0, 0, + // State 48 + -12, -12, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, + // State 49 + 0, 0, 0, -40, 0, 12, 0, 0, -40, 0, 0, 0, 0, + // State 50 + 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, + // State 51 + 0, 0, 0, 58, 0, 0, 0, 0, -26, 0, 0, 0, 0, + // State 52 + -32, -32, -32, -32, 0, 0, 0, -32, -32, 0, 0, 0, 0, + // State 53 + -13, -13, 0, 0, 0, 0, 0, 0, 0, -13, -13, -13, -13, + // State 54 + 0, 0, 0, -37, 0, 0, 0, 0, -37, 0, 0, 0, 0, + // State 55 + 0, 0, 0, 60, 0, 0, 0, 0, -28, 0, 0, 0, 0, + // State 56 + 0, 0, 0, -25, 0, -25, 0, 0, -25, 0, 0, 0, 0, + // State 57 + -17, 0, 0, 0, 0, 0, -17, 0, -17, -17, -17, -17, -17, + // State 58 + 0, 0, 0, -38, 0, 0, 0, 0, -38, 0, 0, 0, 0, + // State 59 + -18, 0, 0, 0, 0, 0, -18, 0, -18, -18, -18, -18, -18, + // State 60 + 0, 0, 0, -7, 0, -7, 0, 0, -7, 0, 0, 0, 0, + // State 61 + 0, 0, 0, -8, 0, -8, 0, 0, -8, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 9 + integer] + __ACTION[(state as usize) * 13 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -11424,98 +24510,168 @@ mod __parse__SpStmt { // State 5 0, // State 6 - -38, + 0, // State 7 -39, // State 8 - -15, + 0, // State 9 - -16, + 0, // State 10 0, // State 11 - -21, + 0, // State 12 - -41, + 0, // State 13 - -52, + 0, // 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 16 + 0, + // State 17 + -53, + // State 18 + -55, + // State 19 + -59, + // State 20 + -23, + // State 21 + -24, + // State 22 + 0, + // State 23 + -34, + // State 24 + -57, // State 25 - -16, + -73, // State 26 0, // State 27 - -42, + -44, // State 28 - 0, + -46, // State 29 - -18, + -49, // State 30 - -22, + -56, // State 31 - 0, + -22, // State 32 - -20, + -60, // State 33 - -17, + -61, // State 34 - 0, + -41, // State 35 - -19, + -42, // State 36 0, + // State 37 + -24, + // State 38 + 0, + // State 39 + -58, + // State 40 + 0, + // State 41 + -31, + // State 42 + -35, + // State 43 + -54, + // State 44 + -45, + // State 45 + 0, + // State 46 + -33, + // State 47 + -30, + // State 48 + 0, + // State 49 + -40, + // State 50 + 0, + // State 51 + 0, + // State 52 + -32, + // State 53 + 0, + // State 54 + -37, + // State 55 + 0, + // State 56 + -25, + // State 57 + 0, + // State 58 + -38, + // State 59 + 0, + // State 60 + -7, + // State 61 + -8, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 2 => 4, - 8 => 5, - 9 => 6, - 10 => match state { - 1 => 24, + 4 => 49, + 7 => 6, + 10 => 10, + 13 => 16, + 14 => 17, + 15 => 43, + 16 => 50, + 17 => match state { + 1 => 36, + _ => 18, + }, + 19 => 19, + 20 => 20, + 21 => match state { + 1..=4 | 6 | 12..=13 => 37, + _ => 21, + }, + 22 => 22, + 23 => 23, + 24 => match state { + 9 => 54, + 11 => 58, + 14 => 60, + 15 => 61, _ => 7, }, - 12 => 8, - 13 => match state { - 1..=4 => 25, - _ => 9, + 25 => match state { + 2 => 5, + 12 => 14, + 13 => 15, + 1 => 38, + 3 => 39, + 4 => 40, + 6 => 45, + _ => 24, }, - 14 => 10, - 15 => 11, - 16 => match state { - 1 => 26, - 2 => 27, - 3 => 28, - 4 => 31, - _ => 12, + 27 => match state { + 8 => 51, + 10 => 55, + _ => 25, }, - 18 => 13, - 20 => 14, - 21 => 15, - 22 => 16, - 23 => 17, - 24 => 18, - 25 => 19, + 29 => 26, + 30 => 27, + 31 => 44, + 32 => 28, + 33 => 29, + 34 => 30, + 35 => 31, _ => 0, } } @@ -11526,6 +24682,10 @@ mod __parse__SpStmt { r###"",""###, r###"";""###, r###""=""###, + r###""else""###, + r###""if""###, + r###""{""###, + r###""}""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -11582,7 +24742,7 @@ mod __parse__SpStmt { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 9 - 1) + __action(state, 13 - 1) } #[inline] @@ -11650,10 +24810,14 @@ mod __parse__SpStmt { 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), + Token(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), _ => None, } } @@ -11666,8 +24830,8 @@ mod __parse__SpStmt { ) -> __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), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -11871,16 +25035,79 @@ mod __parse__SpStmt { __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 51 => { - // __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); - return Some(Ok(__nt)); + __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 52 => { __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + // __SpStmt = SpStmt => 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)); + } + 73 => { + __reduce73(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -11894,36 +25121,36 @@ mod __parse__SpStmt { fn __symbol_type_mismatch() -> ! { panic!("symbol type mismatch") } - fn __pop_Variant6< + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< '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), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant7< + fn __pop_Variant11< '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), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -11931,7 +25158,7 @@ mod __parse__SpStmt { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Body, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), @@ -11942,134 +25169,178 @@ mod __parse__SpStmt { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Expr, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant1< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, 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) + ) -> (usize, Spanned, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant0< 'input, >( @@ -12090,13 +25361,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(32); + // ("else" ) = "else", SpBlock => ActionFn(45); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action32::<>(input, __sym0, __sym1); + let __nt = super::__action45::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -12109,12 +25380,15 @@ mod __parse__SpStmt { _: 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); + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -12125,13 +25399,12 @@ mod __parse__SpStmt { _: 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); + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (0, 1) } pub(crate) fn __reduce3< 'input, @@ -12142,15 +25415,17 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(47); - assert!(__symbols.len() >= 2); + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 2) } pub(crate) fn __reduce4< 'input, @@ -12161,16 +25436,12 @@ mod __parse__SpStmt { _: 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) + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) } pub(crate) fn __reduce5< 'input, @@ -12181,15 +25452,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(40); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 3) } pub(crate) fn __reduce6< 'input, @@ -12200,12 +25469,17 @@ mod __parse__SpStmt { _: 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); + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (0, 4) + (4, 4) } pub(crate) fn __reduce7< 'input, @@ -12216,13 +25490,18 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(39); + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 4) + (5, 4) } pub(crate) fn __reduce8< 'input, @@ -12233,14 +25512,14 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(51); + // ( ",") = SpExpr, "," => ActionFn(41); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant5(__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)); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } pub(crate) fn __reduce9< @@ -12252,16 +25531,12 @@ mod __parse__SpStmt { _: 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) + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) } pub(crate) fn __reduce10< 'input, @@ -12272,12 +25547,13 @@ mod __parse__SpStmt { _: 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) + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 6) } pub(crate) fn __reduce11< 'input, @@ -12288,12 +25564,15 @@ mod __parse__SpStmt { _: 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) + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 7) } pub(crate) fn __reduce12< 'input, @@ -12304,13 +25583,16 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AssignLhs = Name => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + (3, 7) } pub(crate) fn __reduce13< 'input, @@ -12321,13 +25603,15 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(20); - let __sym0 = __pop_Variant11(__symbols); + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -12338,13 +25622,12 @@ mod __parse__SpStmt { _: 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) + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 9) } pub(crate) fn __reduce15< 'input, @@ -12355,12 +25638,12 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(22); - let __sym0 = __pop_Variant11(__symbols); + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } pub(crate) fn __reduce16< @@ -12372,17 +25655,15 @@ mod __parse__SpStmt { _: 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); + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (4, 10) + (2, 10) } pub(crate) fn __reduce17< 'input, @@ -12393,14 +25674,14 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(64); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (3, 10) } @@ -12413,18 +25694,12 @@ mod __parse__SpStmt { _: 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) + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce19< 'input, @@ -12435,17 +25710,12 @@ mod __parse__SpStmt { _: 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) + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) } pub(crate) fn __reduce20< 'input, @@ -12456,13 +25726,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(17); - let __sym0 = __pop_Variant13(__symbols); + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__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) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) } pub(crate) fn __reduce21< 'input, @@ -12473,16 +25743,13 @@ mod __parse__SpStmt { _: 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); + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce22< 'input, @@ -12493,13 +25760,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(67); - let __sym0 = __pop_Variant3(__symbols); + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__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) + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce23< 'input, @@ -12510,12 +25777,13 @@ mod __parse__SpStmt { _: 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) + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce24< 'input, @@ -12526,15 +25794,16 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(69); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) } pub(crate) fn __reduce25< 'input, @@ -12545,13 +25814,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(70); - let __sym0 = __pop_Variant4(__symbols); + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) } pub(crate) fn __reduce26< 'input, @@ -12562,13 +25831,12 @@ mod __parse__SpStmt { _: 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) + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) } pub(crate) fn __reduce27< 'input, @@ -12579,13 +25847,15 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); - let __sym0 = __pop_Variant0(__symbols); + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__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) + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) } pub(crate) fn __reduce28< 'input, @@ -12596,13 +25866,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAssignLhs = Spanned => ActionFn(13); - let __sym0 = __pop_Variant12(__symbols); + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action13::<>(input, __sym0); + let __nt = super::__action105::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 14) + (1, 16) } pub(crate) fn __reduce29< 'input, @@ -12613,13 +25883,17 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 15) + (4, 17) } pub(crate) fn __reduce30< 'input, @@ -12630,13 +25904,16 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(15); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce31< 'input, @@ -12647,13 +25924,18 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(28); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 17) } pub(crate) fn __reduce32< 'input, @@ -12664,12 +25946,17 @@ mod __parse__SpStmt { _: 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) + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) } pub(crate) fn __reduce33< 'input, @@ -12680,13 +25967,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(10); - let __sym0 = __pop_Variant3(__symbols); + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } pub(crate) fn __reduce34< 'input, @@ -12697,13 +25984,16 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(36); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce35< 'input, @@ -12714,12 +26004,13 @@ mod __parse__SpStmt { _: 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) + // File = Body => 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, 18) } pub(crate) fn __reduce36< 'input, @@ -12730,13 +26021,18 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = AssignLhs => ActionFn(59); - let __sym0 = __pop_Variant6(__symbols); + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) } pub(crate) fn __reduce37< 'input, @@ -12747,13 +26043,19 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(60); - let __sym0 = __pop_Variant7(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) } pub(crate) fn __reduce38< 'input, @@ -12764,13 +26066,16 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(61); - let __sym0 = __pop_Variant8(__symbols); + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) } pub(crate) fn __reduce39< 'input, @@ -12781,13 +26086,17 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(62); - let __sym0 = __pop_Variant16(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) } pub(crate) fn __reduce40< 'input, @@ -12798,13 +26107,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(11); - let __sym0 = __pop_Variant1(__symbols); + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__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) + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } pub(crate) fn __reduce41< 'input, @@ -12815,16 +26124,13 @@ mod __parse__SpStmt { _: 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); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (3, 24) + (1, 21) } pub(crate) fn __reduce42< 'input, @@ -12835,13 +26141,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); - let __sym0 = __pop_Variant0(__symbols); + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__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) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) } pub(crate) fn __reduce43< 'input, @@ -12852,13 +26158,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); - let __sym0 = __pop_Variant0(__symbols); + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) } pub(crate) fn __reduce44< 'input, @@ -12869,13 +26175,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __AssignLhs = AssignLhs => ActionFn(4); - let __sym0 = __pop_Variant6(__symbols); + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__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) + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) } pub(crate) fn __reduce45< 'input, @@ -12886,13 +26192,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(8); - let __sym0 = __pop_Variant7(__symbols); + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) } pub(crate) fn __reduce46< 'input, @@ -12903,13 +26209,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(6); - let __sym0 = __pop_Variant8(__symbols); + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) } pub(crate) fn __reduce47< 'input, @@ -12920,13 +26226,12 @@ mod __parse__SpStmt { _: 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) + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) } pub(crate) fn __reduce48< 'input, @@ -12937,13 +26242,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAssignLhs = SpAssignLhs => ActionFn(3); - let __sym0 = __pop_Variant12(__symbols); + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) } pub(crate) fn __reduce49< 'input, @@ -12954,13 +26259,13 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(7); - let __sym0 = __pop_Variant13(__symbols); + // SpStmt? = SpStmt => ActionFn(53); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action53::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } pub(crate) fn __reduce50< 'input, @@ -12971,13 +26276,29 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpExpr = SpExpr => ActionFn(5); - let __sym0 = __pop_Variant1(__symbols); + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) + } + 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) + { + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__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) + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) } pub(crate) fn __reduce52< 'input, @@ -12988,13 +26309,356 @@ mod __parse__SpStmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant16(__symbols); + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__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) + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce73< + '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(5); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 48) } } pub use self::__parse__SpStmt::SpStmtParser; @@ -13017,97 +26681,155 @@ mod __parse__Stmt { 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), + Variant1(Spanned), + Variant2(core::option::Option>), + Variant3((usize, Spanned, Spanned, usize)), + Variant4(alloc::vec::Vec<(usize, Spanned, Spanned, usize)>), + Variant5(Spanned), + Variant6(alloc::vec::Vec>), + Variant7(Spanned), + Variant8(alloc::vec::Vec>), + Variant9(usize), + Variant10(AssignLhs), + Variant11(Atom), + Variant12(Body), + Variant13(Expr), + Variant14(Stmt), + Variant15(i64), + Variant16(String), + Variant17(Spanned), + Variant18(Spanned), + Variant19(core::option::Option>), + Variant20(core::option::Option>), } const __ACTION: &[i8] = &[ // State 0 - 2, 0, 0, 0, 0, 19, 20, 21, 22, + 2, 0, 0, 0, 0, 0, 3, 0, 0, 31, 32, 33, 34, // State 1 - 2, 0, 0, 0, 0, 19, 20, 21, 22, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, // State 2 - 2, 0, 0, 0, 0, 19, 20, 21, 22, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, // State 3 - 2, 28, 0, 0, 0, 19, 20, 21, 22, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, // State 4 - 2, 31, 0, 0, 0, 19, 20, 21, 22, + 2, 40, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, // State 5 - 0, 0, 0, 0, -37, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, // State 6 - -38, -38, -38, 0, 0, 0, 0, 0, 0, + 2, 45, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, // State 7 - -39, -39, -39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -39, 0, 10, 0, 0, -39, 0, 0, 0, 0, // State 8 - -15, -15, -15, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 3, 0, -27, 31, 32, 33, 34, // State 9 - -16, 0, 0, 0, -13, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 9, 0, 0, 0, 0, 0, // State 10 - 0, 0, 0, 0, 3, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 3, 0, -29, 31, 32, 33, 34, // State 11 - -21, -21, -21, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 9, 0, 0, 0, 0, 0, // State 12 - 4, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, // State 13 - 0, 0, 0, 0, -29, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, // State 14 - -30, -30, -30, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, // State 15 - -31, -31, -31, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, // State 16 - 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, // State 17 - -14, -14, -14, 0, 0, 0, 0, 0, 0, + -53, -53, -53, -53, 0, 0, 0, -53, -53, 0, 0, 0, 0, // State 18 - -43, -43, -43, 0, 0, 0, 0, 0, 0, + -55, -55, -55, -55, 0, 0, 0, -55, -55, 0, 0, 0, 0, // State 19 - -44, -44, -44, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -59, 0, 0, 0, 0, -59, 0, 0, 0, 0, // State 20 - -27, -27, -27, 0, 0, 0, 0, 0, 0, + -23, -23, -23, -23, 0, 0, 0, -23, -23, 0, 0, 0, 0, // State 21 - -28, -28, -28, 0, -28, 0, 0, 0, 0, + -24, 0, 0, -24, -21, 0, 0, 0, -24, 0, 0, 0, 0, // State 22 - -39, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, // State 23 - -16, -16, -16, 0, 0, 0, 0, 0, 0, + -34, -34, -34, -34, 0, 0, 0, -34, -34, 0, 0, 0, 0, // State 24 - 4, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, // State 25 - 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, // State 26 - 4, 32, 33, 0, 0, 0, 0, 0, 0, + -44, -44, -44, -44, 0, 0, 0, -44, -44, 0, 0, 0, 0, // State 27 - -18, -18, -18, 0, 0, 0, 0, 0, 0, + -46, -46, -46, -46, 0, 0, 0, -46, -46, 0, 0, 0, 0, // State 28 - -22, -22, -22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 29 - 4, 34, 35, 0, 0, 0, 0, 0, 0, + -22, -22, -22, -22, 0, 0, 0, -22, -22, 0, 0, 0, 0, // State 30 - -20, -20, -20, 0, 0, 0, 0, 0, 0, + -60, -60, -60, -60, 0, 0, 0, -60, -60, 0, 0, 0, 0, // State 31 - -17, -17, -17, 0, 0, 0, 0, 0, 0, + -61, -61, -61, -61, 0, 0, 0, -61, -61, 0, 0, 0, 0, // State 32 - -4, -4, 0, 0, 0, -4, -4, -4, -4, + -41, -41, -41, -41, 0, 0, 0, -41, -41, 0, 0, 0, 0, // State 33 - -19, -19, -19, 0, 0, 0, 0, 0, 0, + -42, -42, -42, -42, -42, 0, 0, -42, -42, 0, 0, 0, 0, // State 34 - -5, -5, 0, 0, 0, -5, -5, -5, -5, + -55, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 35 + -24, -24, -24, -24, 0, 0, 0, -24, -24, 0, 0, 0, 0, + // State 36 + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 37 + 5, 0, 0, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, + // State 38 + 5, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 39 + -31, -31, -31, -31, 0, 0, 0, -31, -31, 0, 0, 0, 0, + // State 40 + -35, -35, -35, -35, 0, 0, 0, -35, -35, 0, 0, 0, 0, + // State 41 + 0, 0, 0, -54, 0, -54, 0, 0, -54, 0, 0, 0, 0, + // State 42 + 0, 0, 0, -45, 0, -45, 0, 0, -45, 0, 0, 0, 0, + // State 43 + 5, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 44 + -33, -33, -33, -33, 0, 0, 0, -33, -33, 0, 0, 0, 0, + // State 45 + -30, -30, -30, -30, 0, 0, 0, -30, -30, 0, 0, 0, 0, + // State 46 + -12, -12, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, + // State 47 + 0, 0, 0, -40, 0, 12, 0, 0, -40, 0, 0, 0, 0, + // State 48 + 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, + // State 49 + 0, 0, 0, 58, 0, 0, 0, 0, -26, 0, 0, 0, 0, + // State 50 + 0, 0, 0, -49, 0, 0, 0, 0, -49, 0, 0, 0, 0, + // State 51 + 0, 0, 0, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, + // State 52 + -32, -32, -32, -32, 0, 0, 0, -32, -32, 0, 0, 0, 0, + // State 53 + -13, -13, 0, 0, 0, 0, 0, 0, 0, -13, -13, -13, -13, + // State 54 + 0, 0, 0, -37, 0, 0, 0, 0, -37, 0, 0, 0, 0, + // State 55 + 0, 0, 0, 60, 0, 0, 0, 0, -28, 0, 0, 0, 0, + // State 56 + 0, 0, 0, -25, 0, -25, 0, 0, -25, 0, 0, 0, 0, + // State 57 + -17, 0, 0, 0, 0, 0, -17, 0, -17, -17, -17, -17, -17, + // State 58 + 0, 0, 0, -38, 0, 0, 0, 0, -38, 0, 0, 0, 0, + // State 59 + -18, 0, 0, 0, 0, 0, -18, 0, -18, -18, -18, -18, -18, + // State 60 + 0, 0, 0, -7, 0, -7, 0, 0, -7, 0, 0, 0, 0, + // State 61 + 0, 0, 0, -8, 0, -8, 0, 0, -8, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 9 + integer] + __ACTION[(state as usize) * 13 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -13123,92 +26845,170 @@ mod __parse__Stmt { // State 5 0, // State 6 - -38, + 0, // State 7 -39, // State 8 - -15, + 0, // State 9 - -16, + 0, // State 10 0, // State 11 - -21, + 0, // State 12 - -41, + 0, // State 13 0, // State 14 - -30, + 0, // State 15 - -31, + 0, // State 16 - -53, + 0, // State 17 - -14, + -53, // State 18 - -43, + -55, // State 19 - -44, + -59, // State 20 - -27, + -23, // State 21 - -28, + -24, // State 22 0, // State 23 - -16, + -34, // State 24 - 0, + -57, // State 25 - -42, + 0, // State 26 - 0, + -44, // State 27 - -18, + -46, // State 28 - -22, + -74, // State 29 - 0, + -22, // State 30 - -20, + -60, // State 31 - -17, + -61, // State 32 - 0, + -41, // State 33 - -19, + -42, // State 34 0, + // State 35 + -24, + // State 36 + 0, + // State 37 + -58, + // State 38 + 0, + // State 39 + -31, + // State 40 + -35, + // State 41 + -54, + // State 42 + -45, + // State 43 + 0, + // State 44 + -33, + // State 45 + -30, + // State 46 + 0, + // State 47 + -40, + // State 48 + 0, + // State 49 + 0, + // State 50 + 0, + // State 51 + 0, + // State 52 + -32, + // State 53 + 0, + // State 54 + -37, + // State 55 + 0, + // State 56 + -25, + // State 57 + 0, + // State 58 + -38, + // State 59 + 0, + // State 60 + -7, + // State 61 + -8, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 2 => 4, - 8 => 5, - 9 => 6, - 10 => match state { - 1 => 22, + 4 => 47, + 7 => 6, + 10 => 10, + 13 => 16, + 14 => 17, + 15 => 41, + 16 => 48, + 17 => match state { + 1 => 34, + _ => 18, + }, + 19 => 19, + 20 => 20, + 21 => match state { + 1..=4 | 6 | 12..=13 => 35, + _ => 21, + }, + 22 => 22, + 23 => 23, + 24 => match state { + 9 => 54, + 11 => 58, + 14 => 60, + 15 => 61, _ => 7, }, - 12 => 8, - 13 => match state { - 1..=4 => 23, - _ => 9, + 25 => match state { + 2 => 5, + 12 => 14, + 13 => 15, + 1 => 36, + 3 => 37, + 4 => 38, + 6 => 43, + _ => 24, }, - 14 => 10, - 15 => 11, - 16 => match state { - 1 => 24, - 2 => 25, - 3 => 26, - 4 => 29, - _ => 12, + 27 => match state { + 10 => 55, + _ => 49, }, - 20 => 13, - 21 => 14, - 22 => 15, - 24 => 16, - 25 => 17, + 29 => 25, + 30 => 26, + 31 => 42, + 32 => 27, + 33 => 50, + 34 => match state { + 0 => 28, + _ => 51, + }, + 35 => 29, _ => 0, } } @@ -13219,6 +27019,10 @@ mod __parse__Stmt { r###"",""###, r###"";""###, r###""=""###, + r###""else""###, + r###""if""###, + r###""{""###, + r###""}""###, r###"r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""#"###, r###"r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"#"###, r###"r#"[0-9]+"#"###, @@ -13275,7 +27079,7 @@ mod __parse__Stmt { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 9 - 1) + __action(state, 13 - 1) } #[inline] @@ -13343,10 +27147,14 @@ mod __parse__Stmt { 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), + Token(9, _) if true => Some(5), + Token(10, _) if true => Some(6), + Token(11, _) if true => Some(7), + Token(12, _) if true => Some(8), + Token(0, _) if true => Some(9), + Token(1, _) if true => Some(10), + Token(2, _) if true => Some(11), + Token(3, _) if true => Some(12), _ => None, } } @@ -13359,8 +27167,8 @@ mod __parse__Stmt { ) -> __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), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 => match __token { + Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -13567,11 +27375,74 @@ mod __parse__Stmt { __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 52 => { - // __Stmt = Stmt => ActionFn(2); - let __sym0 = __pop_Variant16(__symbols); + __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 53 => { + __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 54 => { + __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 55 => { + __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 56 => { + __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 57 => { + __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 58 => { + __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 59 => { + __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 60 => { + __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 61 => { + __reduce61(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 62 => { + __reduce62(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 63 => { + __reduce63(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 64 => { + __reduce64(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 65 => { + __reduce65(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 66 => { + __reduce66(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 67 => { + __reduce67(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 68 => { + __reduce68(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 69 => { + __reduce69(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 70 => { + __reduce70(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 71 => { + __reduce71(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 72 => { + __reduce72(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 73 => { + // __Stmt = Stmt => ActionFn(5); + let __sym0 = __pop_Variant14(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action2::<>(input, __sym0); + let __nt = super::__action5::<>(input, __sym0); return Some(Ok(__nt)); } _ => panic!("invalid action code {}", __action) @@ -13587,36 +27458,36 @@ mod __parse__Stmt { fn __symbol_type_mismatch() -> ! { panic!("symbol type mismatch") } - fn __pop_Variant6< + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (usize, Spanned, Spanned, usize), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< '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), + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant7< + fn __pop_Variant11< '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), + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -13624,7 +27495,7 @@ mod __parse__Stmt { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Body, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), @@ -13635,134 +27506,178 @@ mod __parse__Stmt { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, usize) + ) -> (usize, Expr, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant1< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Spanned, 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) + ) -> (usize, Spanned, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Spanned, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + '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), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__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, Spanned, Spanned, usize)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, usize, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant0< 'input, >( @@ -13783,13 +27698,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = SpExpr, "," => ActionFn(32); + // ("else" ) = "else", SpBlock => ActionFn(45); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action32::<>(input, __sym0, __sym1); + let __nt = super::__action45::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -13802,12 +27717,15 @@ mod __parse__Stmt { _: 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); + // ("else" )? = "else", SpBlock => ActionFn(65); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -13818,13 +27736,12 @@ mod __parse__Stmt { _: 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); + // ("else" )? = => ActionFn(44); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action44::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (0, 1) } pub(crate) fn __reduce3< 'input, @@ -13835,15 +27752,17 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = SpExpr, "," => ActionFn(47); - assert!(__symbols.len() >= 2); + // (<@L> "else" "if" <@R>) = "else", "if", SpExpr, SpBlock => ActionFn(76); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (4, 2) } pub(crate) fn __reduce4< 'input, @@ -13854,16 +27773,12 @@ mod __parse__Stmt { _: 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) + // (<@L> "else" "if" <@R>)* = => 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::Variant4(__nt), __end)); + (0, 3) } pub(crate) fn __reduce5< 'input, @@ -13874,15 +27789,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";") = SpStmt, ";" => ActionFn(40); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + // (<@L> "else" "if" <@R>)* = (<@L> "else" "if" <@R>)+ => ActionFn(47); + let __sym0 = __pop_Variant4(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 3) } pub(crate) fn __reduce6< 'input, @@ -13893,12 +27806,17 @@ mod __parse__Stmt { _: 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); + // (<@L> "else" "if" <@R>)+ = "else", "if", SpExpr, SpBlock => ActionFn(84); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant1(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (0, 4) + (4, 4) } pub(crate) fn __reduce7< 'input, @@ -13909,13 +27827,18 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")* = ( ";")+ => ActionFn(39); + // (<@L> "else" "if" <@R>)+ = (<@L> "else" "if" <@R>)+, "else", "if", SpExpr, SpBlock => ActionFn(85); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __end = __sym4.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 4) + (5, 4) } pub(crate) fn __reduce8< 'input, @@ -13926,14 +27849,14 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ";")+ = SpStmt, ";" => ActionFn(51); + // ( ",") = SpExpr, "," => ActionFn(41); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant5(__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)); + let __nt = super::__action41::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } pub(crate) fn __reduce9< @@ -13945,16 +27868,12 @@ mod __parse__Stmt { _: 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) + // ( ",")* = => ActionFn(39); + 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); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 6) } pub(crate) fn __reduce10< 'input, @@ -13965,12 +27884,13 @@ mod __parse__Stmt { _: 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) + // ( ",")* = ( ",")+ => ActionFn(40); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 6) } pub(crate) fn __reduce11< 'input, @@ -13981,12 +27901,15 @@ mod __parse__Stmt { _: 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) + // ( ",")+ = SpExpr, "," => ActionFn(90); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 7) } pub(crate) fn __reduce12< 'input, @@ -13997,13 +27920,16 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AssignLhs = Name => ActionFn(14); - let __sym0 = __pop_Variant11(__symbols); + // ( ",")+ = ( ",")+, SpExpr, "," => ActionFn(91); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 8) + (3, 7) } pub(crate) fn __reduce13< 'input, @@ -14014,13 +27940,15 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Str => ActionFn(20); - let __sym0 = __pop_Variant11(__symbols); + // ( ";") = SpStmt, ";" => ActionFn(57); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); - (1, 9) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -14031,13 +27959,12 @@ mod __parse__Stmt { _: 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) + // ( ";")* = => ActionFn(55); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action55::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 9) } pub(crate) fn __reduce15< 'input, @@ -14048,12 +27975,12 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Atom = Name => ActionFn(22); - let __sym0 = __pop_Variant11(__symbols); + // ( ";")* = ( ";")+ => ActionFn(56); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + let __nt = super::__action56::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } pub(crate) fn __reduce16< @@ -14065,17 +27992,15 @@ mod __parse__Stmt { _: 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); + // ( ";")+ = SpStmt, ";" => ActionFn(94); + assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym1.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (4, 10) + (2, 10) } pub(crate) fn __reduce17< 'input, @@ -14086,14 +28011,14 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpExpr, "(", ")" => ActionFn(64); + // ( ";")+ = ( ";")+, SpStmt, ";" => ActionFn(95); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (3, 10) } @@ -14106,18 +28031,12 @@ mod __parse__Stmt { _: 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) + // @L = => ActionFn(50); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action50::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 11) } pub(crate) fn __reduce19< 'input, @@ -14128,17 +28047,12 @@ mod __parse__Stmt { _: 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) + // @R = => ActionFn(49); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action49::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 12) } pub(crate) fn __reduce20< 'input, @@ -14149,13 +28063,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = SpAtom => ActionFn(17); - let __sym0 = __pop_Variant13(__symbols); + // AssignLhs = Name => ActionFn(22); + let __sym0 = __pop_Variant16(__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) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 13) } pub(crate) fn __reduce21< 'input, @@ -14166,16 +28080,13 @@ mod __parse__Stmt { _: 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); + // Atom = Str => ActionFn(29); + let __sym0 = __pop_Variant16(__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) + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce22< 'input, @@ -14186,13 +28097,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = SpStmt => ActionFn(67); - let __sym0 = __pop_Variant3(__symbols); + // Atom = Int => ActionFn(30); + let __sym0 = __pop_Variant15(__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) + let __nt = super::__action30::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce23< 'input, @@ -14203,12 +28114,13 @@ mod __parse__Stmt { _: 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) + // Atom = Name => ActionFn(31); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 14) } pub(crate) fn __reduce24< 'input, @@ -14219,15 +28131,16 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+, SpStmt => ActionFn(69); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant4(__symbols); + // Block = "{", Body, "}" => ActionFn(15); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 15) } pub(crate) fn __reduce25< 'input, @@ -14238,13 +28151,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // File = ( ";")+ => ActionFn(70); - let __sym0 = __pop_Variant4(__symbols); + // Body = SpStmt => ActionFn(102); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action102::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 16) } pub(crate) fn __reduce26< 'input, @@ -14255,13 +28168,12 @@ mod __parse__Stmt { _: 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) + // Body = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action103::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (0, 16) } pub(crate) fn __reduce27< 'input, @@ -14272,13 +28184,15 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(26); - let __sym0 = __pop_Variant0(__symbols); + // Body = ( ";")+, SpStmt => ActionFn(104); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant7(__symbols); + let __sym0 = __pop_Variant8(__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) + let __end = __sym1.2.clone(); + let __nt = super::__action104::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 16) } pub(crate) fn __reduce28< 'input, @@ -14289,13 +28203,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAssignLhs = Spanned => ActionFn(13); - let __sym0 = __pop_Variant12(__symbols); + // Body = ( ";")+ => ActionFn(105); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action13::<>(input, __sym0); + let __nt = super::__action105::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 14) + (1, 16) } pub(crate) fn __reduce29< 'input, @@ -14306,13 +28220,17 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpAtom = Spanned => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr = SpExpr, "(", SpExpr, ")" => ActionFn(98); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym3.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 15) + (4, 17) } pub(crate) fn __reduce30< 'input, @@ -14323,13 +28241,16 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr = Spanned => ActionFn(15); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ")" => ActionFn(99); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce31< 'input, @@ -14340,13 +28261,18 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpExpr? = SpExpr => ActionFn(28); - let __sym0 = __pop_Variant1(__symbols); + // Expr = SpExpr, "(", ( ",")+, SpExpr, ")" => ActionFn(100); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant5(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (5, 17) } pub(crate) fn __reduce32< 'input, @@ -14357,12 +28283,17 @@ mod __parse__Stmt { _: 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) + // Expr = SpExpr, "(", ( ",")+, ")" => ActionFn(101); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (4, 17) } pub(crate) fn __reduce33< 'input, @@ -14373,13 +28304,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt = Spanned => ActionFn(10); - let __sym0 = __pop_Variant3(__symbols); + // Expr = SpAtom => ActionFn(26); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } pub(crate) fn __reduce34< 'input, @@ -14390,13 +28321,16 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SpStmt? = SpStmt => ActionFn(36); - let __sym0 = __pop_Variant3(__symbols); + // Expr = "(", Expr, ")" => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 17) } pub(crate) fn __reduce35< 'input, @@ -14407,12 +28341,13 @@ mod __parse__Stmt { _: 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) + // File = Body => 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, 18) } pub(crate) fn __reduce36< 'input, @@ -14423,13 +28358,18 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = AssignLhs => ActionFn(59); - let __sym0 = __pop_Variant6(__symbols); + // IfStmt = "if", SpExpr, SpBlock, "else", SpBlock => ActionFn(86); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant1(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 19) } pub(crate) fn __reduce37< 'input, @@ -14440,13 +28380,19 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Atom => ActionFn(60); - let __sym0 = __pop_Variant7(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+, "else", SpBlock => ActionFn(87); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant1(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 19) } pub(crate) fn __reduce38< 'input, @@ -14457,13 +28403,16 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Expr => ActionFn(61); - let __sym0 = __pop_Variant8(__symbols); + // IfStmt = "if", SpExpr, SpBlock => ActionFn(88); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym2.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 19) } pub(crate) fn __reduce39< 'input, @@ -14474,13 +28423,17 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Spanned = Stmt => ActionFn(62); - let __sym0 = __pop_Variant16(__symbols); + // IfStmt = "if", SpExpr, SpBlock, (<@L> "else" "if" <@R>)+ => ActionFn(89); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant4(__symbols); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant0(__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) + let __end = __sym3.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 19) } pub(crate) fn __reduce40< 'input, @@ -14491,13 +28444,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Stmt = SpExpr => ActionFn(11); - let __sym0 = __pop_Variant1(__symbols); + // Int = r#"[0-9]+"# => ActionFn(32); + let __sym0 = __pop_Variant0(__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) + let __nt = super::__action32::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } pub(crate) fn __reduce41< 'input, @@ -14508,16 +28461,13 @@ mod __parse__Stmt { _: 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); + // Name = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(35); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (3, 24) + (1, 21) } pub(crate) fn __reduce42< 'input, @@ -14528,13 +28478,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"\"([^\"\\\\]|\\\\[ntr\"'\\\\])*\""# => ActionFn(24); - let __sym0 = __pop_Variant0(__symbols); + // SpAssignLhs = Spanned => ActionFn(21); + let __sym0 = __pop_Variant17(__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) + let __nt = super::__action21::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 22) } pub(crate) fn __reduce43< 'input, @@ -14545,13 +28495,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Str = r#"'([^\"\\\\]|\\\\[ntr\"'\\\\])*'"# => ActionFn(25); - let __sym0 = __pop_Variant0(__symbols); + // SpAtom = Spanned => ActionFn(28); + let __sym0 = __pop_Variant18(__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) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) } pub(crate) fn __reduce44< 'input, @@ -14562,13 +28512,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __AssignLhs = AssignLhs => ActionFn(4); - let __sym0 = __pop_Variant6(__symbols); + // SpBlock = Spanned => ActionFn(14); + let __sym0 = __pop_Variant1(__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) + let __nt = super::__action14::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) } pub(crate) fn __reduce45< 'input, @@ -14579,13 +28529,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Atom = Atom => ActionFn(8); - let __sym0 = __pop_Variant7(__symbols); + // SpExpr = Spanned => ActionFn(24); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action24::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 25) } pub(crate) fn __reduce46< 'input, @@ -14596,13 +28546,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Expr = Expr => ActionFn(6); - let __sym0 = __pop_Variant8(__symbols); + // SpExpr? = SpExpr => ActionFn(37); + let __sym0 = __pop_Variant5(__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) + let __nt = super::__action37::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 26) } pub(crate) fn __reduce47< 'input, @@ -14613,13 +28563,12 @@ mod __parse__Stmt { _: 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) + // SpExpr? = => 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::Variant19(__nt), __end)); + (0, 26) } pub(crate) fn __reduce48< 'input, @@ -14630,13 +28579,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAssignLhs = SpAssignLhs => ActionFn(3); - let __sym0 = __pop_Variant12(__symbols); + // SpStmt = Spanned => ActionFn(17); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action17::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 27) } pub(crate) fn __reduce49< 'input, @@ -14647,13 +28596,13 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpAtom = SpAtom => ActionFn(7); - let __sym0 = __pop_Variant13(__symbols); + // SpStmt? = SpStmt => ActionFn(53); + let __sym0 = __pop_Variant7(__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) + let __nt = super::__action53::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } pub(crate) fn __reduce50< 'input, @@ -14664,13 +28613,12 @@ mod __parse__Stmt { _: 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) + // SpStmt? = => ActionFn(54); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action54::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 28) } pub(crate) fn __reduce51< 'input, @@ -14681,13 +28629,373 @@ mod __parse__Stmt { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __SpStmt = SpStmt => ActionFn(1); - let __sym0 = __pop_Variant3(__symbols); + // Spanned = AssignLhs => ActionFn(79); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action79::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 29) + } + 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) + { + // Spanned = Atom => ActionFn(80); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action80::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 30) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Spanned = Block => ActionFn(81); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action81::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 31) + } + pub(crate) fn __reduce54< + '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(82); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action82::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 32) + } + pub(crate) fn __reduce55< + '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(83); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action83::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 33) + } + pub(crate) fn __reduce56< + '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(18); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce57< + '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(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant5(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 34) + } + pub(crate) fn __reduce58< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Stmt = IfStmt => ActionFn(20); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action20::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 34) + } + pub(crate) fn __reduce59< + '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(33); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action33::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce60< + '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(34); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action34::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce61< + '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(7); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce62< + '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(12); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce63< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Block = Block => ActionFn(2); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 38) + } + pub(crate) fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Body = Body => 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, 39) + } + pub(crate) fn __reduce65< + '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(10); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action10::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 40) + } + pub(crate) fn __reduce66< + '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_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 41) + } + pub(crate) fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __IfStmt = IfStmt => ActionFn(8); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 42) + } + pub(crate) fn __reduce68< + '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(6); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 43) + } + pub(crate) fn __reduce69< + '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(11); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action11::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 44) + } + pub(crate) fn __reduce70< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __SpBlock = SpBlock => ActionFn(1); + let __sym0 = __pop_Variant1(__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) + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 45) + } + pub(crate) fn __reduce71< + '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(9); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action9::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 46) + } + pub(crate) fn __reduce72< + '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(4); + let __sym0 = __pop_Variant7(__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, 47) } } pub use self::__parse__Stmt::StmtParser; @@ -14714,6 +29022,10 @@ mod __intern_token { ("^(,)", false), ("^(;)", false), ("^(=)", false), + ("^(else)", false), + ("^(if)", false), + ("^(\\{)", false), + ("^(\\})", false), (r"^(\s*)", true), ]; __lalrpop_util::lexer::MatcherBuilder::new(__strs.iter().copied()).unwrap() @@ -14722,113 +29034,114 @@ mod __intern_token { pub(crate) use self::__lalrpop_util::lexer::Token; #[allow(unused_variables)] -fn __action0< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Vec, usize), -) -> Vec -{ +fn __action0<'input>(input: &'input str, (_, __0, _): (usize, Body, usize)) -> Body { __0 } #[allow(unused_variables)] -fn __action1< - 'input, ->( +fn __action1<'input>( + input: &'input str, + (_, __0, _): (usize, Spanned, usize), +) -> Spanned { + __0 +} + +#[allow(unused_variables)] +fn __action2<'input>(input: &'input str, (_, __0, _): (usize, Body, usize)) -> Body { + __0 +} + +#[allow(unused_variables)] +fn __action3<'input>(input: &'input str, (_, __0, _): (usize, Body, usize)) -> Body { + __0 +} + +#[allow(unused_variables)] +fn __action4<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), -) -> Spanned -{ +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action2< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Stmt, usize), -) -> Stmt -{ +fn __action5<'input>(input: &'input str, (_, __0, _): (usize, Stmt, usize)) -> Stmt { __0 } #[allow(unused_variables)] -fn __action3< - 'input, ->( +fn __action6<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), -) -> Spanned -{ +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action4< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, AssignLhs, usize), -) -> AssignLhs -{ +fn __action7<'input>(input: &'input str, (_, __0, _): (usize, AssignLhs, usize)) -> AssignLhs { __0 } #[allow(unused_variables)] -fn __action5< - 'input, ->( +fn __action8<'input>(input: &'input str, (_, __0, _): (usize, Stmt, usize)) -> Stmt { + __0 +} + +#[allow(unused_variables)] +fn __action9<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), -) -> Spanned -{ +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action6< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Expr, usize), -) -> Expr -{ +fn __action10<'input>(input: &'input str, (_, __0, _): (usize, Expr, usize)) -> Expr { __0 } #[allow(unused_variables)] -fn __action7< - 'input, ->( +fn __action11<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), -) -> Spanned -{ +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action8< - 'input, ->( +fn __action12<'input>(input: &'input str, (_, __0, _): (usize, Atom, usize)) -> Atom { + __0 +} + +#[allow(unused_variables)] +fn __action13<'input>(input: &'input str, (_, __0, _): (usize, Body, usize)) -> Body { + __0 +} + +#[allow(unused_variables)] +fn __action14<'input>( input: &'input str, - (_, __0, _): (usize, Atom, usize), -) -> Atom -{ + (_, __0, _): (usize, Spanned, usize), +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action9< - 'input, ->( +fn __action15<'input>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, __0, _): (usize, Body, usize), + (_, _, _): (usize, &'input str, usize), +) -> Body { + __0 +} + +#[allow(unused_variables)] +fn __action16<'input>( input: &'input str, (_, mut head, _): (usize, alloc::vec::Vec>, usize), (_, tail, _): (usize, core::option::Option>, usize), -) -> Vec -{ +) -> Body { { if let Some(tail) = tail { head.push(tail); @@ -14838,85 +29151,107 @@ fn __action9< } #[allow(unused_variables)] -fn __action10< - 'input, ->( +fn __action17<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), -) -> Spanned -{ +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action11< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Spanned, usize), -) -> Stmt -{ +fn __action18<'input>(input: &'input str, (_, __0, _): (usize, Spanned, usize)) -> Stmt { Stmt::Expr(__0) } #[allow(unused_variables)] -fn __action12< - 'input, ->( +fn __action19<'input>( input: &'input str, (_, lhs, _): (usize, Spanned, usize), (_, _, _): (usize, &'input str, usize), (_, expr, _): (usize, Spanned, usize), -) -> Stmt -{ +) -> Stmt { Stmt::Assign(lhs, expr) } #[allow(unused_variables)] -fn __action13< - 'input, ->( +fn __action20<'input>(input: &'input str, (_, __0, _): (usize, Stmt, usize)) -> Stmt { + __0 +} + +#[allow(unused_variables)] +fn __action21<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), -) -> Spanned -{ +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action14< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, String, usize), -) -> AssignLhs -{ - { AssignLhs::Name(__0) } +fn __action22<'input>(input: &'input str, (_, __0, _): (usize, String, usize)) -> AssignLhs { + { + AssignLhs::Name(__0) + } } #[allow(unused_variables)] -fn __action15< - 'input, ->( +fn __action23<'input>( + input: &'input str, + (_, if_start, _): (usize, usize, usize), + (_, _, _): (usize, &'input str, usize), + (_, if_condition, _): (usize, Spanned, usize), + (_, if_block, _): (usize, Spanned, usize), + (_, if_end, _): (usize, usize, usize), + (_, elif_start, _): (usize, usize, usize), + (_, elif_block, _): ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), + (_, elif_end, _): (usize, usize, usize), + (_, else_start, _): (usize, usize, usize), + (_, else_block, _): (usize, core::option::Option>, usize), + (_, else_end, _): (usize, usize, usize), +) -> Stmt { + { + // Make if statement cond body + let if_true = CondBody { + cond: if_condition, + body: if_block, + }; + // Make elif statement cond body + let mut elseif = Vec::with_capacity(elif_block.len()); + for (start, expr, block, end) in elif_block { + let elseif_cond_body = CondBody { + cond: expr, + body: block, + }; + elseif.push(Spanned::new(Span::new(start, end), elseif_cond_body)); + } + Stmt::If { + if_true: Spanned::new(Span::new(if_start, if_end), if_true), + elseif, + else_body: else_block, + } + } +} + +#[allow(unused_variables)] +fn __action24<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), -) -> Spanned -{ +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action16< - 'input, ->( +fn __action25<'input>( input: &'input str, (_, fun, _): (usize, Spanned, usize), (_, _, _): (usize, &'input str, usize), (_, mut argv, _): (usize, alloc::vec::Vec>, usize), (_, last, _): (usize, core::option::Option>, usize), (_, _, _): (usize, &'input str, usize), -) -> Expr -{ +) -> Expr { { let argv = match last { Some(expr) => { @@ -14930,963 +29265,1014 @@ fn __action16< } #[allow(unused_variables)] -fn __action17< - 'input, ->( - input: &'input str, - (_, atom, _): (usize, Spanned, usize), -) -> Expr -{ +fn __action26<'input>(input: &'input str, (_, atom, _): (usize, Spanned, usize)) -> Expr { Expr::Atom(atom) } #[allow(unused_variables)] -fn __action18< - 'input, ->( +fn __action27<'input>( input: &'input str, (_, _, _): (usize, &'input str, usize), (_, expr, _): (usize, Expr, usize), (_, _, _): (usize, &'input str, usize), -) -> Expr -{ +) -> Expr { expr } #[allow(unused_variables)] -fn __action19< - 'input, ->( +fn __action28<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), -) -> Spanned -{ +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action20< - 'input, ->( - input: &'input str, - (_, s, _): (usize, String, usize), -) -> Atom -{ +fn __action29<'input>(input: &'input str, (_, s, _): (usize, String, usize)) -> Atom { Atom::Str(s) } #[allow(unused_variables)] -fn __action21< - 'input, ->( - input: &'input str, - (_, n, _): (usize, i64, usize), -) -> Atom -{ +fn __action30<'input>(input: &'input str, (_, n, _): (usize, i64, usize)) -> Atom { Atom::Int(n) } #[allow(unused_variables)] -fn __action22< - 'input, ->( - input: &'input str, - (_, name, _): (usize, String, usize), -) -> Atom -{ +fn __action31<'input>(input: &'input str, (_, name, _): (usize, String, usize)) -> Atom { Atom::Name(name) } #[allow(unused_variables)] -fn __action23< - 'input, ->( - input: &'input str, - (_, s, _): (usize, &'input str, usize), -) -> i64 -{ +fn __action32<'input>(input: &'input str, (_, s, _): (usize, &'input str, usize)) -> i64 { i64::from_str(s).unwrap() } #[allow(unused_variables)] -fn __action24< - 'input, ->( - input: &'input str, - (_, s, _): (usize, &'input str, usize), -) -> String -{ +fn __action33<'input>(input: &'input str, (_, s, _): (usize, &'input str, usize)) -> String { unescape(&s[1..s.len() - 1]) } #[allow(unused_variables)] -fn __action25< - 'input, ->( - input: &'input str, - (_, s, _): (usize, &'input str, usize), -) -> String -{ +fn __action34<'input>(input: &'input str, (_, s, _): (usize, &'input str, usize)) -> String { unescape(&s[1..s.len() - 1]) } #[allow(unused_variables)] -fn __action26< - 'input, ->( - input: &'input str, - (_, s, _): (usize, &'input str, usize), -) -> String -{ +fn __action35<'input>(input: &'input str, (_, s, _): (usize, &'input str, usize)) -> String { s.to_string() } #[allow(unused_variables)] -fn __action27< - 'input, ->( +fn __action36<'input>( input: &'input str, (_, start, _): (usize, usize, usize), (_, inner, _): (usize, Atom, usize), (_, end, _): (usize, usize, usize), -) -> Spanned -{ +) -> Spanned { Spanned::new(Span::new(start, end), inner) } #[allow(unused_variables)] -fn __action28< - 'input, ->( +fn __action37<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), -) -> core::option::Option> -{ +) -> core::option::Option> { Some(__0) } #[allow(unused_variables)] -fn __action29< - 'input, ->( +fn __action38<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, -) -> core::option::Option> -{ +) -> core::option::Option> { None } #[allow(unused_variables)] -fn __action30< - 'input, ->( +fn __action39<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, -) -> alloc::vec::Vec> -{ +) -> alloc::vec::Vec> { alloc::vec![] } #[allow(unused_variables)] -fn __action31< - 'input, ->( +fn __action40<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec>, usize), -) -> alloc::vec::Vec> -{ +) -> alloc::vec::Vec> { v } #[allow(unused_variables)] -fn __action32< - 'input, ->( +fn __action41<'input>( input: &'input str, (_, __0, _): (usize, Spanned, usize), (_, _, _): (usize, &'input str, usize), -) -> Spanned -{ +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action33< - 'input, ->( +fn __action42<'input>( input: &'input str, (_, start, _): (usize, usize, usize), (_, inner, _): (usize, Expr, usize), (_, end, _): (usize, usize, usize), -) -> Spanned -{ +) -> Spanned { Spanned::new(Span::new(start, end), inner) } #[allow(unused_variables)] -fn __action34< - 'input, ->( +fn __action43<'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, - (_, start, _): (usize, usize, usize), - (_, inner, _): (usize, Stmt, usize), - (_, end, _): (usize, usize, usize), -) -> Spanned -{ - Spanned::new(Span::new(start, end), inner) -} - -#[allow(unused_variables)] -fn __action36< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Spanned, usize), -) -> core::option::Option> -{ + (_, __0, _): (usize, Spanned, usize), +) -> core::option::Option> { Some(__0) } #[allow(unused_variables)] -fn __action37< - 'input, ->( +fn __action44<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, -) -> core::option::Option> -{ +) -> core::option::Option> { None } #[allow(unused_variables)] -fn __action38< - 'input, ->( +fn __action45<'input>( input: &'input str, - __lookbehind: &usize, - __lookahead: &usize, -) -> alloc::vec::Vec> -{ - alloc::vec![] -} - -#[allow(unused_variables)] -fn __action39< - 'input, ->( - input: &'input str, - (_, v, _): (usize, alloc::vec::Vec>, usize), -) -> alloc::vec::Vec> -{ - v -} - -#[allow(unused_variables)] -fn __action40< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Spanned, usize), (_, _, _): (usize, &'input str, usize), -) -> Spanned -{ + (_, __0, _): (usize, Spanned, usize), +) -> Spanned { __0 } #[allow(unused_variables)] -fn __action41< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Spanned, usize), -) -> alloc::vec::Vec> -{ - alloc::vec![__0] -} - -#[allow(unused_variables)] -fn __action42< - 'input, ->( - input: &'input str, - (_, v, _): (usize, alloc::vec::Vec>, usize), - (_, e, _): (usize, Spanned, usize), -) -> alloc::vec::Vec> -{ - { let mut v = v; v.push(e); v } -} - -#[allow(unused_variables)] -fn __action43< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Spanned, usize), -) -> alloc::vec::Vec> -{ - alloc::vec![__0] -} - -#[allow(unused_variables)] -fn __action44< - 'input, ->( - input: &'input str, - (_, v, _): (usize, alloc::vec::Vec>, usize), - (_, e, _): (usize, Spanned, usize), -) -> alloc::vec::Vec> -{ - { let mut v = v; v.push(e); v } -} - -#[allow(unused_variables)] -fn __action45< - 'input, ->( +fn __action46<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, -) -> usize -{ +) -> alloc::vec::Vec<(usize, Spanned, Spanned, usize)> { + alloc::vec![] +} + +#[allow(unused_variables)] +fn __action47<'input>( + input: &'input str, + (_, v, _): ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), +) -> alloc::vec::Vec<(usize, Spanned, Spanned, usize)> { + v +} + +#[allow(unused_variables)] +fn __action48<'input>( + input: &'input str, + (_, __0, _): (usize, usize, usize), + (_, _, _): (usize, &'input str, usize), + (_, _, _): (usize, &'input str, usize), + (_, __1, _): (usize, Spanned, usize), + (_, __2, _): (usize, Spanned, usize), + (_, __3, _): (usize, usize, usize), +) -> (usize, Spanned, Spanned, usize) { + (__0, __1, __2, __3) +} + +#[allow(unused_variables)] +fn __action49<'input>(input: &'input str, __lookbehind: &usize, __lookahead: &usize) -> usize { __lookbehind.clone() } #[allow(unused_variables)] -fn __action46< - 'input, ->( - input: &'input str, - __lookbehind: &usize, - __lookahead: &usize, -) -> usize -{ +fn __action50<'input>(input: &'input str, __lookbehind: &usize, __lookahead: &usize) -> usize { __lookahead.clone() } #[allow(unused_variables)] -fn __action47< - 'input, ->( +fn __action51<'input>( input: &'input str, - __0: (usize, Spanned, usize), - __1: (usize, &'input str, usize), -) -> alloc::vec::Vec> -{ + (_, start, _): (usize, usize, usize), + (_, inner, _): (usize, AssignLhs, usize), + (_, end, _): (usize, usize, usize), +) -> Spanned { + Spanned::new(Span::new(start, end), inner) +} + +#[allow(unused_variables)] +fn __action52<'input>( + input: &'input str, + (_, start, _): (usize, usize, usize), + (_, inner, _): (usize, Stmt, usize), + (_, end, _): (usize, usize, usize), +) -> Spanned { + Spanned::new(Span::new(start, end), inner) +} + +#[allow(unused_variables)] +fn __action53<'input>( + input: &'input str, + (_, __0, _): (usize, Spanned, usize), +) -> core::option::Option> { + Some(__0) +} + +#[allow(unused_variables)] +fn __action54<'input>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option> { + None +} + +#[allow(unused_variables)] +fn __action55<'input>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec> { + alloc::vec![] +} + +#[allow(unused_variables)] +fn __action56<'input>( + input: &'input str, + (_, v, _): (usize, alloc::vec::Vec>, usize), +) -> alloc::vec::Vec> { + v +} + +#[allow(unused_variables)] +fn __action57<'input>( + input: &'input str, + (_, __0, _): (usize, Spanned, usize), + (_, _, _): (usize, &'input str, usize), +) -> Spanned { + __0 +} + +#[allow(unused_variables)] +fn __action58<'input>( + input: &'input str, + (_, start, _): (usize, usize, usize), + (_, inner, _): (usize, Body, usize), + (_, end, _): (usize, usize, usize), +) -> Spanned { + Spanned::new(Span::new(start, end), inner) +} + +#[allow(unused_variables)] +fn __action59<'input>( + input: &'input str, + (_, __0, _): (usize, Spanned, usize), +) -> alloc::vec::Vec> { + alloc::vec![__0] +} + +#[allow(unused_variables)] +fn __action60<'input>( + input: &'input str, + (_, v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, Spanned, usize), +) -> alloc::vec::Vec> { + { + let mut v = v; + v.push(e); + v + } +} + +#[allow(unused_variables)] +fn __action61<'input>( + input: &'input str, + (_, __0, _): (usize, (usize, Spanned, Spanned, usize), usize), +) -> alloc::vec::Vec<(usize, Spanned, Spanned, usize)> { + alloc::vec![__0] +} + +#[allow(unused_variables)] +fn __action62<'input>( + input: &'input str, + (_, v, _): ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), + (_, e, _): (usize, (usize, Spanned, Spanned, usize), usize), +) -> alloc::vec::Vec<(usize, Spanned, Spanned, usize)> { + { + let mut v = v; + v.push(e); + v + } +} + +#[allow(unused_variables)] +fn __action63<'input>( + input: &'input str, + (_, __0, _): (usize, Spanned, usize), +) -> alloc::vec::Vec> { + alloc::vec![__0] +} + +#[allow(unused_variables)] +fn __action64<'input>( + input: &'input str, + (_, v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, Spanned, usize), +) -> alloc::vec::Vec> { + { + let mut v = v; + v.push(e); + v + } +} + +#[allow(unused_variables)] +fn __action65<'input>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, Spanned, usize), +) -> core::option::Option> { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action32( - input, - __0, - __1, - ); + let __temp0 = __action45(input, __0, __1); let __temp0 = (__start0, __temp0, __end0); - __action43( - input, - __temp0, + __action43(input, __temp0) +} + +#[allow(unused_variables)] +fn __action66<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, &'input str, usize), + __2: (usize, Spanned, usize), + __3: (usize, Spanned, usize), + __4: (usize, usize, usize), + __5: (usize, usize, usize), + __6: ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), + __7: (usize, usize, usize), + __8: (usize, usize, usize), + __9: (usize, &'input str, usize), + __10: (usize, Spanned, usize), + __11: (usize, usize, usize), +) -> Stmt { + let __start0 = __9.0.clone(); + let __end0 = __10.2.clone(); + let __temp0 = __action65(input, __9, __10); + let __temp0 = (__start0, __temp0, __end0); + __action23( + input, __0, __1, __2, __3, __4, __5, __6, __7, __8, __temp0, __11, ) } #[allow(unused_variables)] -fn __action48< - 'input, ->( +fn __action67<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, &'input str, usize), + __2: (usize, Spanned, usize), + __3: (usize, Spanned, usize), + __4: (usize, usize, usize), + __5: (usize, usize, usize), + __6: ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), + __7: (usize, usize, usize), + __8: (usize, usize, usize), + __9: (usize, usize, usize), +) -> Stmt { + let __start0 = __8.2.clone(); + let __end0 = __9.0.clone(); + let __temp0 = __action44(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action23( + input, __0, __1, __2, __3, __4, __5, __6, __7, __8, __temp0, __9, + ) +} + +#[allow(unused_variables)] +fn __action68<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, &'input str, usize), + __2: (usize, &'input str, usize), + __3: (usize, Spanned, usize), + __4: (usize, Spanned, usize), +) -> (usize, Spanned, Spanned, usize) { + let __start0 = __4.2.clone(); + let __end0 = __4.2.clone(); + let __temp0 = __action49(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action48(input, __0, __1, __2, __3, __4, __temp0) +} + +#[allow(unused_variables)] +fn __action69<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, &'input str, usize), + __2: (usize, Spanned, usize), + __3: (usize, Spanned, usize), + __4: (usize, usize, usize), + __5: ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), + __6: (usize, usize, usize), + __7: (usize, &'input str, usize), + __8: (usize, Spanned, usize), +) -> Stmt { + let __start0 = __3.2.clone(); + let __end0 = __4.0.clone(); + let __start1 = __5.2.clone(); + let __end1 = __6.0.clone(); + let __start2 = __8.2.clone(); + let __end2 = __8.2.clone(); + let __temp0 = __action49(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action49(input, &__start1, &__end1); + let __temp1 = (__start1, __temp1, __end1); + let __temp2 = __action49(input, &__start2, &__end2); + let __temp2 = (__start2, __temp2, __end2); + __action66( + input, __0, __1, __2, __3, __temp0, __4, __5, __temp1, __6, __7, __8, __temp2, + ) +} + +#[allow(unused_variables)] +fn __action70<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, &'input str, usize), + __2: (usize, Spanned, usize), + __3: (usize, Spanned, usize), + __4: (usize, usize, usize), + __5: ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), + __6: (usize, usize, usize), +) -> Stmt { + let __start0 = __3.2.clone(); + let __end0 = __4.0.clone(); + let __start1 = __5.2.clone(); + let __end1 = __6.0.clone(); + let __start2 = __6.2.clone(); + let __end2 = __6.2.clone(); + let __temp0 = __action49(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action49(input, &__start1, &__end1); + let __temp1 = (__start1, __temp1, __end1); + let __temp2 = __action49(input, &__start2, &__end2); + let __temp2 = (__start2, __temp2, __end2); + __action67( + input, __0, __1, __2, __3, __temp0, __4, __5, __temp1, __6, __temp2, + ) +} + +#[allow(unused_variables)] +fn __action71<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, AssignLhs, usize), +) -> Spanned { + let __start0 = __1.2.clone(); + let __end0 = __1.2.clone(); + let __temp0 = __action49(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action51(input, __0, __1, __temp0) +} + +#[allow(unused_variables)] +fn __action72<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, Atom, usize), +) -> Spanned { + let __start0 = __1.2.clone(); + let __end0 = __1.2.clone(); + let __temp0 = __action49(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action36(input, __0, __1, __temp0) +} + +#[allow(unused_variables)] +fn __action73<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, Body, usize), +) -> Spanned { + let __start0 = __1.2.clone(); + let __end0 = __1.2.clone(); + let __temp0 = __action49(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action58(input, __0, __1, __temp0) +} + +#[allow(unused_variables)] +fn __action74<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, Expr, usize), +) -> Spanned { + let __start0 = __1.2.clone(); + let __end0 = __1.2.clone(); + let __temp0 = __action49(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action42(input, __0, __1, __temp0) +} + +#[allow(unused_variables)] +fn __action75<'input>( + input: &'input str, + __0: (usize, usize, usize), + __1: (usize, Stmt, usize), +) -> Spanned { + let __start0 = __1.2.clone(); + let __end0 = __1.2.clone(); + let __temp0 = __action49(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action52(input, __0, __1, __temp0) +} + +#[allow(unused_variables)] +fn __action76<'input>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, &'input str, usize), + __2: (usize, Spanned, usize), + __3: (usize, Spanned, usize), +) -> (usize, Spanned, Spanned, usize) { + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action68(input, __temp0, __0, __1, __2, __3) +} + +#[allow(unused_variables)] +fn __action77<'input>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, Spanned, usize), + __2: (usize, Spanned, usize), + __3: ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), + __4: (usize, &'input str, usize), + __5: (usize, Spanned, usize), +) -> Stmt { + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __start1 = __2.2.clone(); + let __end1 = __3.0.clone(); + let __start2 = __3.2.clone(); + let __end2 = __4.0.clone(); + let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action50(input, &__start1, &__end1); + let __temp1 = (__start1, __temp1, __end1); + let __temp2 = __action50(input, &__start2, &__end2); + let __temp2 = (__start2, __temp2, __end2); + __action69( + input, __temp0, __0, __1, __2, __temp1, __3, __temp2, __4, __5, + ) +} + +#[allow(unused_variables)] +fn __action78<'input>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, Spanned, usize), + __2: (usize, Spanned, usize), + __3: ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), +) -> Stmt { + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __start1 = __2.2.clone(); + let __end1 = __3.0.clone(); + let __start2 = __3.2.clone(); + let __end2 = __3.2.clone(); + let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action50(input, &__start1, &__end1); + let __temp1 = (__start1, __temp1, __end1); + let __temp2 = __action50(input, &__start2, &__end2); + let __temp2 = (__start2, __temp2, __end2); + __action70(input, __temp0, __0, __1, __2, __temp1, __3, __temp2) +} + +#[allow(unused_variables)] +fn __action79<'input>(input: &'input str, __0: (usize, AssignLhs, usize)) -> Spanned { + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action71(input, __temp0, __0) +} + +#[allow(unused_variables)] +fn __action80<'input>(input: &'input str, __0: (usize, Atom, usize)) -> Spanned { + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action72(input, __temp0, __0) +} + +#[allow(unused_variables)] +fn __action81<'input>(input: &'input str, __0: (usize, Body, usize)) -> Spanned { + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action73(input, __temp0, __0) +} + +#[allow(unused_variables)] +fn __action82<'input>(input: &'input str, __0: (usize, Expr, usize)) -> Spanned { + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action74(input, __temp0, __0) +} + +#[allow(unused_variables)] +fn __action83<'input>(input: &'input str, __0: (usize, Stmt, usize)) -> Spanned { + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action75(input, __temp0, __0) +} + +#[allow(unused_variables)] +fn __action84<'input>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, &'input str, usize), + __2: (usize, Spanned, usize), + __3: (usize, Spanned, usize), +) -> alloc::vec::Vec<(usize, Spanned, Spanned, usize)> { + let __start0 = __0.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action76(input, __0, __1, __2, __3); + let __temp0 = (__start0, __temp0, __end0); + __action61(input, __temp0) +} + +#[allow(unused_variables)] +fn __action85<'input>( + input: &'input str, + __0: ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), + __1: (usize, &'input str, usize), + __2: (usize, &'input str, usize), + __3: (usize, Spanned, usize), + __4: (usize, Spanned, usize), +) -> alloc::vec::Vec<(usize, Spanned, Spanned, usize)> { + let __start0 = __1.0.clone(); + let __end0 = __4.2.clone(); + let __temp0 = __action76(input, __1, __2, __3, __4); + let __temp0 = (__start0, __temp0, __end0); + __action62(input, __0, __temp0) +} + +#[allow(unused_variables)] +fn __action86<'input>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, Spanned, usize), + __2: (usize, Spanned, usize), + __3: (usize, &'input str, usize), + __4: (usize, Spanned, usize), +) -> Stmt { + let __start0 = __2.2.clone(); + let __end0 = __3.0.clone(); + let __temp0 = __action46(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action77(input, __0, __1, __2, __temp0, __3, __4) +} + +#[allow(unused_variables)] +fn __action87<'input>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, Spanned, usize), + __2: (usize, Spanned, usize), + __3: ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), + __4: (usize, &'input str, usize), + __5: (usize, Spanned, usize), +) -> Stmt { + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action47(input, __3); + let __temp0 = (__start0, __temp0, __end0); + __action77(input, __0, __1, __2, __temp0, __4, __5) +} + +#[allow(unused_variables)] +fn __action88<'input>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, Spanned, usize), + __2: (usize, Spanned, usize), +) -> Stmt { + let __start0 = __2.2.clone(); + let __end0 = __2.2.clone(); + let __temp0 = __action46(input, &__start0, &__end0); + let __temp0 = (__start0, __temp0, __end0); + __action78(input, __0, __1, __2, __temp0) +} + +#[allow(unused_variables)] +fn __action89<'input>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, Spanned, usize), + __2: (usize, Spanned, usize), + __3: ( + usize, + alloc::vec::Vec<(usize, Spanned, Spanned, usize)>, + usize, + ), +) -> Stmt { + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action47(input, __3); + let __temp0 = (__start0, __temp0, __end0); + __action78(input, __0, __1, __2, __temp0) +} + +#[allow(unused_variables)] +fn __action90<'input>( + input: &'input str, + __0: (usize, Spanned, usize), + __1: (usize, &'input str, usize), +) -> alloc::vec::Vec> { + let __start0 = __0.0.clone(); + let __end0 = __1.2.clone(); + let __temp0 = __action41(input, __0, __1); + let __temp0 = (__start0, __temp0, __end0); + __action63(input, __temp0) +} + +#[allow(unused_variables)] +fn __action91<'input>( input: &'input str, __0: (usize, alloc::vec::Vec>, usize), __1: (usize, Spanned, usize), __2: (usize, &'input str, usize), -) -> alloc::vec::Vec> -{ +) -> alloc::vec::Vec> { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action32( - input, - __1, - __2, - ); + let __temp0 = __action41(input, __1, __2); let __temp0 = (__start0, __temp0, __end0); - __action44( - input, - __0, - __temp0, - ) + __action64(input, __0, __temp0) } #[allow(unused_variables)] -fn __action49< - 'input, ->( +fn __action92<'input>( input: &'input str, __0: (usize, Spanned, usize), __1: (usize, &'input str, usize), __2: (usize, core::option::Option>, usize), __3: (usize, &'input str, usize), -) -> Expr -{ +) -> Expr { let __start0 = __1.2.clone(); let __end0 = __2.0.clone(); - let __temp0 = __action30( - input, - &__start0, - &__end0, - ); + let __temp0 = __action39(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action16( - input, - __0, - __1, - __temp0, - __2, - __3, - ) + __action25(input, __0, __1, __temp0, __2, __3) } #[allow(unused_variables)] -fn __action50< - 'input, ->( +fn __action93<'input>( input: &'input str, __0: (usize, Spanned, usize), __1: (usize, &'input str, usize), __2: (usize, alloc::vec::Vec>, usize), __3: (usize, core::option::Option>, usize), __4: (usize, &'input str, usize), -) -> Expr -{ +) -> Expr { let __start0 = __2.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action31( - input, - __2, - ); + let __temp0 = __action40(input, __2); let __temp0 = (__start0, __temp0, __end0); - __action16( - input, - __0, - __1, - __temp0, - __3, - __4, - ) + __action25(input, __0, __1, __temp0, __3, __4) } #[allow(unused_variables)] -fn __action51< - 'input, ->( +fn __action94<'input>( input: &'input str, __0: (usize, Spanned, usize), __1: (usize, &'input str, usize), -) -> alloc::vec::Vec> -{ +) -> alloc::vec::Vec> { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action40( - input, - __0, - __1, - ); + let __temp0 = __action57(input, __0, __1); let __temp0 = (__start0, __temp0, __end0); - __action41( - input, - __temp0, - ) + __action59(input, __temp0) } #[allow(unused_variables)] -fn __action52< - 'input, ->( +fn __action95<'input>( input: &'input str, __0: (usize, alloc::vec::Vec>, usize), __1: (usize, Spanned, usize), __2: (usize, &'input str, usize), -) -> alloc::vec::Vec> -{ +) -> alloc::vec::Vec> { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action40( - input, - __1, - __2, - ); + let __temp0 = __action57(input, __1, __2); let __temp0 = (__start0, __temp0, __end0); - __action42( - input, - __0, - __temp0, - ) + __action60(input, __0, __temp0) } #[allow(unused_variables)] -fn __action53< - 'input, ->( +fn __action96<'input>( input: &'input str, __0: (usize, core::option::Option>, usize), -) -> Vec -{ +) -> Body { let __start0 = __0.0.clone(); let __end0 = __0.0.clone(); - let __temp0 = __action38( - input, - &__start0, - &__end0, - ); + let __temp0 = __action55(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action9( - input, - __temp0, - __0, - ) + __action16(input, __temp0, __0) } #[allow(unused_variables)] -fn __action54< - 'input, ->( +fn __action97<'input>( input: &'input str, __0: (usize, alloc::vec::Vec>, usize), __1: (usize, core::option::Option>, usize), -) -> Vec -{ +) -> Body { let __start0 = __0.0.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action39( - input, - __0, - ); + let __temp0 = __action56(input, __0); let __temp0 = (__start0, __temp0, __end0); - __action9( - input, - __temp0, - __1, - ) + __action16(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); - __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, - ) -} - -#[allow(unused_variables)] -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, ->( +fn __action98<'input>( input: &'input str, __0: (usize, Spanned, usize), __1: (usize, &'input str, usize), __2: (usize, Spanned, usize), __3: (usize, &'input str, usize), -) -> Expr -{ +) -> Expr { let __start0 = __2.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action28( - input, - __2, - ); + let __temp0 = __action37(input, __2); let __temp0 = (__start0, __temp0, __end0); - __action49( - input, - __0, - __1, - __temp0, - __3, - ) + __action92(input, __0, __1, __temp0, __3) } #[allow(unused_variables)] -fn __action64< - 'input, ->( +fn __action99<'input>( input: &'input str, __0: (usize, Spanned, usize), __1: (usize, &'input str, usize), __2: (usize, &'input str, usize), -) -> Expr -{ +) -> Expr { let __start0 = __1.2.clone(); let __end0 = __2.0.clone(); - let __temp0 = __action29( - input, - &__start0, - &__end0, - ); + let __temp0 = __action38(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action49( - input, - __0, - __1, - __temp0, - __2, - ) + __action92(input, __0, __1, __temp0, __2) } #[allow(unused_variables)] -fn __action65< - 'input, ->( +fn __action100<'input>( input: &'input str, __0: (usize, Spanned, usize), __1: (usize, &'input str, usize), __2: (usize, alloc::vec::Vec>, usize), __3: (usize, Spanned, usize), __4: (usize, &'input str, usize), -) -> Expr -{ +) -> Expr { let __start0 = __3.0.clone(); let __end0 = __3.2.clone(); - let __temp0 = __action28( - input, - __3, - ); + let __temp0 = __action37(input, __3); let __temp0 = (__start0, __temp0, __end0); - __action50( - input, - __0, - __1, - __2, - __temp0, - __4, - ) + __action93(input, __0, __1, __2, __temp0, __4) } #[allow(unused_variables)] -fn __action66< - 'input, ->( +fn __action101<'input>( input: &'input str, __0: (usize, Spanned, usize), __1: (usize, &'input str, usize), __2: (usize, alloc::vec::Vec>, usize), __3: (usize, &'input str, usize), -) -> Expr -{ +) -> Expr { let __start0 = __2.2.clone(); let __end0 = __3.0.clone(); - let __temp0 = __action29( - input, - &__start0, - &__end0, - ); + let __temp0 = __action38(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action50( - input, - __0, - __1, - __2, - __temp0, - __3, - ) + __action93(input, __0, __1, __2, __temp0, __3) } #[allow(unused_variables)] -fn __action67< - 'input, ->( - input: &'input str, - __0: (usize, Spanned, usize), -) -> Vec -{ +fn __action102<'input>(input: &'input str, __0: (usize, Spanned, usize)) -> Body { let __start0 = __0.0.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action36( - input, - __0, - ); + let __temp0 = __action53(input, __0); let __temp0 = (__start0, __temp0, __end0); - __action53( - input, - __temp0, - ) + __action96(input, __temp0) } #[allow(unused_variables)] -fn __action68< - 'input, ->( - input: &'input str, - __lookbehind: &usize, - __lookahead: &usize, -) -> Vec -{ +fn __action103<'input>(input: &'input str, __lookbehind: &usize, __lookahead: &usize) -> Body { let __start0 = __lookbehind.clone(); let __end0 = __lookahead.clone(); - let __temp0 = __action37( - input, - &__start0, - &__end0, - ); + let __temp0 = __action54(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action53( - input, - __temp0, - ) + __action96(input, __temp0) } #[allow(unused_variables)] -fn __action69< - 'input, ->( +fn __action104<'input>( input: &'input str, __0: (usize, alloc::vec::Vec>, usize), __1: (usize, Spanned, usize), -) -> Vec -{ +) -> Body { let __start0 = __1.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action36( - input, - __1, - ); + let __temp0 = __action53(input, __1); let __temp0 = (__start0, __temp0, __end0); - __action54( - input, - __0, - __temp0, - ) + __action97(input, __0, __temp0) } #[allow(unused_variables)] -fn __action70< - 'input, ->( +fn __action105<'input>( input: &'input str, __0: (usize, alloc::vec::Vec>, usize), -) -> Vec -{ +) -> Body { let __start0 = __0.2.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action37( - input, - &__start0, - &__end0, - ); + let __temp0 = __action54(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action54( - input, - __0, - __temp0, - ) + __action97(input, __0, __temp0) } -pub trait __ToTriple<'input, > -{ - fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError, &'static str>>; +pub trait __ToTriple<'input> { + fn to_triple( + value: Self, + ) -> Result< + (usize, Token<'input>, usize), + __lalrpop_util::ParseError, &'static str>, + >; } -impl<'input, > __ToTriple<'input, > for (usize, Token<'input>, usize) -{ - fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError, &'static str>> { +impl<'input> __ToTriple<'input> for (usize, Token<'input>, usize) { + fn to_triple( + value: Self, + ) -> Result< + (usize, Token<'input>, usize), + __lalrpop_util::ParseError, &'static str>, + > { Ok(value) } } -impl<'input, > __ToTriple<'input, > for Result<(usize, Token<'input>, usize), &'static str> -{ - fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError, &'static str>> { +impl<'input> __ToTriple<'input> for Result<(usize, Token<'input>, usize), &'static str> { + fn to_triple( + value: Self, + ) -> Result< + (usize, Token<'input>, usize), + __lalrpop_util::ParseError, &'static str>, + > { match value { Ok(v) => Ok(v), Err(error) => Err(__lalrpop_util::ParseError::User { error }), diff --git a/src/vm/inst.rs b/src/vm/inst.rs index a74f7f8..f11548f 100644 --- a/src/vm/inst.rs +++ b/src/vm/inst.rs @@ -1,6 +1,13 @@ use crate::obj::ObjPtr; use crate::vm::name::Name; +#[derive(Debug, Clone)] +pub enum JumpCondition { + False, + True, + Always, +} + #[derive(Debug, Clone)] pub enum Inst { /// Pushes an object to the stack. @@ -29,4 +36,37 @@ pub enum Inst { /// resize the stack to its last size (pre-call), and push the return value /// back to the top of the stack. Return, + + /// Adds the given value to the current program counter (positive or + /// negative) when the given condition holds.. + /// + /// `Inst::JumpRelative(1)` functions as a no-op. + /// `Inst::JumpRelative(0)` functions as a "hang" + /// `Inst::JumpRelative(-1)` jumps to the previous instruction. + JumpRelative(isize, JumpCondition), + + /// Pops the top value off of the stack and sets the condition flag to + /// "true" or "false". + Compare, + + Comment(String), +} + +impl Inst { + pub fn disassemble_string(&self) -> String { + match self { + Inst::Push(ptr) => format!("push <{:#x}>", (ptr as *const _ as usize)), + Inst::Load(name) => format!("load {name:?}"), + Inst::Store(name) => format!("store {name:?}"), + Inst::GetAttr(attr) => format!("getattr {attr}"), + Inst::Pop => format!("pop"), + Inst::Call(argc) => format!("call {argc}"), + Inst::Return => format!("return"), + Inst::JumpRelative(distance, condition) => { + format!("jump {:+} (when condition is {:?})", distance, condition) + } + Inst::Compare => format!("compare"), + Inst::Comment(comment) => format!("# {comment}"), + } + } } diff --git a/src/vm/mod.rs b/src/vm/mod.rs index 13484f2..c8393b0 100644 --- a/src/vm/mod.rs +++ b/src/vm/mod.rs @@ -4,7 +4,7 @@ pub mod name; use crate::obj::prelude::*; use crate::vm::frame::{BuiltinFrame, UserFrame}; -use crate::vm::{frame::Frame, inst::Inst, name::Name}; +use crate::vm::{frame::Frame, inst::*, name::Name}; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum State { @@ -18,6 +18,7 @@ pub struct Vm { frames: Vec, state: State, stack: Vec, + condition: bool, } impl Vm { @@ -26,6 +27,7 @@ impl Vm { frames: Default::default(), state: State::Stopped, stack: Default::default(), + condition: false, } } @@ -73,6 +75,14 @@ impl Vm { self.stack_mut().pop() } + pub fn condition(&self) -> bool { + self.condition + } + + pub fn set_condition(&mut self, condition: bool) { + self.condition = condition; + } + /// Loads a given name in the currently executing context. pub fn load(&self, name: Name) -> Option { // Search up the stack frame for local variable with the given name @@ -122,6 +132,8 @@ impl Vm { /// /// Returns the address of the next instruction to load. fn exec_inst(&mut self) { + let self_condition = self.condition(); + // don't like this, but this is the consequence of not using a pipeline I think let frame = match self.active_frame_mut() { Some(Frame::User(frame)) => frame, @@ -129,7 +141,7 @@ impl Vm { }; let inst = frame.get_inst(); - let pc = frame.pc() + 1; + let mut pc = frame.pc() + 1; let mut next_frame: Option = None; let mut pop_frame = false; @@ -151,11 +163,34 @@ impl Vm { let value = self.pop_stack().expect("Stack underflow"); self.store(name, Some(value)); } - Inst::GetAttr(_attr) => todo!(), - Inst::Pop => { - self + Inst::GetAttr(attr) => { + // XXX + // there's an annoying thing with this. We can't use + // self.pop_stack() and then use "attr" afterwards because they + // belong to the same owner (self). + // ALSO: + // We can't just do peek_stack() either, because since `attr` + // above was borrowed while `self` is mutable. If you want to + // borrow `self` immutably, you have to drop the reference above + // as well. + // So either we have to do some unsafe stuff (not a bad option + // here, since nothing is going to move) or clone(). Maybe a + // `get_attr()` function is in order, I don't know. + // For now we're cloning. + let attr = attr.clone(); + let obj = self .pop_stack() - .expect("Inst::Pop executed, but there was no value on top of the stack. This is most likely a bug."); + .expect("Inst::GetAttr executed, but there was no value on top of the stack."); + let value = obj.get(&attr); + if let Some(value) = value { + self.push_stack(value); + } else { + todo!("Throw exception: Could not get attr {attr:?} on object {obj:?}"); + } + } + Inst::Pop => { + self.pop_stack() + .expect("Inst::Pop executed, but there was no value on top of the stack."); } Inst::Call(argc) => { let argc = *argc; @@ -182,6 +217,29 @@ impl Vm { self.push_stack(return_value); pop_frame = true; } + Inst::JumpRelative(amount, condition) => { + match (self_condition, condition) { + (true, JumpCondition::True) + | (false, JumpCondition::False) + | (_, JumpCondition::Always) => { + // jump taken + pc = (pc as isize + amount - 1) as usize; + } + _ => { + // jump not taken, do nothing + } + } + } + Inst::Compare => { + let top = self.pop_stack().expect( + "Inst::Compare expected a value on top of the stack, but it was empty.", + ); + self.set_condition(top.is_truthy()); + } + Inst::Comment(comment) => { + /* no-op */ + //println!("COMMENT: {comment}"); + } } // Same as the top - this time update the program counter