diff --git a/compiler/src/passes/atomize/atomize.rs b/compiler/src/passes/atomize/atomize.rs index ce9cd7c..8519724 100644 --- a/compiler/src/passes/atomize/atomize.rs +++ b/compiler/src/passes/atomize/atomize.rs @@ -4,6 +4,7 @@ use crate::passes::reveal_functions::{PrgRevealed, RExpr}; use crate::utils::gen_sym::{gen_sym, UniqueSym}; impl<'p> PrgRevealed<'p> { + #[must_use] pub fn atomize(self) -> PrgAtomized<'p> { PrgAtomized { defs: self @@ -99,6 +100,7 @@ fn atomize_expr(expr: RExpr) -> AExpr { sym, bnd: Box::new(atomize_expr(*bnd)), }, + RExpr::Continue => AExpr::Continue, } } @@ -114,7 +116,8 @@ fn atomize_atom(expr: RExpr) -> (Atom, Option<(UniqueSym, AExpr)>) { | RExpr::Break { .. } | RExpr::Seq { .. } | RExpr::Assign { .. } - | RExpr::Var { .. } => { + | RExpr::Var { .. } + | RExpr::Continue => { let tmp = gen_sym("tmp"); (Atom::Var { sym: tmp }, Some((tmp, atomize_expr(expr)))) } diff --git a/compiler/src/passes/atomize/mod.rs b/compiler/src/passes/atomize/mod.rs index d1ba761..f773ab2 100644 --- a/compiler/src/passes/atomize/mod.rs +++ b/compiler/src/passes/atomize/mod.rs @@ -43,6 +43,7 @@ pub enum AExpr<'p> { Break { bdy: Box>, }, + Continue, Seq { stmt: Box>, cnt: Box>, @@ -129,6 +130,7 @@ impl<'p> From> for Expr> { sym, bnd: Box::new((*bnd).into()), }, + AExpr::Continue => Expr::Continue, } } } diff --git a/compiler/src/passes/conclude/conclude.rs b/compiler/src/passes/conclude/conclude.rs index 6224b55..313dcac 100644 --- a/compiler/src/passes/conclude/conclude.rs +++ b/compiler/src/passes/conclude/conclude.rs @@ -3,6 +3,7 @@ use crate::utils::gen_sym::gen_sym; use crate::{addq, block, callq_direct, imm, movq, popq, pushq, reg, subq}; impl<'p> X86Patched<'p> { + #[must_use] pub fn conclude(mut self) -> X86Concluded<'p> { let entry = gen_sym("main"); self.blocks.insert( diff --git a/compiler/src/passes/emit/mod.rs b/compiler/src/passes/emit/mod.rs index b1555b7..3915c0f 100644 --- a/compiler/src/passes/emit/mod.rs +++ b/compiler/src/passes/emit/mod.rs @@ -18,6 +18,7 @@ use crate::utils::gen_sym::UniqueSym; use std::collections::HashMap; impl<'p> X86Concluded<'p> { + #[must_use] pub fn emit(self) -> (usize, Vec) { let mut machine_code = Vec::new(); diff --git a/compiler/src/passes/explicate/explicate.rs b/compiler/src/passes/explicate/explicate.rs index c0dd7be..ad7285b 100644 --- a/compiler/src/passes/explicate/explicate.rs +++ b/compiler/src/passes/explicate/explicate.rs @@ -1,4 +1,5 @@ use crate::passes::atomize::{AExpr, Atom, PrgAtomized}; +use crate::passes::explicate::Tail::Goto; use crate::passes::explicate::{CExpr, PrgExplicated, Tail}; use crate::passes::parse::{Def, Lit, Op}; use crate::utils::gen_sym::{gen_sym, UniqueSym}; @@ -8,6 +9,8 @@ struct Env<'a, 'p> { blocks: &'a mut HashMap, Tail<'p>>, /// (block to jump to, variable to write to) break_target: Option<(UniqueSym<'p>, UniqueSym<'p>)>, + /// block to jump to + continue_target: Option>, } impl<'p> PrgAtomized<'p> { @@ -17,6 +20,7 @@ impl<'p> PrgAtomized<'p> { let mut env = Env { blocks: &mut blocks, break_target: None, + continue_target: None, }; let fn_params = self @@ -111,6 +115,7 @@ fn explicate_assign<'p>( let mut env = Env { blocks: env.blocks, break_target: Some((tail, sym)), + continue_target: Some(loop_block_sym), }; let loop_block = explicate_assign( @@ -153,6 +158,9 @@ fn explicate_assign<'p>( ), env, ), + AExpr::Continue => Goto { + lbl: env.continue_target.unwrap(), + }, } } @@ -287,6 +295,7 @@ fn explicate_pred<'p>( }, } | AExpr::Assign { .. } - | AExpr::Break { .. } => unreachable!(), + | AExpr::Break { .. } + | AExpr::Continue => unreachable!(), } } diff --git a/compiler/src/passes/parse/grammar.lalrpop b/compiler/src/passes/parse/grammar.lalrpop index 5e200f7..1c29799 100644 --- a/compiler/src/passes/parse/grammar.lalrpop +++ b/compiler/src/passes/parse/grammar.lalrpop @@ -1,5 +1,5 @@ use std::str::FromStr; -use crate::passes::parse::{Def, Expr, Lit, Op, Param} +use crate::passes::parse::{Def, Expr, Lit, Op, Param}; use crate::passes::parse::PrgParsed; use crate::passes::type_check::Type; @@ -14,6 +14,7 @@ match { "loop", "while", "break", + "continue", "mut", // Structural tokens @@ -172,6 +173,7 @@ ExprInStmt: Expr<&'input str> = { "break" => Expr::Break { bdy: Box::new(bdy.unwrap_or(Expr::Lit { val: Lit::Unit })), }, + "continue" => Expr::Continue, ExprLogicalOr, } diff --git a/compiler/src/passes/parse/grammar.rs b/compiler/src/passes/parse/grammar.rs index 977ed43..1c2138e 100644 --- a/compiler/src/passes/parse/grammar.rs +++ b/compiler/src/passes/parse/grammar.rs @@ -1,7 +1,7 @@ // auto-generated: "lalrpop 0.20.1" -// sha3: c9e9fedb1e07d89e4fbaef0611beb45686afea48b8df51c64ffcd5ddf109995e +// sha3: d36163131e92e950e9b964d04df47bb8e04a6117e98beb62f6de2ce4ddb033c5 use std::str::FromStr; -use crate::passes::parse::*; +use crate::passes::parse::{Def, Expr, Lit, Op, Param}; use crate::passes::parse::PrgParsed; use crate::passes::type_check::Type; #[allow(unused_extern_crates)] @@ -16,7 +16,7 @@ extern crate alloc; mod __parse__Program { use std::str::FromStr; - use crate::passes::parse::*; + use crate::passes::parse::{Def, Expr, Lit, Op, Param}; use crate::passes::parse::PrgParsed; use crate::passes::type_check::Type; #[allow(unused_extern_crates)] @@ -50,304 +50,306 @@ mod __parse__Program { } const __ACTION: &[i16] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 1 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, // State 3 - 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, // State 4 - 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 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, 59, 60, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 8 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 10 - 0, -54, 0, -54, 0, -54, 0, 89, -54, 90, 0, 0, 0, -54, -54, -54, 0, -54, -54, -54, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, -54, -54, 0, 0, + 0, -54, 0, -54, 0, -54, 0, 90, -54, 91, 0, 0, 0, -54, -54, -54, 0, -54, -54, -54, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, -54, -54, 0, 0, // State 11 - 0, 91, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, -64, 92, 93, 0, 94, 95, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, -64, -64, 0, 0, + 0, 92, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, -64, 93, 94, 0, 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, -64, -64, 0, 0, // State 12 - 0, 0, 0, 97, 0, -72, 0, 0, -72, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, -72, -72, 0, 0, + 0, 0, 0, 98, 0, -73, 0, 0, -73, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, -73, -73, 0, 0, // State 13 - 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 98, -73, 0, 0, + 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 99, -74, 0, 0, // State 14 - 0, -76, 99, -76, 0, -76, 100, -76, -76, -76, 0, 101, 0, -76, -76, -76, 0, -76, -76, -76, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, -76, -76, 0, 0, + 0, -77, 100, -77, 0, -77, 101, -77, -77, -77, 0, 102, 0, -77, -77, -77, 0, -77, -77, -77, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, -77, -77, 0, 0, // State 15 - 0, -86, 0, -86, 0, -86, 0, 0, -86, 0, 0, 0, 0, -86, -86, -86, 0, -86, -86, -86, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, -86, 0, 0, + 0, -87, 0, -87, 0, -87, 0, 0, -87, 0, 0, 0, 0, -87, -87, -87, 0, -87, -87, -87, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, -87, -87, 0, 0, // State 16 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 17 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 18 - 79, 0, 0, 0, 18, -70, 0, 0, -70, 80, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, -70, 87, 49, + 79, 0, 0, 0, 18, -70, 0, 0, -70, 80, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, -70, 88, 49, // State 19 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 20 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, // State 21 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 22 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 23 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 24 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 25 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 26 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 27 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 28 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 29 - 79, 0, 0, 0, 18, -33, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, -33, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 30 - 79, 0, 0, 0, 18, -81, 0, 0, -81, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, -81, 87, 49, + 79, 0, 0, 0, 18, -82, 0, 0, -82, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, -82, 88, 49, // State 31 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 32 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, // State 33 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 34 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 35 - 79, 0, 0, 0, 18, -35, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, -35, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 36 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 37 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 38 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 39 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 85, 86, 87, 0, 0, 0, 0, 88, 49, // State 40 - 79, 0, 0, 0, 18, -78, 0, 0, -78, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, -78, 87, 49, + 79, 0, 0, 0, 18, -79, 0, 0, -79, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, -79, 88, 49, // State 41 - 79, 0, 0, 0, 18, -77, 0, 0, -77, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, -77, 87, 49, + 79, 0, 0, 0, 18, -78, 0, 0, -78, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, -78, 88, 49, // State 42 - 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 81, 0, 20, 21, 82, 0, 83, 84, 85, 86, 22, 0, 0, 0, 87, 49, + 79, 0, 0, 0, 18, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 81, 0, 82, 0, 20, 21, 83, 0, 84, 85, 86, 87, 22, 0, 0, 0, 88, 49, // State 43 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 44 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 45 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 46 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 47 - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 48 - 0, -89, -89, -89, -89, -89, -89, -89, -89, -89, 0, -89, -89, -89, -89, -89, -89, -89, -89, -89, 0, 0, 0, 0, -89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, -89, -89, 0, 0, + 0, -90, -90, -90, -90, -90, -90, -90, -90, -90, 0, -90, -90, -90, -90, -90, -90, -90, -90, -90, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, -90, -90, 0, 0, // State 49 - 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 50 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 51 - 0, 0, 0, 0, 0, -36, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -36, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 52 - 0, 0, 0, 0, 0, -38, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -38, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 53 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, // State 54 - 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, + 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, // State 55 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 56 - 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, + 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, // State 57 - 0, 0, 0, 0, 0, -97, 0, 0, -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -98, 0, 0, -98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 58 - 0, 0, 0, 0, 0, -103, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -104, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, // State 59 - 0, 0, 0, 0, 0, -102, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -103, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, // State 60 - 0, 0, 0, 0, 0, -105, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -106, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0, // State 61 - 0, 0, 0, 0, 0, -104, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -105, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, // State 62 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, // State 63 - 0, -56, -56, -56, -56, -56, -56, -56, -56, -56, 0, -56, 0, -56, -56, -56, 0, -56, -56, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, -56, -56, 0, 0, + 0, -56, -56, -56, -56, -56, -56, -56, -56, -56, 0, -56, 0, -56, -56, -56, 0, -56, -56, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, -56, -56, 0, 0, // State 64 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, // State 65 - 0, -29, 0, -29, 0, -29, 0, 0, -29, 0, 0, 0, 0, -29, -29, -29, 0, -29, -29, -29, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29, -29, -29, 0, 0, + 0, -29, 0, -29, 0, -29, 0, 0, -29, 0, 0, 0, 0, -29, -29, -29, 0, -29, -29, -29, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29, -29, -29, 0, 0, // State 66 - 0, -63, -63, -63, 30, -63, -63, -63, -63, -63, 0, -63, 0, -63, -63, -63, 0, -63, -63, -63, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, -63, -63, 0, 0, + 0, -63, -63, -63, 30, -63, -63, -63, -63, -63, 0, -63, 0, -63, -63, -63, 0, -63, -63, -63, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, -63, -63, 0, 0, // State 67 - 0, -85, -85, -85, 0, -85, -85, -85, -85, -85, 0, -85, 0, -85, -85, -85, 0, -85, -85, -85, 0, 0, 0, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, -85, 0, 0, + 0, -86, -86, -86, 0, -86, -86, -86, -86, -86, 0, -86, 0, -86, -86, -86, 0, -86, -86, -86, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, -86, 0, 0, // State 68 - 0, 0, 0, -23, 0, -23, 0, 0, -23, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, -23, -23, 0, 0, + 0, 0, 0, -23, 0, -23, 0, 0, -23, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, -23, -23, 0, 0, // State 69 - 0, 0, 0, 0, 0, -83, 0, 0, -83, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, 0, + 0, 0, 0, 0, 0, -84, 0, 0, -84, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, 0, 0, // State 70 - 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, -25, -25, 0, 0, + 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, -25, -25, 0, 0, // State 71 - 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, + 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, // State 72 - 0, -19, 0, -19, 0, -19, 0, -19, -19, -19, 0, 0, 0, -19, -19, -19, 0, -19, -19, -19, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, -19, -19, 0, 0, + 0, -19, 0, -19, 0, -19, 0, -19, -19, -19, 0, 0, 0, -19, -19, -19, 0, -19, -19, -19, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, -19, -19, 0, 0, // State 73 - 0, 0, 0, 0, 0, -51, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, + 0, 0, 0, 0, 0, -51, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, // State 74 - 0, -27, -27, -27, 0, -27, -27, -27, -27, -27, 0, -27, 0, -27, -27, -27, 0, -27, -27, -27, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, -27, -27, 0, 0, + 0, -27, -27, -27, 0, -27, -27, -27, -27, -27, 0, -27, 0, -27, -27, -27, 0, -27, -27, -27, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, -27, -27, 0, 0, // State 75 - 0, -21, 0, -21, 0, -21, 0, 0, -21, 0, 0, 0, 0, -21, -21, -21, 0, -21, -21, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, -21, -21, 0, 0, + 0, -21, 0, -21, 0, -21, 0, 0, -21, 0, 0, 0, 0, -21, -21, -21, 0, -21, -21, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, -21, -21, 0, 0, // State 76 - 0, -58, -58, -58, -58, -58, -58, -58, -58, -58, 0, -58, 0, -58, -58, -58, 32, -58, -58, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, -58, 0, 0, + 0, -58, -58, -58, -58, -58, -58, -58, -58, -58, 0, -58, 0, -58, -58, -58, 32, -58, -58, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, -58, 0, 0, // State 77 - 0, -55, -55, -55, -55, -55, -55, -55, -55, -55, 0, -55, 0, -55, -55, -55, 0, -55, -55, -55, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, -55, -55, 0, 0, + 0, -55, -55, -55, -55, -55, -55, -55, -55, -55, 0, -55, 0, -55, -55, -55, 0, -55, -55, -55, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, -55, -55, 0, 0, // State 78 - -107, 0, 0, 0, -107, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, -107, -107, -107, -107, 0, 0, 0, 0, -107, -107, + -108, 0, 0, 0, -108, 0, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0, 0, -108, -108, -108, -108, 0, 0, 0, 0, -108, -108, // State 79 - -106, 0, 0, 0, -106, 0, 0, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0, 0, -106, -106, -106, -106, 0, 0, 0, 0, -106, -106, + -107, 0, 0, 0, -107, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, -107, -107, -107, -107, 0, 0, 0, 0, -107, -107, // State 80 - 0, -31, -31, -31, -31, -31, -31, -31, -31, -31, 0, -31, 0, -31, -31, -31, 0, -31, -31, -31, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, -31, -31, 0, 0, + 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, // State 81 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, + 0, -31, -31, -31, -31, -31, -31, -31, -31, -31, 0, -31, 0, -31, -31, -31, 0, -31, -31, -31, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, -31, -31, 0, 0, // State 82 - 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, // State 83 - 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 84 - 0, -30, -30, -30, -30, -30, -30, -30, -30, -30, 0, -30, 0, -30, -30, -30, 0, -30, -30, -30, 0, 0, 0, 0, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, -30, -30, 0, 0, + 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 85 - 0, -57, -57, -57, -57, -57, -57, -57, -57, -57, 0, -57, 0, -57, -57, -57, 0, -57, -57, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, -57, -57, 0, 0, + 0, -30, -30, -30, -30, -30, -30, -30, -30, -30, 0, -30, 0, -30, -30, -30, 0, -30, -30, -30, 0, 0, 0, 0, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, -30, -30, 0, 0, // State 86 - 0, -95, -95, -95, -95, -95, -95, -95, -95, -95, 0, -95, 0, -95, -95, -95, 0, -95, -95, -95, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, -95, -95, 0, 0, + 0, -57, -57, -57, -57, -57, -57, -57, -57, -57, 0, -57, 0, -57, -57, -57, 0, -57, -57, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, -57, -57, 0, 0, // State 87 - 0, 0, 0, 0, 0, -96, 0, 0, -96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -96, -96, -96, -96, -96, -96, -96, -96, -96, 0, -96, 0, -96, -96, -96, 0, -96, -96, -96, 0, 0, 0, 0, -96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, -96, -96, 0, 0, // State 88 - -16, 0, 0, 0, -16, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, -16, -16, -16, -16, 0, 0, 0, 0, -16, -16, + 0, 0, 0, 0, 0, -97, 0, 0, -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 89 - -17, 0, 0, 0, -17, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, -17, -17, -17, -17, 0, 0, 0, 0, -17, -17, + -16, 0, 0, 0, -16, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, -16, -16, -16, -16, 0, 0, 0, 0, -16, -16, // State 90 - -41, 0, 0, 0, -41, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, -41, -41, -41, -41, 0, 0, 0, 0, -41, -41, + -17, 0, 0, 0, -17, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, -17, -17, -17, -17, 0, 0, 0, 0, -17, -17, // State 91 - -44, 0, 0, 0, -44, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, -44, -44, -44, -44, 0, 0, 0, 0, -44, -44, + -41, 0, 0, 0, -41, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, -41, -41, -41, -41, 0, 0, 0, 0, -41, -41, // State 92 - -45, 0, 0, 0, -45, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, -45, -45, -45, -45, 0, 0, 0, 0, -45, -45, + -44, 0, 0, 0, -44, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, -44, -44, -44, -44, 0, 0, 0, 0, -44, -44, // State 93 - -40, 0, 0, 0, -40, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, -40, -40, -40, -40, 0, 0, 0, 0, -40, -40, + -45, 0, 0, 0, -45, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, -45, -45, -45, -45, 0, 0, 0, 0, -45, -45, // State 94 - -42, 0, 0, 0, -42, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, -42, -42, -42, -42, 0, 0, 0, 0, -42, -42, + -40, 0, 0, 0, -40, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, -40, -40, -40, -40, 0, 0, 0, 0, -40, -40, // State 95 - -43, 0, 0, 0, -43, 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, -43, -43, -43, -43, 0, 0, 0, 0, -43, -43, + -42, 0, 0, 0, -42, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, -42, -42, -42, -42, 0, 0, 0, 0, -42, -42, // State 96 - -90, 0, 0, 0, -90, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, -90, -90, -90, -90, 0, 0, 0, 0, -90, -90, + -43, 0, 0, 0, -43, 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43, 0, 0, 0, 0, 0, -43, -43, -43, -43, 0, 0, 0, 0, -43, -43, // State 97 - -91, 0, 0, 0, -91, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, -91, -91, -91, -91, 0, 0, 0, 0, -91, -91, + -91, 0, 0, 0, -91, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, -91, -91, -91, -91, 0, 0, 0, 0, -91, -91, // State 98 - -94, 0, 0, 0, -94, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, -94, -94, -94, -94, 0, 0, 0, 0, -94, -94, + -92, 0, 0, 0, -92, 0, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, 0, 0, 0, 0, -92, -92, -92, -92, 0, 0, 0, 0, -92, -92, // State 99 - -92, 0, 0, 0, -92, 0, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, 0, 0, 0, 0, -92, -92, -92, -92, 0, 0, 0, 0, -92, -92, + -95, 0, 0, 0, -95, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, -95, -95, -95, -95, 0, 0, 0, 0, -95, -95, // State 100 - -93, 0, 0, 0, -93, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, -93, -93, -93, -93, 0, 0, 0, 0, -93, -93, + -93, 0, 0, 0, -93, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, -93, -93, -93, -93, 0, 0, 0, 0, -93, -93, // State 101 - -108, 0, 0, 0, -108, 0, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0, 0, -108, -108, -108, -108, 0, 0, 0, 0, -108, -108, + -94, 0, 0, 0, -94, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, -94, -94, -94, -94, 0, 0, 0, 0, -94, -94, // State 102 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -109, 0, 0, 0, -109, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, -109, -109, -109, -109, 0, 0, 0, 0, -109, -109, // State 103 - 0, -84, -84, -84, 0, -84, -84, -84, -84, -84, 0, -84, 0, -84, -84, -84, 0, -84, -84, -84, 0, 0, 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, -84, -84, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 104 - 0, -58, -58, -58, -58, -58, -58, -58, -58, -58, 0, -58, 0, -58, -58, -58, 0, -58, -58, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, -58, -58, 0, 0, + 0, -85, -85, -85, 0, -85, -85, -85, -85, -85, 0, -85, 0, -85, -85, -85, 0, -85, -85, -85, 0, 0, 0, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, -85, 0, 0, // State 105 - 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -58, -58, -58, -58, -58, -58, -58, -58, -58, 0, -58, 0, -58, -58, -58, 0, -58, -58, -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, -58, -58, 0, 0, // State 106 - 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, + 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 107 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, // State 108 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, // State 109 - 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 110 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 111 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, // State 112 - 0, -18, 0, -18, 0, -18, 0, -18, -18, -18, 0, 0, 0, -18, -18, -18, 0, -18, -18, -18, 0, 0, 0, 0, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, -18, -18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, // State 113 - 0, -20, 0, -20, 0, -20, 0, 0, -20, 0, 0, 0, 0, -20, -20, -20, 0, -20, -20, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, -20, -20, 0, 0, + 0, -18, 0, -18, 0, -18, 0, -18, -18, -18, 0, 0, 0, -18, -18, -18, 0, -18, -18, -18, 0, 0, 0, 0, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, -18, -18, 0, 0, // State 114 - 0, 0, 0, -22, 0, -22, 0, 0, -22, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, -22, -22, 0, 0, + 0, -20, 0, -20, 0, -20, 0, 0, -20, 0, 0, 0, 0, -20, -20, -20, 0, -20, -20, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, -20, -20, 0, 0, // State 115 - 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, -24, -24, 0, 0, + 0, 0, 0, -22, 0, -22, 0, 0, -22, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, -22, -22, 0, 0, // State 116 - 0, -26, -26, -26, 0, -26, -26, -26, -26, -26, 0, -26, 0, -26, -26, -26, 0, -26, -26, -26, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, -26, -26, 0, 0, + 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, -24, -24, 0, 0, // State 117 - 0, -28, 0, -28, 0, -28, 0, 0, -28, 0, 0, 0, 0, -28, -28, -28, 0, -28, -28, -28, 0, 0, 0, 0, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, -28, -28, 0, 0, + 0, -26, -26, -26, 0, -26, -26, -26, -26, -26, 0, -26, 0, -26, -26, -26, 0, -26, -26, -26, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, -26, -26, 0, 0, // State 118 - 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -28, 0, -28, 0, -28, 0, 0, -28, 0, 0, 0, 0, -28, -28, -28, 0, -28, -28, -28, 0, 0, 0, 0, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, -28, -28, 0, 0, // State 119 - 0, 0, 0, 0, 0, -32, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 120 - 0, 0, 0, 0, 0, -82, 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82, 0, 0, + 0, 0, 0, 0, 0, -32, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 121 - 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, + 0, 0, 0, 0, 0, -83, 0, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, 0, // State 122 - 0, -59, -59, -59, -59, -59, -59, -59, -59, -59, 0, -59, 0, -59, -59, -59, 0, -59, -59, -59, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, -59, -59, 0, 0, + 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, // State 123 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -59, -59, -59, -59, -59, -59, -59, -59, -59, 0, -59, 0, -59, -59, -59, 0, -59, -59, -59, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, -59, -59, 0, 0, // State 124 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 125 - 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, // State 126 - 0, -60, -60, -60, 0, -60, -60, -60, -60, -60, 0, -60, 0, -60, -60, -60, 0, -60, -60, -60, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, -60, -60, 0, 0, + 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 127 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -60, -60, -60, 0, -60, -60, -60, -60, -60, 0, -60, 0, -60, -60, -60, 0, -60, -60, -60, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, -60, -60, 0, 0, // State 128 - 0, 0, 0, 0, 0, -34, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 129 - 0, -62, -62, -62, 0, -62, -62, -62, -62, -62, 0, -62, 0, -62, -62, -62, 0, -62, -62, -62, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, -62, -62, 0, 0, + 0, 0, 0, 0, 0, -34, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 130 - -9, 0, 0, 0, -9, -9, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, -9, 0, -9, -9, -9, 0, -9, -9, -9, -9, -9, 0, 0, 0, -9, -9, + 0, -62, -62, -62, 0, -62, -62, -62, -62, -62, 0, -62, 0, -62, -62, -62, 0, -62, -62, -62, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, -62, -62, 0, 0, // State 131 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, + -9, 0, 0, 0, -9, -9, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -9, 0, -9, 0, -9, -9, -9, 0, -9, -9, -9, -9, -9, 0, 0, 0, -9, -9, // State 132 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, // State 133 - 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 134 - 0, -61, -61, -61, 0, -61, -61, -61, -61, -61, 0, -61, 0, -61, -61, -61, 0, -61, -61, -61, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, -61, -61, 0, 0, + 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, // State 135 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, + 0, -61, -61, -61, 0, -61, -61, -61, -61, -61, 0, -61, 0, -61, -61, -61, 0, -61, -61, -61, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, -61, -61, 0, 0, // State 136 - -10, 0, 0, 0, -10, -10, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, -10, 0, -10, -10, -10, 0, -10, -10, -10, -10, -10, 0, 0, 0, -10, -10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, // State 137 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -10, 0, 0, 0, -10, -10, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -10, 0, -10, 0, -10, -10, -10, 0, -10, -10, -10, -10, -10, 0, 0, 0, -10, -10, // State 138 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 139 - 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 140 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, // State 141 - 0, 0, 0, 0, 0, -80, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, // State 142 - 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, + 0, 0, 0, 0, 0, -81, 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, 0, 0, // State 143 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, + 0, 0, 0, 0, 0, -80, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, // State 144 - 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, + // State 145 + 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, ]; fn __action(state: i16, integer: usize) -> i16 { - __ACTION[(state as usize) * 43 + integer] + __ACTION[(state as usize) * 44 + integer] } const __EOF_ACTION: &[i16] = &[ // State 0 - -100, - // State 1 -101, + // State 1 + -102, // State 2 0, // State 3 @@ -435,7 +437,7 @@ mod __parse__Program { // State 44 -46, // State 45 - -109, + -110, // State 46 -50, // State 47 @@ -549,9 +551,9 @@ mod __parse__Program { // State 101 0, // State 102 - -88, - // State 103 0, + // State 103 + -89, // State 104 0, // State 105 @@ -599,9 +601,9 @@ mod __parse__Program { // State 126 0, // State 127 - -87, - // State 128 0, + // State 128 + -88, // State 129 0, // State 130 @@ -634,6 +636,8 @@ mod __parse__Program { 0, // State 144 0, + // State 145 + 0, ]; fn __goto(state: i16, nt: usize) -> i16 { match nt { @@ -647,7 +651,7 @@ mod __parse__Program { 14 => 14, 15 => 15, 16 => 63, - 17 => 118, + 17 => 119, 18 => 49, 19 => 24, 20 => match state { @@ -656,58 +660,58 @@ mod __parse__Program { }, 22 => 1, 23 => match state { - 17 => 105, - 22 => 111, - 29 => 119, - 33 => 124, - 34 => 125, - 35 => 128, - 36 => 131, - 38 => 135, - 42 => 143, + 17 => 106, + 22 => 112, + 29 => 120, + 33 => 125, + 34 => 126, + 35 => 129, + 36 => 132, + 38 => 136, + 42 => 144, _ => 64, }, 25 => match state { - 28 => 117, + 28 => 118, _ => 65, }, 26 => 66, 27 => 67, 28 => match state { - 25 => 114, + 25 => 115, _ => 68, }, 29 => 69, 30 => match state { - 26 => 115, + 26 => 116, _ => 70, }, 31 => match state { - 18 => 106, - 19 => 107, - 21 => 110, - 31 => 121, - 37 => 132, - 39 => 138, + 18 => 107, + 19 => 108, + 21 => 111, + 31 => 122, + 37 => 133, + 39 => 139, _ => 71, }, 33 => match state { - 23 => 112, + 23 => 113, _ => 72, }, 34 => match state { - 30 => 120, - 40 => 141, - 41 => 142, + 30 => 121, + 40 => 142, + 41 => 143, _ => 73, }, 35 => match state { - 16 => 103, - 27 => 116, + 16 => 104, + 27 => 117, _ => 74, }, 36 => match state { - 24 => 113, + 24 => 114, _ => 75, }, 37 => 44, @@ -715,9 +719,9 @@ mod __parse__Program { 2 => 47, 3..=4 => 50, 5 => 55, - 16 | 18..=19 | 21 | 23..=28 | 31 | 37 | 39 => 104, - 20 => 108, - 32 => 123, + 16 | 18..=19 | 21 | 23..=28 | 31 | 37 | 39 => 105, + 20 => 109, + 32 => 124, _ => 76, }, 39 => 25, @@ -731,7 +735,7 @@ mod __parse__Program { 45 => 45, 46 => match state { 7 => 62, - 9 => 87, + 9 => 88, _ => 57, }, 47 => 16, @@ -766,6 +770,7 @@ mod __parse__Program { r###""Unit""###, r###""^""###, r###""break""###, + r###""continue""###, r###""else""###, r###""false""###, r###""fn""###, @@ -851,7 +856,7 @@ mod __parse__Program { #[inline] fn error_action(&self, state: i16) -> i16 { - __action(state, 43 - 1) + __action(state, 44 - 1) } #[inline] @@ -959,8 +964,9 @@ mod __parse__Program { Token(41, _) if true => Some(38), Token(42, _) if true => Some(39), Token(43, _) if true => Some(40), - Token(0, _) if true => Some(41), - Token(1, _) if true => Some(42), + Token(44, _) if true => Some(41), + Token(0, _) if true => Some(42), + Token(1, _) if true => Some(43), _ => None, } } @@ -973,8 +979,8 @@ mod __parse__Program { ) -> __Symbol<'input> { #[allow(clippy::manual_range_patterns)]match __token_index { - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 => match __token { - Token(3, __tok0) | 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(13, __tok0) | Token(14, __tok0) | Token(15, __tok0) | Token(16, __tok0) | Token(17, __tok0) | Token(18, __tok0) | Token(19, __tok0) | Token(20, __tok0) | Token(21, __tok0) | Token(22, __tok0) | Token(23, __tok0) | Token(24, __tok0) | Token(25, __tok0) | Token(26, __tok0) | Token(27, __tok0) | Token(28, __tok0) | Token(29, __tok0) | Token(30, __tok0) | Token(31, __tok0) | Token(32, __tok0) | Token(33, __tok0) | Token(34, __tok0) | Token(35, __tok0) | Token(36, __tok0) | Token(37, __tok0) | Token(38, __tok0) | Token(39, __tok0) | Token(40, __tok0) | Token(41, __tok0) | Token(42, __tok0) | Token(43, __tok0) | Token(0, __tok0) | Token(1, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 => match __token { + Token(3, __tok0) | 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(13, __tok0) | Token(14, __tok0) | Token(15, __tok0) | Token(16, __tok0) | Token(17, __tok0) | Token(18, __tok0) | Token(19, __tok0) | Token(20, __tok0) | Token(21, __tok0) | Token(22, __tok0) | Token(23, __tok0) | Token(24, __tok0) | Token(25, __tok0) | Token(26, __tok0) | Token(27, __tok0) | Token(28, __tok0) | Token(29, __tok0) | Token(30, __tok0) | Token(31, __tok0) | Token(32, __tok0) | Token(33, __tok0) | Token(34, __tok0) | Token(35, __tok0) | Token(36, __tok0) | Token(37, __tok0) | Token(38, __tok0) | Token(39, __tok0) | Token(40, __tok0) | Token(41, __tok0) | Token(42, __tok0) | Token(43, __tok0) | Token(44, __tok0) | Token(0, __tok0) | Token(1, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -1417,127 +1423,127 @@ mod __parse__Program { 71 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 30, + nonterminal_produced: 29, } } 72 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 30, } } 73 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 32, + nonterminal_produced: 31, } } 74 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, + states_to_pop: 1, nonterminal_produced: 32, } } 75 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 32, + } + } + 76 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, nonterminal_produced: 33, } } - 76 => { + 77 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 6, nonterminal_produced: 34, } } - 77 => { + 78 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 5, nonterminal_produced: 34, } } - 78 => { + 79 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 7, nonterminal_produced: 34, } } - 79 => { + 80 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 6, nonterminal_produced: 34, } } - 80 => { + 81 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, nonterminal_produced: 34, } } - 81 => { + 82 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 3, nonterminal_produced: 34, } } - 82 => { + 83 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, nonterminal_produced: 34, } } - 83 => { + 84 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, nonterminal_produced: 35, } } - 84 => { + 85 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, nonterminal_produced: 35, } } - 85 => { + 86 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, nonterminal_produced: 36, } } - 86 => { + 87 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 10, nonterminal_produced: 37, } } - 87 => { + 88 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 8, nonterminal_produced: 37, } } - 88 => { - __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 38, - } - } 89 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 39, + nonterminal_produced: 38, } } 90 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 40, + nonterminal_produced: 39, } } 91 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 41, + nonterminal_produced: 40, } } 92 => { @@ -1555,49 +1561,49 @@ mod __parse__Program { 94 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 42, + nonterminal_produced: 41, } } 95 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 4, - nonterminal_produced: 43, + states_to_pop: 1, + nonterminal_produced: 42, } } 96 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 4, nonterminal_produced: 43, } } 97 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 44, + states_to_pop: 3, + nonterminal_produced: 43, } } 98 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, + states_to_pop: 1, nonterminal_produced: 44, } } 99 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 0, - nonterminal_produced: 45, + nonterminal_produced: 44, } } 100 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 0, nonterminal_produced: 45, } } 101 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 46, + nonterminal_produced: 45, } } 102 => { @@ -1621,7 +1627,7 @@ mod __parse__Program { 105 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 47, + nonterminal_produced: 46, } } 106 => { @@ -1631,12 +1637,18 @@ mod __parse__Program { } } 107 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, + } + } + 108 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, nonterminal_produced: 48, } } - 108 => __state_machine::SimulatedReduce::Accept, + 109 => __state_machine::SimulatedReduce::Accept, _ => panic!("invalid reduction index {}", __reduce_index) } } @@ -2043,6 +2055,9 @@ mod __parse__Program { __reduce107(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 108 => { + __reduce108(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 109 => { // __Program = Program => ActionFn(0); let __sym0 = __pop_Variant17(__symbols); let __start = __sym0.0; @@ -2270,11 +2285,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "mut"? = "mut" => ActionFn(73); + // "mut"? = "mut" => ActionFn(74); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action73::<>(input, __sym0); + let __nt = super::__action74::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 0) } @@ -2287,10 +2302,10 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "mut"? = => ActionFn(74); + // "mut"? = => ActionFn(75); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action74::<>(input, &__start, &__end); + let __nt = super::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (0, 0) } @@ -2303,13 +2318,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ("->" ) = "->", Type => ActionFn(77); + // ("->" ) = "->", Type => ActionFn(78); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action77::<>(input, __sym0, __sym1); + let __nt = super::__action78::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 1) } @@ -2322,13 +2337,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ("->" )? = "->", Type => ActionFn(103); + // ("->" )? = "->", Type => ActionFn(104); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action103::<>(input, __sym0, __sym1); + let __nt = super::__action104::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 2) } @@ -2341,10 +2356,10 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ("->" )? = => ActionFn(76); + // ("->" )? = => ActionFn(77); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action76::<>(input, &__start, &__end); + let __nt = super::__action77::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (0, 2) } @@ -2357,13 +2372,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Expr, "," => ActionFn(92); + // ( ",") = Expr, "," => ActionFn(93); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action92::<>(input, __sym0, __sym1); + let __nt = super::__action93::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 3) } @@ -2376,10 +2391,10 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(90); + // ( ",")* = => ActionFn(91); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action90::<>(input, &__start, &__end); + let __nt = super::__action91::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 4) } @@ -2392,11 +2407,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(91); + // ( ",")* = ( ",")+ => ActionFn(92); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action91::<>(input, __sym0); + let __nt = super::__action92::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 4) } @@ -2409,13 +2424,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Expr, "," => ActionFn(106); + // ( ",")+ = Expr, "," => ActionFn(107); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action106::<>(input, __sym0, __sym1); + let __nt = super::__action107::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 5) } @@ -2428,14 +2443,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Expr, "," => ActionFn(107); + // ( ",")+ = ( ",")+, Expr, "," => ActionFn(108); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action107::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action108::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 5) } @@ -2448,13 +2463,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Param, "," => ActionFn(87); + // ( ",") = Param, "," => ActionFn(88); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action87::<>(input, __sym0, __sym1); + let __nt = super::__action88::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 6) } @@ -2467,10 +2482,10 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(85); + // ( ",")* = => ActionFn(86); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action85::<>(input, &__start, &__end); + let __nt = super::__action86::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 7) } @@ -2483,11 +2498,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(86); + // ( ",")* = ( ",")+ => ActionFn(87); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action86::<>(input, __sym0); + let __nt = super::__action87::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 7) } @@ -2500,13 +2515,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Param, "," => ActionFn(110); + // ( ",")+ = Param, "," => ActionFn(111); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action110::<>(input, __sym0, __sym1); + let __nt = super::__action111::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 8) } @@ -2519,14 +2534,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Param, "," => ActionFn(111); + // ( ",")+ = ( ",")+, Param, "," => ActionFn(112); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action111::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action112::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (3, 8) } @@ -2539,11 +2554,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AdditiveOp = "+" => ActionFn(36); + // AdditiveOp = "+" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action36::<>(input, __sym0); + let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } @@ -2556,11 +2571,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // AdditiveOp = "-" => ActionFn(37); + // AdditiveOp = "-" => ActionFn(38); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action37::<>(input, __sym0); + let __nt = super::__action38::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 9) } @@ -2573,14 +2588,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = BinaryOps, AdditiveOp, ExprMultiplicative => ActionFn(61); + // BinaryOps = BinaryOps, AdditiveOp, ExprMultiplicative => ActionFn(62); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant4(__symbols); let __sym1 = __pop_Variant8(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action61::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action62::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 10) } @@ -2593,11 +2608,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = ExprMultiplicative => ActionFn(62); + // BinaryOps = ExprMultiplicative => ActionFn(63); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action62::<>(input, __sym0); + let __nt = super::__action63::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 10) } @@ -2610,14 +2625,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = BinaryOps, ComparativeOp, ExprXor => ActionFn(65); + // BinaryOps = BinaryOps, ComparativeOp, ExprXor => ActionFn(66); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant4(__symbols); let __sym1 = __pop_Variant8(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 11) } @@ -2630,11 +2645,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = ExprXor => ActionFn(66); + // BinaryOps = ExprXor => ActionFn(67); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action66::<>(input, __sym0); + let __nt = super::__action67::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 11) } @@ -2647,14 +2662,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = BinaryOps, LogicalAndOp, ExprComparative => ActionFn(67); + // BinaryOps = BinaryOps, LogicalAndOp, ExprComparative => ActionFn(68); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant4(__symbols); let __sym1 = __pop_Variant8(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action67::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action68::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 12) } @@ -2667,11 +2682,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = ExprComparative => ActionFn(68); + // BinaryOps = ExprComparative => ActionFn(69); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action68::<>(input, __sym0); + let __nt = super::__action69::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 12) } @@ -2684,14 +2699,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = BinaryOps, LogicalOrOp, ExprLogicalAnd => ActionFn(69); + // BinaryOps = BinaryOps, LogicalOrOp, ExprLogicalAnd => ActionFn(70); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant4(__symbols); let __sym1 = __pop_Variant8(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action69::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action70::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 13) } @@ -2704,11 +2719,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = ExprLogicalAnd => ActionFn(70); + // BinaryOps = ExprLogicalAnd => ActionFn(71); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 13) } @@ -2721,14 +2736,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = BinaryOps, MultiplicativeOp, ExprUnary => ActionFn(59); + // BinaryOps = BinaryOps, MultiplicativeOp, ExprUnary => ActionFn(60); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant4(__symbols); let __sym1 = __pop_Variant8(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action59::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action60::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 14) } @@ -2741,11 +2756,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = ExprUnary => ActionFn(60); + // BinaryOps = ExprUnary => ActionFn(61); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action60::<>(input, __sym0); + let __nt = super::__action61::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 14) } @@ -2758,14 +2773,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = BinaryOps, XorOp, ExprAdditive => ActionFn(63); + // BinaryOps = BinaryOps, XorOp, ExprAdditive => ActionFn(64); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant4(__symbols); let __sym1 = __pop_Variant8(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 15) } @@ -2778,11 +2793,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BinaryOps = ExprAdditive => ActionFn(64); + // BinaryOps = ExprAdditive => ActionFn(65); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action64::<>(input, __sym0); + let __nt = super::__action65::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 15) } @@ -2795,11 +2810,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Bool = "true" => ActionFn(56); + // Bool = "true" => ActionFn(57); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action56::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 16) } @@ -2812,11 +2827,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Bool = "false" => ActionFn(57); + // Bool = "false" => ActionFn(58); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action57::<>(input, __sym0); + let __nt = super::__action58::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 16) } @@ -2829,11 +2844,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Expr => ActionFn(116); + // Comma = Expr => ActionFn(117); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action116::<>(input, __sym0); + let __nt = super::__action117::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 17) } @@ -2846,10 +2861,10 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(117); + // Comma = => ActionFn(118); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action117::<>(input, &__start, &__end); + let __nt = super::__action118::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (0, 17) } @@ -2862,13 +2877,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Expr => ActionFn(118); + // Comma = ( ",")+, Expr => ActionFn(119); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action118::<>(input, __sym0, __sym1); + let __nt = super::__action119::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 17) } @@ -2881,11 +2896,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(119); + // Comma = ( ",")+ => ActionFn(120); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action119::<>(input, __sym0); + let __nt = super::__action120::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 17) } @@ -2898,11 +2913,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Param => ActionFn(122); + // Comma = Param => ActionFn(123); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action122::<>(input, __sym0); + let __nt = super::__action123::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 18) } @@ -2915,10 +2930,10 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(123); + // Comma = => ActionFn(124); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action123::<>(input, &__start, &__end); + let __nt = super::__action124::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (0, 18) } @@ -2931,13 +2946,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Param => ActionFn(124); + // Comma = ( ",")+, Param => ActionFn(125); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action124::<>(input, __sym0, __sym1); + let __nt = super::__action125::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (2, 18) } @@ -2950,11 +2965,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(125); + // Comma = ( ",")+ => ActionFn(126); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action125::<>(input, __sym0); + let __nt = super::__action126::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 18) } @@ -2967,11 +2982,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ComparativeOp = "==" => ActionFn(29); + // ComparativeOp = "==" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action29::<>(input, __sym0); + let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 19) } @@ -2984,11 +2999,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ComparativeOp = "!=" => ActionFn(30); + // ComparativeOp = "!=" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action30::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 19) } @@ -3001,11 +3016,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ComparativeOp = ">" => ActionFn(31); + // ComparativeOp = ">" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action31::<>(input, __sym0); + let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 19) } @@ -3018,11 +3033,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ComparativeOp = ">=" => ActionFn(32); + // ComparativeOp = ">=" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action32::<>(input, __sym0); + let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 19) } @@ -3035,11 +3050,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ComparativeOp = "<" => ActionFn(33); + // ComparativeOp = "<" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 19) } @@ -3052,11 +3067,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ComparativeOp = "<=" => ActionFn(34); + // ComparativeOp = "<=" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action34::<>(input, __sym0); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 19) } @@ -3086,10 +3101,10 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Def* = => ActionFn(79); + // Def* = => ActionFn(80); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action79::<>(input, &__start, &__end); + let __nt = super::__action80::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (0, 21) } @@ -3102,11 +3117,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Def* = Def+ => ActionFn(80); + // Def* = Def+ => ActionFn(81); let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action80::<>(input, __sym0); + let __nt = super::__action81::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 21) } @@ -3119,11 +3134,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Def+ = Def => ActionFn(81); + // Def+ = Def => ActionFn(82); let __sym0 = __pop_Variant12(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action81::<>(input, __sym0); + let __nt = super::__action82::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 22) } @@ -3136,13 +3151,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Def+ = Def+, Def => ActionFn(82); + // Def+ = Def+, Def => ActionFn(83); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant12(__symbols); let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action82::<>(input, __sym0, __sym1); + let __nt = super::__action83::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (2, 22) } @@ -3172,11 +3187,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr? = Expr => ActionFn(88); + // Expr? = Expr => ActionFn(89); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action88::<>(input, __sym0); + let __nt = super::__action89::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); (1, 24) } @@ -3189,10 +3204,10 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr? = => ActionFn(89); + // Expr? = => ActionFn(90); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action89::<>(input, &__start, &__end); + let __nt = super::__action90::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); (0, 24) } @@ -3205,11 +3220,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprAdditive = BinaryOps => ActionFn(25); + // ExprAdditive = BinaryOps => ActionFn(26); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action25::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 25) } @@ -3222,11 +3237,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprAtom = Num => ActionFn(49); + // ExprAtom = Num => ActionFn(50); let __sym0 = __pop_Variant15(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action49::<>(input, __sym0); + let __nt = super::__action50::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 26) } @@ -3239,11 +3254,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprAtom = Bool => ActionFn(50); + // ExprAtom = Bool => ActionFn(51); let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action50::<>(input, __sym0); + let __nt = super::__action51::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 26) } @@ -3256,11 +3271,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprAtom = "unit" => ActionFn(51); + // ExprAtom = "unit" => ActionFn(52); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action51::<>(input, __sym0); + let __nt = super::__action52::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 26) } @@ -3273,11 +3288,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprAtom = Ident => ActionFn(52); + // ExprAtom = Ident => ActionFn(53); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action52::<>(input, __sym0); + let __nt = super::__action53::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 26) } @@ -3290,14 +3305,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprAtom = "(", Expr, ")" => ActionFn(53); + // ExprAtom = "(", Expr, ")" => ActionFn(54); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action53::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action54::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 26) } @@ -3310,14 +3325,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprCall = "read", "(", ")" => ActionFn(45); + // ExprCall = "read", "(", ")" => ActionFn(46); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action45::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 27) } @@ -3330,7 +3345,7 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprCall = "print", "(", Expr, ")" => ActionFn(46); + // ExprCall = "print", "(", Expr, ")" => ActionFn(47); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant0(__symbols); let __sym2 = __pop_Variant4(__symbols); @@ -3338,7 +3353,7 @@ mod __parse__Program { let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action46::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action47::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (4, 27) } @@ -3351,7 +3366,7 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprCall = ExprAtom, "(", Comma, ")" => ActionFn(47); + // ExprCall = ExprAtom, "(", Comma, ")" => ActionFn(48); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant0(__symbols); let __sym2 = __pop_Variant10(__symbols); @@ -3359,7 +3374,7 @@ mod __parse__Program { let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action47::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (4, 27) } @@ -3372,11 +3387,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprCall = ExprAtom => ActionFn(48); + // ExprCall = ExprAtom => ActionFn(49); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action48::<>(input, __sym0); + let __nt = super::__action49::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 27) } @@ -3389,11 +3404,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprComparative = BinaryOps => ActionFn(23); + // ExprComparative = BinaryOps => ActionFn(24); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action23::<>(input, __sym0); + let __nt = super::__action24::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 28) } @@ -3495,13 +3510,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprInStmt = "break", ExprLogicalOr => ActionFn(120); + // ExprInStmt = "break", ExprLogicalOr => ActionFn(121); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action120::<>(input, __sym0, __sym1); + let __nt = super::__action121::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 29) } @@ -3514,11 +3529,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprInStmt = "break" => ActionFn(121); + // ExprInStmt = "break" => ActionFn(122); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action121::<>(input, __sym0); + let __nt = super::__action122::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 29) } @@ -3531,8 +3546,8 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprInStmt = ExprLogicalOr => ActionFn(20); - let __sym0 = __pop_Variant4(__symbols); + // ExprInStmt = "continue" => ActionFn(20); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action20::<>(input, __sym0); @@ -3548,13 +3563,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprLogicalAnd = BinaryOps => ActionFn(22); + // ExprInStmt = ExprLogicalOr => ActionFn(21); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action22::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 30) + (1, 29) } fn __reduce72< 'input, @@ -3565,13 +3580,13 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprLogicalOr = BinaryOps => ActionFn(21); + // ExprLogicalAnd = BinaryOps => ActionFn(23); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action21::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + (1, 30) } fn __reduce73< 'input, @@ -3582,15 +3597,32 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprLogicalOr? = ExprLogicalOr => ActionFn(71); + // ExprLogicalOr = BinaryOps => ActionFn(22); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action71::<>(input, __sym0); + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 31) + } + fn __reduce74< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // ExprLogicalOr? = ExprLogicalOr => ActionFn(72); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action72::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); (1, 32) } - fn __reduce74< + fn __reduce75< 'input, >( input: &'input str, @@ -3599,14 +3631,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprLogicalOr? = => ActionFn(72); + // ExprLogicalOr? = => ActionFn(73); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action72::<>(input, &__start, &__end); + let __nt = super::__action73::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); (0, 32) } - fn __reduce75< + fn __reduce76< 'input, >( input: &'input str, @@ -3615,15 +3647,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprMultiplicative = BinaryOps => ActionFn(26); + // ExprMultiplicative = BinaryOps => ActionFn(27); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action27::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 33) } - fn __reduce76< + fn __reduce77< 'input, >( input: &'input str, @@ -3632,7 +3664,7 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprStmt = "let", "mut", Ident, "=", ExprLogicalOr, ";" => ActionFn(97); + // ExprStmt = "let", "mut", Ident, "=", ExprLogicalOr, ";" => ActionFn(98); assert!(__symbols.len() >= 6); let __sym5 = __pop_Variant0(__symbols); let __sym4 = __pop_Variant4(__symbols); @@ -3642,11 +3674,11 @@ mod __parse__Program { let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym5.2; - let __nt = super::__action97::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (6, 34) } - fn __reduce77< + fn __reduce78< 'input, >( input: &'input str, @@ -3655,7 +3687,7 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprStmt = "let", Ident, "=", ExprLogicalOr, ";" => ActionFn(98); + // ExprStmt = "let", Ident, "=", ExprLogicalOr, ";" => ActionFn(99); assert!(__symbols.len() >= 5); let __sym4 = __pop_Variant0(__symbols); let __sym3 = __pop_Variant4(__symbols); @@ -3664,11 +3696,11 @@ mod __parse__Program { let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym4.2; - let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (5, 34) } - fn __reduce78< + fn __reduce79< 'input, >( input: &'input str, @@ -3677,7 +3709,7 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprStmt = "let", "mut", Ident, "=", ExprLogicalOr, ";", ExprStmt => ActionFn(99); + // ExprStmt = "let", "mut", Ident, "=", ExprLogicalOr, ";", ExprStmt => ActionFn(100); assert!(__symbols.len() >= 7); let __sym6 = __pop_Variant4(__symbols); let __sym5 = __pop_Variant0(__symbols); @@ -3688,11 +3720,11 @@ mod __parse__Program { let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym6.2; - let __nt = super::__action99::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (7, 34) } - fn __reduce79< + fn __reduce80< 'input, >( input: &'input str, @@ -3701,7 +3733,7 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprStmt = "let", Ident, "=", ExprLogicalOr, ";", ExprStmt => ActionFn(100); + // ExprStmt = "let", Ident, "=", ExprLogicalOr, ";", ExprStmt => ActionFn(101); assert!(__symbols.len() >= 6); let __sym5 = __pop_Variant4(__symbols); let __sym4 = __pop_Variant0(__symbols); @@ -3711,11 +3743,11 @@ mod __parse__Program { let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym5.2; - let __nt = super::__action100::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (6, 34) } - fn __reduce80< + fn __reduce81< 'input, >( input: &'input str, @@ -3734,7 +3766,7 @@ mod __parse__Program { __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 34) } - fn __reduce81< + fn __reduce82< 'input, >( input: &'input str, @@ -3754,7 +3786,7 @@ mod __parse__Program { __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 34) } - fn __reduce82< + fn __reduce83< 'input, >( input: &'input str, @@ -3771,7 +3803,7 @@ mod __parse__Program { __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 34) } - fn __reduce83< + fn __reduce84< 'input, >( input: &'input str, @@ -3780,17 +3812,17 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprUnary = UnaryOp, ExprUnary => ActionFn(43); + // ExprUnary = UnaryOp, ExprUnary => ActionFn(44); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action43::<>(input, __sym0, __sym1); + let __nt = super::__action44::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 35) } - fn __reduce84< + fn __reduce85< 'input, >( input: &'input str, @@ -3799,15 +3831,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprUnary = ExprCall => ActionFn(44); + // ExprUnary = ExprCall => ActionFn(45); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action45::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 35) } - fn __reduce85< + fn __reduce86< 'input, >( input: &'input str, @@ -3816,15 +3848,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ExprXor = BinaryOps => ActionFn(24); + // ExprXor = BinaryOps => ActionFn(25); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action24::<>(input, __sym0); + let __nt = super::__action25::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 36) } - fn __reduce86< + fn __reduce87< 'input, >( input: &'input str, @@ -3833,7 +3865,7 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Fn = "fn", Ident, "(", Comma, ")", "->", Type, "{", Expr, "}" => ActionFn(104); + // Fn = "fn", Ident, "(", Comma, ")", "->", Type, "{", Expr, "}" => ActionFn(105); assert!(__symbols.len() >= 10); let __sym9 = __pop_Variant0(__symbols); let __sym8 = __pop_Variant4(__symbols); @@ -3847,11 +3879,11 @@ mod __parse__Program { let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym9.2; - let __nt = super::__action104::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9); + let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (10, 37) } - fn __reduce87< + fn __reduce88< 'input, >( input: &'input str, @@ -3860,7 +3892,7 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Fn = "fn", Ident, "(", Comma, ")", "{", Expr, "}" => ActionFn(105); + // Fn = "fn", Ident, "(", Comma, ")", "{", Expr, "}" => ActionFn(106); assert!(__symbols.len() >= 8); let __sym7 = __pop_Variant0(__symbols); let __sym6 = __pop_Variant4(__symbols); @@ -3872,11 +3904,11 @@ mod __parse__Program { let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym7.2; - let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (8, 37) } - fn __reduce88< + fn __reduce89< 'input, >( input: &'input str, @@ -3885,15 +3917,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Ident = r#"[_a-zA-Z][_a-zA-Z0-9]*"# => ActionFn(54); + // Ident = r#"[_a-zA-Z][_a-zA-Z0-9]*"# => ActionFn(55); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action54::<>(input, __sym0); + let __nt = super::__action55::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant0(__nt), __end)); (1, 38) } - fn __reduce89< + fn __reduce90< 'input, >( input: &'input str, @@ -3902,15 +3934,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // LogicalAndOp = "&&" => ActionFn(28); + // LogicalAndOp = "&&" => ActionFn(29); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action28::<>(input, __sym0); + let __nt = super::__action29::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 39) } - fn __reduce90< + fn __reduce91< 'input, >( input: &'input str, @@ -3919,15 +3951,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // LogicalOrOp = "||" => ActionFn(27); + // LogicalOrOp = "||" => ActionFn(28); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action27::<>(input, __sym0); + let __nt = super::__action28::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 40) } - fn __reduce91< + fn __reduce92< 'input, >( input: &'input str, @@ -3936,15 +3968,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // MultiplicativeOp = "*" => ActionFn(38); + // MultiplicativeOp = "*" => ActionFn(39); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action38::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 41) } - fn __reduce92< + fn __reduce93< 'input, >( input: &'input str, @@ -3953,15 +3985,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // MultiplicativeOp = "/" => ActionFn(39); + // MultiplicativeOp = "/" => ActionFn(40); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action39::<>(input, __sym0); + let __nt = super::__action40::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 41) } - fn __reduce93< + fn __reduce94< 'input, >( input: &'input str, @@ -3970,15 +4002,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // MultiplicativeOp = "%" => ActionFn(40); + // MultiplicativeOp = "%" => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action41::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 41) } - fn __reduce94< + fn __reduce95< 'input, >( input: &'input str, @@ -3987,15 +4019,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Num = r#"[0-9]+"# => ActionFn(55); + // Num = r#"[0-9]+"# => ActionFn(56); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action55::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant15(__nt), __end)); (1, 42) } - fn __reduce95< + fn __reduce96< 'input, >( input: &'input str, @@ -4004,7 +4036,7 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Param = "mut", Ident, ":", Type => ActionFn(101); + // Param = "mut", Ident, ":", Type => ActionFn(102); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant2(__symbols); let __sym2 = __pop_Variant0(__symbols); @@ -4012,11 +4044,11 @@ mod __parse__Program { let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action101::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (4, 43) } - fn __reduce96< + fn __reduce97< 'input, >( input: &'input str, @@ -4025,18 +4057,18 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Param = Ident, ":", Type => ActionFn(102); + // Param = Ident, ":", Type => ActionFn(103); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant2(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action103::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (3, 43) } - fn __reduce97< + fn __reduce98< 'input, >( input: &'input str, @@ -4045,15 +4077,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Param? = Param => ActionFn(83); + // Param? = Param => ActionFn(84); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action83::<>(input, __sym0); + let __nt = super::__action84::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); (1, 44) } - fn __reduce98< + fn __reduce99< 'input, >( input: &'input str, @@ -4062,14 +4094,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Param? = => ActionFn(84); + // Param? = => ActionFn(85); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action84::<>(input, &__start, &__end); + let __nt = super::__action85::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant16(__nt), __end)); (0, 44) } - fn __reduce99< + fn __reduce100< 'input, >( input: &'input str, @@ -4078,14 +4110,14 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Program = => ActionFn(114); + // Program = => ActionFn(115); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action114::<>(input, &__start, &__end); + let __nt = super::__action115::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant17(__nt), __end)); (0, 45) } - fn __reduce100< + fn __reduce101< 'input, >( input: &'input str, @@ -4094,15 +4126,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Program = Def+ => ActionFn(115); + // Program = Def+ => ActionFn(116); let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action115::<>(input, __sym0); + let __nt = super::__action116::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant17(__nt), __end)); (1, 45) } - fn __reduce101< + fn __reduce102< 'input, >( input: &'input str, @@ -4119,7 +4151,7 @@ mod __parse__Program { __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 46) } - fn __reduce102< + fn __reduce103< 'input, >( input: &'input str, @@ -4136,7 +4168,7 @@ mod __parse__Program { __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 46) } - fn __reduce103< + fn __reduce104< 'input, >( input: &'input str, @@ -4153,7 +4185,7 @@ mod __parse__Program { __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 46) } - fn __reduce104< + fn __reduce105< 'input, >( input: &'input str, @@ -4170,7 +4202,7 @@ mod __parse__Program { __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 46) } - fn __reduce105< + fn __reduce106< 'input, >( input: &'input str, @@ -4179,15 +4211,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnaryOp = "-" => ActionFn(41); + // UnaryOp = "-" => ActionFn(42); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action41::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 47) } - fn __reduce106< + fn __reduce107< 'input, >( input: &'input str, @@ -4196,15 +4228,15 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnaryOp = "!" => ActionFn(42); + // UnaryOp = "!" => ActionFn(43); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action42::<>(input, __sym0); + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 47) } - fn __reduce107< + fn __reduce108< 'input, >( input: &'input str, @@ -4213,11 +4245,11 @@ mod __parse__Program { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // XorOp = "^" => ActionFn(35); + // XorOp = "^" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action35::<>(input, __sym0); + let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 48) } @@ -4227,7 +4259,7 @@ pub use self::__parse__Program::ProgramParser; mod __intern_token { #![allow(unused_imports)] use std::str::FromStr; - use crate::passes::parse::*; + use crate::passes::parse::{Def, Expr, Lit, Op, Param}; use crate::passes::parse::PrgParsed; use crate::passes::type_check::Type; #[allow(unused_extern_crates)] @@ -4267,6 +4299,7 @@ mod __intern_token { ("(?:Unit)", false), ("\\^", false), ("(?:break)", false), + ("(?:continue)", false), ("(?:else)", false), ("(?:false)", false), ("(?:fn)", false), @@ -4625,10 +4658,10 @@ fn __action20< 'input, >( input: &'input str, - (_, __0, _): (usize, Expr<&'input str>, usize), + (_, __0, _): (usize, &'input str, usize), ) -> Expr<&'input str> { - __0 + Expr::Continue } #[allow(unused_variables)] @@ -4709,10 +4742,10 @@ fn __action27< 'input, >( input: &'input str, - (_, __0, _): (usize, &'input str, usize), -) -> Op + (_, __0, _): (usize, Expr<&'input str>, usize), +) -> Expr<&'input str> { - Op::LOr + __0 } #[allow(unused_variables)] @@ -4724,7 +4757,7 @@ fn __action28< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::LAnd + Op::LOr } #[allow(unused_variables)] @@ -4736,7 +4769,7 @@ fn __action29< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::EQ + Op::LAnd } #[allow(unused_variables)] @@ -4748,7 +4781,7 @@ fn __action30< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::NE + Op::EQ } #[allow(unused_variables)] @@ -4760,7 +4793,7 @@ fn __action31< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::GT + Op::NE } #[allow(unused_variables)] @@ -4772,7 +4805,7 @@ fn __action32< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::GE + Op::GT } #[allow(unused_variables)] @@ -4784,7 +4817,7 @@ fn __action33< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::LT + Op::GE } #[allow(unused_variables)] @@ -4796,7 +4829,7 @@ fn __action34< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::LE + Op::LT } #[allow(unused_variables)] @@ -4808,7 +4841,7 @@ fn __action35< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::Xor + Op::LE } #[allow(unused_variables)] @@ -4820,7 +4853,7 @@ fn __action36< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::Plus + Op::Xor } #[allow(unused_variables)] @@ -4832,7 +4865,7 @@ fn __action37< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::Minus + Op::Plus } #[allow(unused_variables)] @@ -4844,7 +4877,7 @@ fn __action38< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::Mul + Op::Minus } #[allow(unused_variables)] @@ -4856,7 +4889,7 @@ fn __action39< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::Div + Op::Mul } #[allow(unused_variables)] @@ -4868,7 +4901,7 @@ fn __action40< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::Mod + Op::Div } #[allow(unused_variables)] @@ -4880,7 +4913,7 @@ fn __action41< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::Minus + Op::Mod } #[allow(unused_variables)] @@ -4892,13 +4925,25 @@ fn __action42< (_, __0, _): (usize, &'input str, usize), ) -> Op { - Op::Not + Op::Minus } #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] fn __action43< 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> Op +{ + Op::Not +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action44< + 'input, >( input: &'input str, (_, op, _): (usize, Op, usize), @@ -4913,7 +4958,7 @@ fn __action43< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action44< +fn __action45< 'input, >( input: &'input str, @@ -4925,7 +4970,7 @@ fn __action44< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action45< +fn __action46< 'input, >( input: &'input str, @@ -4942,7 +4987,7 @@ fn __action45< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action46< +fn __action47< 'input, >( input: &'input str, @@ -4960,7 +5005,7 @@ fn __action46< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action47< +fn __action48< 'input, >( input: &'input str, @@ -4978,7 +5023,7 @@ fn __action47< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action48< +fn __action49< 'input, >( input: &'input str, @@ -4990,7 +5035,7 @@ fn __action48< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action49< +fn __action50< 'input, >( input: &'input str, @@ -5002,7 +5047,7 @@ fn __action49< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action50< +fn __action51< 'input, >( input: &'input str, @@ -5014,7 +5059,7 @@ fn __action50< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action51< +fn __action52< 'input, >( input: &'input str, @@ -5026,7 +5071,7 @@ fn __action51< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action52< +fn __action53< 'input, >( input: &'input str, @@ -5038,7 +5083,7 @@ fn __action52< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action53< +fn __action54< 'input, >( input: &'input str, @@ -5052,7 +5097,7 @@ fn __action53< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action54< +fn __action55< 'input, >( input: &'input str, @@ -5064,7 +5109,7 @@ fn __action54< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action55< +fn __action56< 'input, >( input: &'input str, @@ -5076,7 +5121,7 @@ fn __action55< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action56< +fn __action57< 'input, >( input: &'input str, @@ -5088,7 +5133,7 @@ fn __action56< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action57< +fn __action58< 'input, >( input: &'input str, @@ -5100,7 +5145,7 @@ fn __action57< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action58< +fn __action59< 'input, >( input: &'input str, @@ -5120,7 +5165,7 @@ fn __action58< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action59< +fn __action60< 'input, >( input: &'input str, @@ -5137,7 +5182,7 @@ fn __action59< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action60< +fn __action61< 'input, >( input: &'input str, @@ -5149,7 +5194,7 @@ fn __action60< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action61< +fn __action62< 'input, >( input: &'input str, @@ -5166,7 +5211,7 @@ fn __action61< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action62< +fn __action63< 'input, >( input: &'input str, @@ -5178,7 +5223,7 @@ fn __action62< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action63< +fn __action64< 'input, >( input: &'input str, @@ -5195,7 +5240,7 @@ fn __action63< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action64< +fn __action65< 'input, >( input: &'input str, @@ -5207,7 +5252,7 @@ fn __action64< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action65< +fn __action66< 'input, >( input: &'input str, @@ -5224,7 +5269,7 @@ fn __action65< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action66< +fn __action67< 'input, >( input: &'input str, @@ -5236,7 +5281,7 @@ fn __action66< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action67< +fn __action68< 'input, >( input: &'input str, @@ -5253,7 +5298,7 @@ fn __action67< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action68< +fn __action69< 'input, >( input: &'input str, @@ -5265,7 +5310,7 @@ fn __action68< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action69< +fn __action70< 'input, >( input: &'input str, @@ -5282,7 +5327,7 @@ fn __action69< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action70< +fn __action71< 'input, >( input: &'input str, @@ -5294,7 +5339,7 @@ fn __action70< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action71< +fn __action72< 'input, >( input: &'input str, @@ -5306,7 +5351,7 @@ fn __action71< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action72< +fn __action73< 'input, >( input: &'input str, @@ -5319,7 +5364,7 @@ fn __action72< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action73< +fn __action74< 'input, >( input: &'input str, @@ -5331,7 +5376,7 @@ fn __action73< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action74< +fn __action75< 'input, >( input: &'input str, @@ -5344,7 +5389,7 @@ fn __action74< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action75< +fn __action76< 'input, >( input: &'input str, @@ -5356,7 +5401,7 @@ fn __action75< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action76< +fn __action77< 'input, >( input: &'input str, @@ -5369,7 +5414,7 @@ fn __action76< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action77< +fn __action78< 'input, >( input: &'input str, @@ -5382,7 +5427,7 @@ fn __action77< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action78< +fn __action79< 'input, >( input: &'input str, @@ -5402,7 +5447,7 @@ fn __action78< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action79< +fn __action80< 'input, >( input: &'input str, @@ -5415,7 +5460,7 @@ fn __action79< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action80< +fn __action81< 'input, >( input: &'input str, @@ -5427,7 +5472,7 @@ fn __action80< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action81< +fn __action82< 'input, >( input: &'input str, @@ -5439,7 +5484,7 @@ fn __action81< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action82< +fn __action83< 'input, >( input: &'input str, @@ -5452,7 +5497,7 @@ fn __action82< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action83< +fn __action84< 'input, >( input: &'input str, @@ -5464,7 +5509,7 @@ fn __action83< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action84< +fn __action85< 'input, >( input: &'input str, @@ -5477,7 +5522,7 @@ fn __action84< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action85< +fn __action86< 'input, >( input: &'input str, @@ -5490,7 +5535,7 @@ fn __action85< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action86< +fn __action87< 'input, >( input: &'input str, @@ -5502,7 +5547,7 @@ fn __action86< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action87< +fn __action88< 'input, >( input: &'input str, @@ -5515,7 +5560,7 @@ fn __action87< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action88< +fn __action89< 'input, >( input: &'input str, @@ -5527,7 +5572,7 @@ fn __action88< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action89< +fn __action90< 'input, >( input: &'input str, @@ -5540,7 +5585,7 @@ fn __action89< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action90< +fn __action91< 'input, >( input: &'input str, @@ -5553,7 +5598,7 @@ fn __action90< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action91< +fn __action92< 'input, >( input: &'input str, @@ -5565,7 +5610,7 @@ fn __action91< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action92< +fn __action93< 'input, >( input: &'input str, @@ -5578,7 +5623,7 @@ fn __action92< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action93< +fn __action94< 'input, >( input: &'input str, @@ -5590,7 +5635,7 @@ fn __action93< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action94< +fn __action95< 'input, >( input: &'input str, @@ -5603,7 +5648,7 @@ fn __action94< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action95< +fn __action96< 'input, >( input: &'input str, @@ -5615,7 +5660,7 @@ fn __action95< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action96< +fn __action97< 'input, >( input: &'input str, @@ -5629,7 +5674,7 @@ fn __action96< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action97< +fn __action98< 'input, >( input: &'input str, @@ -5643,7 +5688,7 @@ fn __action97< { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action73( + let __temp0 = __action74( input, __1, ); @@ -5662,7 +5707,7 @@ fn __action97< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action98< +fn __action99< 'input, >( input: &'input str, @@ -5675,7 +5720,7 @@ fn __action98< { let __start0 = __0.2; let __end0 = __1.0; - let __temp0 = __action74( + let __temp0 = __action75( input, &__start0, &__end0, @@ -5695,7 +5740,7 @@ fn __action98< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action99< +fn __action100< 'input, >( input: &'input str, @@ -5710,7 +5755,7 @@ fn __action99< { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action73( + let __temp0 = __action74( input, __1, ); @@ -5730,7 +5775,7 @@ fn __action99< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action100< +fn __action101< 'input, >( input: &'input str, @@ -5744,7 +5789,7 @@ fn __action100< { let __start0 = __0.2; let __end0 = __1.0; - let __temp0 = __action74( + let __temp0 = __action75( input, &__start0, &__end0, @@ -5765,7 +5810,7 @@ fn __action100< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action101< +fn __action102< 'input, >( input: &'input str, @@ -5777,7 +5822,7 @@ fn __action101< { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action73( + let __temp0 = __action74( input, __0, ); @@ -5794,7 +5839,7 @@ fn __action101< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action102< +fn __action103< 'input, >( input: &'input str, @@ -5805,7 +5850,7 @@ fn __action102< { let __start0 = __0.0; let __end0 = __0.0; - let __temp0 = __action74( + let __temp0 = __action75( input, &__start0, &__end0, @@ -5823,7 +5868,7 @@ fn __action102< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action103< +fn __action104< 'input, >( input: &'input str, @@ -5833,13 +5878,13 @@ fn __action103< { let __start0 = __0.0; let __end0 = __1.2; - let __temp0 = __action77( + let __temp0 = __action78( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action75( + __action76( input, __temp0, ) @@ -5848,7 +5893,7 @@ fn __action103< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action104< +fn __action105< 'input, >( input: &'input str, @@ -5866,7 +5911,7 @@ fn __action104< { let __start0 = __5.0; let __end0 = __6.2; - let __temp0 = __action103( + let __temp0 = __action104( input, __5, __6, @@ -5889,7 +5934,7 @@ fn __action104< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action105< +fn __action106< 'input, >( input: &'input str, @@ -5905,7 +5950,7 @@ fn __action105< { let __start0 = __4.2; let __end0 = __5.0; - let __temp0 = __action76( + let __temp0 = __action77( input, &__start0, &__end0, @@ -5928,7 +5973,7 @@ fn __action105< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action106< +fn __action107< 'input, >( input: &'input str, @@ -5938,13 +5983,13 @@ fn __action106< { let __start0 = __0.0; let __end0 = __1.2; - let __temp0 = __action92( + let __temp0 = __action93( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action93( + __action94( input, __temp0, ) @@ -5953,7 +5998,7 @@ fn __action106< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action107< +fn __action108< 'input, >( input: &'input str, @@ -5964,13 +6009,13 @@ fn __action107< { let __start0 = __1.0; let __end0 = __2.2; - let __temp0 = __action92( + let __temp0 = __action93( input, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action94( + __action95( input, __0, __temp0, @@ -5980,7 +6025,7 @@ fn __action107< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action108< +fn __action109< 'input, >( input: &'input str, @@ -5989,13 +6034,13 @@ fn __action108< { let __start0 = __0.0; let __end0 = __0.0; - let __temp0 = __action90( + let __temp0 = __action91( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action58( + __action59( input, __temp0, __0, @@ -6005,7 +6050,7 @@ fn __action108< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action109< +fn __action110< 'input, >( input: &'input str, @@ -6015,12 +6060,12 @@ fn __action109< { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action91( + let __temp0 = __action92( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action58( + __action59( input, __temp0, __1, @@ -6030,7 +6075,7 @@ fn __action109< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action110< +fn __action111< 'input, >( input: &'input str, @@ -6040,13 +6085,13 @@ fn __action110< { let __start0 = __0.0; let __end0 = __1.2; - let __temp0 = __action87( + let __temp0 = __action88( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action95( + __action96( input, __temp0, ) @@ -6055,7 +6100,7 @@ fn __action110< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action111< +fn __action112< 'input, >( input: &'input str, @@ -6066,13 +6111,13 @@ fn __action111< { let __start0 = __1.0; let __end0 = __2.2; - let __temp0 = __action87( + let __temp0 = __action88( input, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action96( + __action97( input, __0, __temp0, @@ -6082,7 +6127,7 @@ fn __action111< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action112< +fn __action113< 'input, >( input: &'input str, @@ -6091,13 +6136,13 @@ fn __action112< { let __start0 = __0.0; let __end0 = __0.0; - let __temp0 = __action85( + let __temp0 = __action86( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action78( + __action79( input, __temp0, __0, @@ -6107,7 +6152,7 @@ fn __action112< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action113< +fn __action114< 'input, >( input: &'input str, @@ -6117,12 +6162,12 @@ fn __action113< { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action86( + let __temp0 = __action87( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action78( + __action79( input, __temp0, __1, @@ -6132,7 +6177,7 @@ fn __action113< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action114< +fn __action115< 'input, >( input: &'input str, @@ -6142,7 +6187,7 @@ fn __action114< { let __start0 = *__lookbehind; let __end0 = *__lookahead; - let __temp0 = __action79( + let __temp0 = __action80( input, &__start0, &__end0, @@ -6157,7 +6202,7 @@ fn __action114< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action115< +fn __action116< 'input, >( input: &'input str, @@ -6166,7 +6211,7 @@ fn __action115< { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action80( + let __temp0 = __action81( input, __0, ); @@ -6180,7 +6225,7 @@ fn __action115< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action116< +fn __action117< 'input, >( input: &'input str, @@ -6189,12 +6234,12 @@ fn __action116< { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action88( + let __temp0 = __action89( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action108( + __action109( input, __temp0, ) @@ -6203,7 +6248,7 @@ fn __action116< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action117< +fn __action118< 'input, >( input: &'input str, @@ -6213,13 +6258,13 @@ fn __action117< { let __start0 = *__lookbehind; let __end0 = *__lookahead; - let __temp0 = __action89( + let __temp0 = __action90( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action108( + __action109( input, __temp0, ) @@ -6228,7 +6273,7 @@ fn __action117< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action118< +fn __action119< 'input, >( input: &'input str, @@ -6238,12 +6283,12 @@ fn __action118< { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action88( + let __temp0 = __action89( input, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action109( + __action110( input, __0, __temp0, @@ -6253,7 +6298,7 @@ fn __action118< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action119< +fn __action120< 'input, >( input: &'input str, @@ -6262,13 +6307,13 @@ fn __action119< { let __start0 = __0.2; let __end0 = __0.2; - let __temp0 = __action89( + let __temp0 = __action90( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action109( + __action110( input, __0, __temp0, @@ -6278,7 +6323,7 @@ fn __action119< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action120< +fn __action121< 'input, >( input: &'input str, @@ -6288,7 +6333,7 @@ fn __action120< { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action71( + let __temp0 = __action72( input, __1, ); @@ -6303,7 +6348,7 @@ fn __action120< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action121< +fn __action122< 'input, >( input: &'input str, @@ -6312,7 +6357,7 @@ fn __action121< { let __start0 = __0.2; let __end0 = __0.2; - let __temp0 = __action72( + let __temp0 = __action73( input, &__start0, &__end0, @@ -6328,7 +6373,7 @@ fn __action121< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action122< +fn __action123< 'input, >( input: &'input str, @@ -6337,12 +6382,12 @@ fn __action122< { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action83( + let __temp0 = __action84( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action112( + __action113( input, __temp0, ) @@ -6351,7 +6396,7 @@ fn __action122< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action123< +fn __action124< 'input, >( input: &'input str, @@ -6361,13 +6406,13 @@ fn __action123< { let __start0 = *__lookbehind; let __end0 = *__lookahead; - let __temp0 = __action84( + let __temp0 = __action85( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action112( + __action113( input, __temp0, ) @@ -6376,7 +6421,7 @@ fn __action123< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action124< +fn __action125< 'input, >( input: &'input str, @@ -6386,12 +6431,12 @@ fn __action124< { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action83( + let __temp0 = __action84( input, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action113( + __action114( input, __0, __temp0, @@ -6401,7 +6446,7 @@ fn __action124< #[allow(unused_variables)] #[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] -fn __action125< +fn __action126< 'input, >( input: &'input str, @@ -6410,13 +6455,13 @@ fn __action125< { let __start0 = __0.2; let __end0 = __0.2; - let __temp0 = __action84( + let __temp0 = __action85( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action113( + __action114( input, __0, __temp0, diff --git a/compiler/src/passes/parse/interpreter.rs b/compiler/src/passes/parse/interpreter.rs index 3073be7..c7904de 100644 --- a/compiler/src/passes/parse/interpreter.rs +++ b/compiler/src/passes/parse/interpreter.rs @@ -9,13 +9,14 @@ use std::hash::Hash; pub enum ControlFlow { Val(Val), Break(Val), + Continue, } impl ControlFlow { pub fn val(self) -> Val { match self { ControlFlow::Val(v) => v, - ControlFlow::Break(_) => panic!("Sterf"), + ControlFlow::Break(_) | ControlFlow::Continue => panic!("Sterf"), } } } @@ -24,8 +25,8 @@ macro_rules! b { ($e: expr) => {{ let e = $e; match e { - ControlFlow::Break(_) => return e, - ControlFlow::Val(x) => x, + ControlFlow::Break(_) | ControlFlow::Continue => return e, + ControlFlow::Val(val) => val, } }}; } @@ -178,9 +179,8 @@ impl PrgGenericVar { self.interpret_fn(sym, args, scope, io) } Expr::Loop { bdy } => loop { - let x = self.interpret_expr(bdy, scope, io); - if let ControlFlow::Break(x) = x { - return ControlFlow::Val(x); + if let ControlFlow::Break(val) = self.interpret_expr(bdy, scope, io) { + return ControlFlow::Val(val); } }, Expr::Break { bdy } => { @@ -195,6 +195,7 @@ impl PrgGenericVar { scope.0.insert(*sym, bnd); Val::Unit } + Expr::Continue => return ControlFlow::Continue, }) } } diff --git a/compiler/src/passes/parse/mod.rs b/compiler/src/passes/parse/mod.rs index 8abe88e..3de8e1b 100644 --- a/compiler/src/passes/parse/mod.rs +++ b/compiler/src/passes/parse/mod.rs @@ -71,6 +71,7 @@ pub enum Expr { Break { bdy: Box>, }, + Continue, Seq { stmt: Box>, cnt: Box>, diff --git a/compiler/src/passes/reveal_functions/mod.rs b/compiler/src/passes/reveal_functions/mod.rs index e62717c..67fac95 100644 --- a/compiler/src/passes/reveal_functions/mod.rs +++ b/compiler/src/passes/reveal_functions/mod.rs @@ -46,6 +46,7 @@ pub enum RExpr<'p> { Break { bdy: Box>, }, + Continue, Seq { stmt: Box>, cnt: Box>, @@ -126,6 +127,7 @@ impl<'p> From> for Expr> { sym, bnd: Box::new((*bnd).into()), }, + RExpr::Continue => Expr::Continue, } } } diff --git a/compiler/src/passes/reveal_functions/reveal_functions.rs b/compiler/src/passes/reveal_functions/reveal_functions.rs index 38bbdd4..a1b4679 100644 --- a/compiler/src/passes/reveal_functions/reveal_functions.rs +++ b/compiler/src/passes/reveal_functions/reveal_functions.rs @@ -87,5 +87,6 @@ fn reveal_expr<'p>(expr: Expr>, scope: &mut PushMap, sym, bnd: Box::new(reveal_expr(*bnd, scope)), }, + Expr::Continue => RExpr::Continue, } } diff --git a/compiler/src/passes/type_check/check.rs b/compiler/src/passes/type_check/check.rs index 494dacb..942bc3f 100644 --- a/compiler/src/passes/type_check/check.rs +++ b/compiler/src/passes/type_check/check.rs @@ -273,6 +273,7 @@ fn type_check_expr<'p>(expr: &Expr<&'p str>, env: &mut Env<'_, 'p>) -> Result Ok(Type::Never), } } diff --git a/compiler/src/passes/uniquify/uniquify.rs b/compiler/src/passes/uniquify/uniquify.rs index 87a1858..a629212 100644 --- a/compiler/src/passes/uniquify/uniquify.rs +++ b/compiler/src/passes/uniquify/uniquify.rs @@ -110,5 +110,6 @@ fn uniquify_expression<'p>( sym: scope[sym], bnd: Box::new(uniquify_expression(*bnd, scope)), }, + Expr::Continue => Expr::Continue, } } diff --git a/programs/good/loops/while_continue.test b/programs/good/loops/while_continue.test new file mode 100644 index 0000000..d5b1507 --- /dev/null +++ b/programs/good/loops/while_continue.test @@ -0,0 +1,18 @@ +1 2 3 4 5 6 7 8 9 10 0 +# +# +30 +# +fn main() -> Int { + let mut x = 0; + let mut sum = 0; + while (x = read(); x != 0) { + if x % 2 == 0 { + unit + } else { + continue; + }; + sum = sum + x + }; + sum +}