From bce65f539c94b379305b6dba477cd040b45cee16 Mon Sep 17 00:00:00 2001 From: Julian Hartl Date: Sun, 7 Jul 2024 16:04:13 +0200 Subject: [PATCH] Fix build errors && most of the tests --- .../src/codegen/machine/function/builder.rs | 4 +- .../back/src/codegen/selection_dag/builder.rs | 20 +- .../back/src/codegen/selection_dag/mod.rs | 16 +- ir/crates/front/src/grammar.lalrpop | 31 +- ir/crates/front/src/grammar.rs | 12464 +++++++++------- ir/crates/front/src/module.rs | 55 +- ir/crates/middle/Cargo.toml | 6 +- .../middle/src/analysis/dataflow/backward.rs | 29 +- .../src/analysis/dataflow/concrete_value.rs | 19 +- .../middle/src/analysis/dataflow/forward.rs | 32 +- ir/crates/middle/src/analysis/dataflow/mod.rs | 21 +- .../middle/src/analysis/dataflow/use_def.rs | 106 +- ir/crates/middle/src/cfg/builder.rs | 260 +- ir/crates/middle/src/cfg/domtree.rs | 21 +- ir/crates/middle/src/cfg/mod.rs | 439 +- ir/crates/middle/src/front_bridge.rs | 159 +- ir/crates/middle/src/function.rs | 13 +- ir/crates/middle/src/instruction.rs | 194 +- ir/crates/middle/src/lib.rs | 38 +- ir/crates/middle/src/module.rs | 6 +- .../basic_block_pass/constant_fold.rs | 78 +- .../basic_block_pass/copy_propagation.rs | 51 +- .../src/optimization/basic_block_pass/cse.rs | 76 +- .../src/optimization/basic_block_pass/mod.rs | 17 +- .../function_pass/cfg_simplify/bb_merge.rs | 51 +- .../cfg_simplify/jump_threading.rs | 31 +- .../function_pass/cfg_simplify/mod.rs | 14 +- .../cfg_simplify/unreachable_bb_elim.rs | 92 +- .../function_pass/constant_propagation.rs | 78 +- .../function_pass/dead_code_elimination.rs | 59 +- .../src/optimization/function_pass/mod.rs | 4 +- ir/crates/middle/src/optimization/mod.rs | 58 +- ir/crates/middle/src/test.rs | 10 +- ir/crates/middle/src/ty.rs | 2 +- 34 files changed, 7682 insertions(+), 6872 deletions(-) diff --git a/ir/crates/back/src/codegen/machine/function/builder.rs b/ir/crates/back/src/codegen/machine/function/builder.rs index 589e22d..6c517bd 100644 --- a/ir/crates/back/src/codegen/machine/function/builder.rs +++ b/ir/crates/back/src/codegen/machine/function/builder.rs @@ -40,7 +40,7 @@ use crate::codegen::{ pub struct FunctionBuilder { function: Function, backend: TM::Backend, - bb_mapping: FxHashMap, + bb_mapping: FxHashMap, } impl FunctionBuilder { @@ -222,7 +222,7 @@ impl FunctionBuilder { self.function } - fn create_bb(&mut self, bb: natrix_middle::cfg::BasicBlockId) -> BasicBlockId { + fn create_bb(&mut self, bb: natrix_middle::cfg::BasicBlockRef) -> BasicBlockId { let mbb = self.function.create_bb(); self.bb_mapping.insert(bb, mbb); mbb diff --git a/ir/crates/back/src/codegen/selection_dag/builder.rs b/ir/crates/back/src/codegen/selection_dag/builder.rs index 9c58516..23d2e8f 100644 --- a/ir/crates/back/src/codegen/selection_dag/builder.rs +++ b/ir/crates/back/src/codegen/selection_dag/builder.rs @@ -11,7 +11,7 @@ use daggy::{ use iter_tools::Itertools; use natrix_middle::{ cfg::{ - BasicBlockId, + BasicBlockRef, BranchTerm, JumpTarget, Terminator, @@ -53,7 +53,7 @@ pub struct Builder<'func, TM: TargetMachine> { function: &'func mut Function, sel_dag: SelectionDAG, reg_mapping: SecondaryMap>, - defining_nodes: FxHashMap<(VReg, BasicBlockId), NodeIndex>, + defining_nodes: FxHashMap<(VReg, BasicBlockRef), NodeIndex>, } impl<'func, TM: TargetMachine> Builder<'func, TM> { @@ -71,7 +71,7 @@ impl<'func, TM: TargetMachine> Builder<'func, TM> { let basic_blocks = func .cfg .basic_block_ids() - .filter(|bb_id| *bb_id != func.cfg.entry_block()) + .filter(|bb_id| *bb_id != func.cfg.entry_block_ref()) .collect::>(); for bb_id in basic_blocks { @@ -158,7 +158,7 @@ impl<'func, TM: TargetMachine> Builder<'func, TM> { } for (bb_id, bb) in func.cfg.basic_blocks() { debug!("Building SelectionDAG for basic block {}", bb_id); - if bb_id == func.cfg.entry_block() { + if bb_id == func.cfg.entry_block_ref() { for arg in bb.arguments() { let mapped_reg = self.map_vreg(arg, func); self.function.params.push(mapped_reg); @@ -253,7 +253,7 @@ impl<'func, TM: TargetMachine> Builder<'func, TM> { func: &natrix_middle::Function, ) -> Operand { match op { - natrix_middle::instruction::Op::Vreg(vreg) => { + natrix_middle::instruction::Op::Value(vreg) => { Operand::Reg(Register::Virtual(self.map_vreg(*vreg, func))) } natrix_middle::instruction::Op::Const(constant) => Operand::Imm(match constant { @@ -279,7 +279,7 @@ impl<'func, TM: TargetMachine> Builder<'func, TM> { fn add_dependency( &mut self, - bb_id: BasicBlockId, + bb_id: BasicBlockRef, depending_node: NodeIndex, producing_node: NodeIndex, ) { @@ -290,7 +290,7 @@ impl<'func, TM: TargetMachine> Builder<'func, TM> { .unwrap(); } - fn define_node(&mut self, bb_id: natrix_middle::cfg::BasicBlockId, op: Op) -> NodeIndex { + fn define_node(&mut self, bb_id: natrix_middle::cfg::BasicBlockRef, op: Op) -> NodeIndex { let used_regs = op.consumed_regs(); let out_reg = op.out().and_then(|reg| reg.try_as_virtual()); debug!( @@ -315,7 +315,7 @@ impl<'func, TM: TargetMachine> Builder<'func, TM> { fn define_term_node( &mut self, - bb_id: natrix_middle::cfg::BasicBlockId, + bb_id: natrix_middle::cfg::BasicBlockRef, op: Op, ) -> NodeIndex { let term_node = self.define_node(bb_id, op); @@ -341,11 +341,11 @@ impl<'func, TM: TargetMachine> Builder<'func, TM> { } } - fn define_out_val(&mut self, node: NodeIndex, reg: VReg, bb_id: BasicBlockId) { + fn define_out_val(&mut self, node: NodeIndex, reg: VReg, bb_id: BasicBlockRef) { self.defining_nodes.insert((reg, bb_id), node); } - fn get_defining_node(&self, vreg: VReg, bb_id: BasicBlockId) -> Option { + fn get_defining_node(&self, vreg: VReg, bb_id: BasicBlockRef) -> Option { self.defining_nodes.get(&(vreg, bb_id)).copied() } } diff --git a/ir/crates/back/src/codegen/selection_dag/mod.rs b/ir/crates/back/src/codegen/selection_dag/mod.rs index 51fa153..a1de3b3 100644 --- a/ir/crates/back/src/codegen/selection_dag/mod.rs +++ b/ir/crates/back/src/codegen/selection_dag/mod.rs @@ -12,7 +12,7 @@ use daggy::petgraph::dot::{ Dot, }; use natrix_middle::{ - cfg::BasicBlockId, + cfg::BasicBlockRef, instruction::CmpOp, }; use rustc_hash::FxHashMap; @@ -38,11 +38,11 @@ type Dag = daggy::Dag, Edge>; pub struct BasicBlockDAG { dag: Dag, term_node: Option, - bb: natrix_middle::cfg::BasicBlockId, + bb: natrix_middle::cfg::BasicBlockRef, } impl BasicBlockDAG { - pub fn new(bb: natrix_middle::cfg::BasicBlockId) -> Self { + pub fn new(bb: natrix_middle::cfg::BasicBlockRef) -> Self { Self { dag: Dag::new(), term_node: None, @@ -86,13 +86,13 @@ impl DerefMut for BasicBlockDAG { #[derive(Debug, Default)] pub struct SelectionDAG { - pub basic_blocks: FxHashMap>, + pub basic_blocks: FxHashMap>, } impl SelectionDAG { pub fn get_bb_dag( &mut self, - basic_block: natrix_middle::cfg::BasicBlockId, + basic_block: natrix_middle::cfg::BasicBlockRef, ) -> &mut BasicBlockDAG { self.basic_blocks .entry(basic_block) @@ -241,7 +241,7 @@ pub enum PseudoOp { Def(VReg), Copy(Register, Register), Ret(Option>), - Phi(Register, Vec<(Register, BasicBlockId)>), + Phi(Register, Vec<(Register, BasicBlockRef)>), } impl PseudoOp { @@ -273,8 +273,8 @@ pub enum MachineOp { Sub(Register, Operand, Operand), Add(Register, Operand, Operand), Cmp(Register, CmpOp, Operand, Operand), - Br(BasicBlockId), - CondBr(Operand, BasicBlockId, BasicBlockId), + Br(BasicBlockRef), + CondBr(Operand, BasicBlockRef, BasicBlockRef), } impl MachineOp { diff --git a/ir/crates/front/src/grammar.lalrpop b/ir/crates/front/src/grammar.lalrpop index a8eeee9..91febae 100644 --- a/ir/crates/front/src/grammar.lalrpop +++ b/ir/crates/front/src/grammar.lalrpop @@ -1,5 +1,5 @@ use std::str::FromStr; -use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; +use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; grammar; pub Module: Module = { @@ -18,7 +18,7 @@ pub Function: Function = { } pub BasicBlock: BasicBlock = { - ":" => BasicBlock { + ":" => BasicBlock { args: args.unwrap_or_default(), id, instructions, @@ -30,7 +30,7 @@ BasicBlockArgList: Vec = { } Arg: Arg = { - => Arg { + "%" => Arg { ty, id, } @@ -41,13 +41,13 @@ pub Instruction: Instruction = { } pub InstructionInner: Instruction = { - "=" "add" "," => Instruction::Add(decl, ty, op1, op2), - "=" "sub" "," => Instruction::Sub(decl, ty, op1, op2), - "=" => Instruction::Op(decl, ty, op), - "=" "icmp" "," => Instruction::ICmp(decl, op, ty, op1, op2), + "%" "=" "add" "," => Instruction::Add(decl, ty, op1, op2), + "%" "=" "sub" "," => Instruction::Sub(decl, ty, op1, op2), + "%" "=" => Instruction::Op(decl, ty, op), + "%" "=" "cmp" "," => Instruction::Cmp(decl, op, ty, op1, op2), "condbr" "," => Instruction::Condbr(condition, true_target, false_target), "br" => Instruction::Br(target), - "ret" => Instruction::Ret(ty, op), + "ret" => Instruction::Ret(op), } pub CmpOp: CmpOp = { @@ -56,7 +56,7 @@ pub CmpOp: CmpOp = { } pub Target: Target = { - => Target(id, args) + => Target(id, args) } TargetArgList: Vec = { @@ -66,11 +66,13 @@ TargetArgList: Vec = { pub Operand: Operand = { Literal => Operand::Literal(<>), - RegId => Operand::Register(<>) + "%" => Operand::Value(id), } Literal: Literal = { - SignedNum => Literal::Int(<>), + => Literal::Int(n, ty), + "true" => Literal::Bool(true), + "false" => Literal::Bool(false), } Type: Type = { @@ -84,11 +86,14 @@ Type: Type = { "i64" => Type::I64, "void" => Type::Void, "bool" => Type::Bool, + "&" => Type::Ptr(Box::new(ty)), } FunId: String = => id[1..].to_string(); -RegId: RegId = => RegId(u32::from_str(&id[1..]).unwrap()); -BasicBlockId: BasicBlockId = => BasicBlockId(u32::from_str(&id[2..]).unwrap()); +Identifier: Identifier = { + => id.to_string(), + => id.to_string() +} SignedNum: i64 = => match s { Some(_) => -(num as i64), None => num as i64 diff --git a/ir/crates/front/src/grammar.rs b/ir/crates/front/src/grammar.rs index ffd8a33..4b52355 100644 --- a/ir/crates/front/src/grammar.rs +++ b/ir/crates/front/src/grammar.rs @@ -1,18 +1,17 @@ // auto-generated: "lalrpop 0.20.2" -// sha3: 3da911f4b02d38610275c87137f6513578343b93a23eb2ce9725bf48b56e6208 +// sha3: c96e22dde30412ac07b98e04484a98e66e23ec86894fbdef4c81de6f2dd4ffd9 use std::str::FromStr; use crate::module::{ Arg, BasicBlock, - BasicBlockId, CmpOp, Function, + Identifier, Instruction, Literal, Module, Operand, - RegId, Target, Type, }; @@ -28,7 +27,7 @@ extern crate core; mod __parse__BasicBlock { use std::str::FromStr; - use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; + use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -52,197 +51,204 @@ mod __parse__BasicBlock { Variant10(alloc::vec::Vec), Variant11(Vec), Variant12(core::option::Option>), - Variant13(BasicBlockId), - Variant14(CmpOp), - Variant15(Vec), - Variant16(Vec), - Variant17(String), - Variant18(Function), - Variant19(alloc::vec::Vec), + Variant13(CmpOp), + Variant14(Vec), + Variant15(Vec), + Variant16(String), + Variant17(Function), + Variant18(alloc::vec::Vec), + Variant19(Identifier), Variant20(Instruction), Variant21(alloc::vec::Vec), Variant22(Literal), Variant23(Module), Variant24(core::option::Option), - Variant25(RegId), - Variant26(i64), - Variant27(Target), - Variant28(core::option::Option>), - Variant29(core::option::Option), - Variant30(u64), + Variant25(i64), + Variant26(Target), + Variant27(core::option::Option>), + Variant28(core::option::Option), + Variant29(u64), } const __ACTION: &[i8] = &[ // 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, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 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, 35, // State 1 - 3, 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, 3, 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, // State 2 - 0, -36, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 0, 7, 0, -35, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 0, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, // State 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 9, 0, 10, 0, 0, 0, 0, 41, 42, 43, 44, 11, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, // State 4 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 9, 0, 10, 0, 0, 0, 0, 41, 42, 43, 44, 11, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, // State 5 - 0, -38, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 0, 7, 0, -37, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 0, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 0, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, // State 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 9, 0, 10, 0, 0, 0, 0, 41, 42, 43, 44, 11, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, // State 8 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 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, 35, // State 9 - 0, 0, 0, 16, 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, 63, 0, 50, + 18, 0, 0, 0, 0, 19, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 10 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 19, 33, 0, -65, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 11 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 9, 0, 10, 0, 0, 0, 0, 41, 42, 43, 44, 11, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, // State 12 - 0, 0, 0, 0, 0, 0, 0, 0, 19, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 20, 0, 21, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 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, 35, // State 13 - 22, 0, -75, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, // State 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, 0, 0, 0, 0, 33, 0, + 0, 0, 20, 0, -77, 0, 0, 0, -77, 0, 0, 0, 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 15 - 0, 0, 0, 0, 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, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 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, 35, // State 16 - 0, 0, 0, 16, 62, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 50, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 0, 0, 0, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, // State 17 - 0, 0, 0, 16, 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, 63, 0, 50, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 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, 35, // State 18 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 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, // State 19 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, -39, 0, 19, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 20 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 19, 33, 0, 0, 0, 24, 0, 0, 25, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 26, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 21 - 0, -40, 0, 16, 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, 63, 0, 50, + 18, 0, 0, -41, 0, 19, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 22 - 0, 0, 0, 16, 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, 63, 0, 50, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 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, 35, // State 23 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 19, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 24 - 0, 0, 0, 16, 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, 63, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 25 - 0, -42, 0, 16, 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, 63, 0, 50, + 18, 0, 0, 0, 0, 19, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 26 - 0, 0, 0, 0, 0, 0, 0, 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, + 18, 0, 0, 0, 0, 19, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 27 - 0, 0, 0, 16, 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, 63, 0, 50, + 18, 0, 0, 0, 0, 19, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 28 - 0, 0, 0, 16, 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, 63, 0, 50, + 18, 0, 0, 0, 0, 19, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 29 - 0, 0, 0, 16, 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, 63, 0, 50, + 18, 0, 0, 0, 0, 19, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, // State 30 - 0, 0, 0, 16, 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, 63, 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, // State 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, 0, 0, 0, 0, 0, 0, + 0, 0, -51, -51, -51, 0, -51, -51, -51, -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, -51, -51, // State 32 - -32, 0, -32, 0, 0, -32, -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, -94, -94, -94, -94, 0, -94, -94, -94, -94, 0, -94, 0, 0, 0, 0, 0, 0, 0, -94, -94, -94, -94, 0, 0, 0, -94, -94, -94, -94, -94, 0, 0, 0, -94, -94, // State 33 - 0, 0, 0, 0, 0, 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, -95, -95, -95, -95, 0, -95, -95, -95, -95, 0, -95, 0, 0, 0, 0, 0, 0, 0, -95, -95, -95, -95, 0, 0, 0, -95, -95, -95, -95, -95, 0, 0, 0, -95, -95, // State 34 - 0, -35, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -52, -52, -52, 0, -52, -52, -52, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, -52, // State 35 - 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, // State 36 - 0, 0, 0, -88, -88, 0, -88, 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, -88, + 0, 0, 0, -34, 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, // State 37 - 0, 0, 0, -84, -84, 0, -84, 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, -84, + 0, 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, // State 38 - 0, 0, 0, -85, -85, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, 0, -85, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 39 - 0, 0, 0, -86, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, -86, + -90, 0, 0, -90, -90, 0, -90, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, -90, // State 40 - 0, 0, 0, -83, -83, 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, -83, 0, -83, + -86, 0, 0, -86, -86, 0, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, // State 41 - 0, 0, 0, -80, -80, 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, -80, 0, -80, + -87, 0, 0, -87, -87, 0, -87, 0, -87, 0, 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, -87, // State 42 - 0, 0, 0, -81, -81, 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, -81, 0, -81, + -88, 0, 0, -88, -88, 0, -88, 0, -88, 0, 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, -88, // State 43 - 0, 0, 0, -82, -82, 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, -82, 0, -82, + -85, 0, 0, -85, -85, 0, -85, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, // State 44 - 0, 0, 0, -79, -79, 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, -79, 0, -79, + -82, 0, 0, -82, -82, 0, -82, 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, -82, -82, // State 45 - 0, 0, 0, -87, -87, 0, -87, 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, -87, + -83, 0, 0, -83, -83, 0, -83, 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, -83, -83, // State 46 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, -55, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, + -84, 0, 0, -84, -84, 0, -84, 0, -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, -84, -84, // State 47 - 0, 0, 0, 0, 0, 0, 56, 0, 0, 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, -81, -81, 0, -81, 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, -81, -81, // State 48 - 0, 0, 0, 0, 0, 0, 0, 13, 0, 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, -89, -89, 0, -89, 0, -89, 0, 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, -89, // State 49 - 0, -71, -71, 0, 0, 0, -71, -71, 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, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, -56, 0, -56, 0, 0, 0, 0, -56, -56, -56, -56, -56, 0, 0, -56, -56, -56, -56, -56, 0, 0, 0, 0, 0, // State 50 - 0, -37, 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, 58, 0, 0, 0, 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, -6, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, -6, -6, -6, -6, -6, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, // State 52 - 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, // State 53 - 0, -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, -6, 0, -6, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, -6, -6, -6, -6, -6, 0, 0, 0, 0, 0, // State 54 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, -56, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, + 0, 0, 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 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 55 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, -52, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, + -91, 0, 0, -91, -91, 0, -91, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, -91, // State 56 - 0, 0, 0, 0, 0, 0, -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, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, -57, 0, -57, 0, 0, 0, 0, -57, -57, -57, -57, -57, 0, 0, -57, -57, -57, -57, -57, 0, 0, 0, 0, 0, // State 57 - 0, -67, -67, 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, -67, 0, + 0, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, -53, 0, -53, 0, 0, 0, 0, -53, -53, -53, -53, -53, 0, 0, -53, -53, -53, -53, -53, 0, 0, 0, 0, 0, // State 58 - 0, -68, -68, 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, -68, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 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 59 - 0, -65, -65, 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, -65, 0, + 0, 0, 0, -70, -70, 0, -70, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -70, // State 60 - 0, -73, -73, 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, 0, + 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75, -75, -75, -75, 0, 0, 0, -75, -75, -75, -75, -75, 0, 0, 0, 0, 0, // State 61 - 0, -91, -91, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, + 0, 0, 0, -68, -68, 0, -68, 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, -68, -68, // State 62 - 0, -92, -92, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, + 0, 0, 0, -67, -67, 0, -67, 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, -67, -67, // State 63 - 0, -7, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, -7, -7, -7, -7, 0, 0, 0, -7, -7, -7, -7, -7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -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, // State 64 - 0, 0, -74, 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, 0, + 0, -7, 0, -7, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, -7, -7, -7, -7, 0, 0, 0, -7, -7, -7, -7, -7, 0, 0, 0, 0, 0, // State 65 - 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -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, // State 66 - 0, -72, -72, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 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 67 - 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -76, 0, 0, 0, -76, 0, 0, 0, 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 68 - 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 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, // State 69 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, -33, -33, -33, -33, 0, 0, 0, -33, -33, -33, -33, -33, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -66, -66, 0, -66, 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, -66, -66, // State 70 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, -34, -34, -34, -34, 0, 0, 0, -34, -34, -34, -34, -34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -71, -71, 0, -71, 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, -71, -71, // State 71 - 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74, -74, -74, -74, 0, 0, 0, -74, -74, -74, -74, -74, 0, 0, 0, 0, 0, // State 72 - 0, -39, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 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 73 - 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 78, 0, 0, 0, 0, 0, 0, 0, 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 74 - 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 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 75 - 0, -41, 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, -40, 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, // State 76 - 0, 0, -76, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, 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 77 - 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -11, + -11, 0, 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, // State 78 - 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -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, // State 79 - 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, 0, 0, 0, + 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 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 80 - 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, -12, + -32, 0, 0, 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, // State 81 - 0, 0, 0, 0, 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, + -33, 0, 0, 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, // State 82 - 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 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 83 - 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -12, 0, 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, + // State 84 + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 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 86 + 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 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 87 + 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 33 + integer] + __ACTION[(state as usize) * 36 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -306,9 +312,9 @@ mod __parse__BasicBlock { // State 29 0, // State 30 - 0, + -96, // State 31 - -93, + 0, // State 32 0, // State 33 @@ -338,13 +344,13 @@ mod __parse__BasicBlock { // State 45 0, // State 46 - -55, + 0, // State 47 0, // State 48 0, // State 49 - 0, + -56, // State 50 0, // State 51 @@ -354,13 +360,13 @@ mod __parse__BasicBlock { // State 53 0, // State 54 - -56, + 0, // State 55 - -52, - // State 56 0, + // State 56 + -57, // State 57 - 0, + -53, // State 58 0, // State 59 @@ -413,75 +419,82 @@ mod __parse__BasicBlock { 0, // State 83 0, + // State 84 + 0, + // State 85 + 0, + // State 86 + 0, + // State 87 + 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { 3 => 5, - 6 => 25, + 6 => 21, 10 => match state { - 5 => 50, - _ => 34, + 5 => 52, + _ => 36, }, - 12 => 31, - 15 => 33, - 17 => match state { + 12 => 30, + 15 => 35, + 17 => 26, + 18 => 37, + 19 => 72, + 24 => match state { 0 => 1, - _ => 13, + 12 => 65, + 13 => 66, + 17 => 70, + _ => 14, }, - 18 => 23, - 19 => 35, - 20 => 71, 25 => match state { - 3..=4 => 46, - _ => 54, + 3..=4 => 49, + _ => 56, }, 27 => match state { 4 => 11, _ => 7, }, - 28 => 47, - 29 => 57, + 28 => 50, + 29 => 59, 31 => match state { - 16 => 67, - 17 => 68, - 21 => 72, - 22 => 73, - 24 => 74, - 25 => 75, - 27 => 79, - 28 => 81, - 29 => 82, - 30 => 83, - _ => 14, + 10 => 63, + 19 => 73, + 20 => 74, + 21 => 75, + 23 => 79, + 25 => 82, + 26 => 84, + 27 => 85, + 28 => 86, + 29 => 87, + _ => 15, }, - 33 => match state { - 3..=4 | 7 | 11 => 48, - 6 => 53, + 33 => 16, + 34 => match state { + 15 => 68, + 22 => 78, _ => 58, }, - 34 => 59, - 35 => match state { - 14 => 65, - 26 => 78, - _ => 56, - }, - 36 => 64, - 38 => match state { - 10 => 16, - 12 => 17, - 18 => 22, - 20 => 24, - 23 => 27, - _ => 6, + 35 => 67, + 37 => match state { + 2 | 5 => 38, + 6 => 55, + 16 => 69, + _ => 51, }, - 40 => match state { - 15 => 66, - _ => 60, + 39 => match state { + 9..=10 | 19..=21 | 23 | 25..=29 => 60, + 18 => 71, + _ => 31, }, _ => 0, } } const __TERMINAL: &[&str] = &[ + r###""%""###, + r###""&""###, r###""(""###, r###"")""###, r###"",""###, @@ -493,17 +506,19 @@ mod __parse__BasicBlock { r###""add""###, r###""bool""###, r###""br""###, + r###""cmp""###, r###""condbr""###, r###""eq""###, + r###""false""###, r###""fun""###, r###""gt""###, r###""i16""###, r###""i32""###, r###""i64""###, r###""i8""###, - r###""icmp""###, r###""ret""###, r###""sub""###, + r###""true""###, r###""u16""###, r###""u32""###, r###""u64""###, @@ -513,8 +528,7 @@ mod __parse__BasicBlock { r###""}""###, r###"r#"@[a-zA-Z_][a-zA-Z0-9_]*"#"###, r###"r#"[1-9][0-9]*"#"###, - r###"r#"bb(0|([1-9][0-9]*))"#"###, - r###"r#"v(0|([1-9][0-9]*))"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, ]; fn __expected_tokens(__state: i8) -> alloc::vec::Vec { __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { @@ -583,7 +597,7 @@ mod __parse__BasicBlock { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 33 - 1) + __action(state, 36 - 1) } #[inline] @@ -650,39 +664,42 @@ mod __parse__BasicBlock { ) -> Option { match *__token { - Token(4, _) if true => Some(0), - Token(5, _) if true => Some(1), - Token(6, _) if true => Some(2), - Token(7, _) if true => Some(3), - Token(8, _) if true => Some(4), - Token(9, _) if true => Some(5), - Token(10, _) if true => Some(6), - Token(11, _) if true => Some(7), - Token(12, _) if true => Some(8), - Token(13, _) if true => Some(9), - Token(14, _) if true => Some(10), - Token(15, _) if true => Some(11), - Token(16, _) if true => Some(12), - Token(17, _) if true => Some(13), - Token(18, _) if true => Some(14), - Token(19, _) if true => Some(15), - Token(20, _) if true => Some(16), - Token(21, _) if true => Some(17), - Token(22, _) if true => Some(18), - Token(23, _) if true => Some(19), - Token(24, _) if true => Some(20), - Token(25, _) if true => Some(21), - Token(26, _) if true => Some(22), - Token(27, _) if true => Some(23), - Token(28, _) if true => Some(24), - Token(29, _) if true => Some(25), - Token(30, _) if true => Some(26), - Token(31, _) if true => Some(27), - Token(32, _) if true => Some(28), - Token(0, _) if true => Some(29), - Token(1, _) if true => Some(30), - Token(2, _) if true => Some(31), - Token(3, _) if true => Some(32), + Token(3, _) if true => Some(0), + Token(4, _) if true => Some(1), + Token(5, _) if true => Some(2), + Token(6, _) if true => Some(3), + Token(7, _) if true => Some(4), + Token(8, _) if true => Some(5), + Token(9, _) if true => Some(6), + Token(10, _) if true => Some(7), + Token(11, _) if true => Some(8), + Token(12, _) if true => Some(9), + Token(13, _) if true => Some(10), + Token(14, _) if true => Some(11), + Token(15, _) if true => Some(12), + Token(16, _) if true => Some(13), + Token(17, _) if true => Some(14), + Token(18, _) if true => Some(15), + Token(19, _) if true => Some(16), + Token(20, _) if true => Some(17), + Token(21, _) if true => Some(18), + Token(22, _) if true => Some(19), + Token(23, _) if true => Some(20), + Token(24, _) if true => Some(21), + Token(25, _) if true => Some(22), + Token(26, _) if true => Some(23), + Token(27, _) if true => Some(24), + Token(28, _) if true => Some(25), + Token(29, _) if true => Some(26), + Token(30, _) if true => Some(27), + Token(31, _) if true => Some(28), + Token(32, _) if true => Some(29), + Token(33, _) if true => Some(30), + Token(34, _) if true => Some(31), + Token(35, _) if true => Some(32), + Token(0, _) if true => Some(33), + Token(1, _) if true => Some(34), + Token(2, _) if true => Some(35), _ => None, } } @@ -695,8 +712,8 @@ mod __parse__BasicBlock { ) -> __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 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 => 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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -814,7 +831,7 @@ mod __parse__BasicBlock { } 17 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 3, nonterminal_produced: 10, } } @@ -905,7 +922,7 @@ mod __parse__BasicBlock { 32 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 18, + nonterminal_produced: 17, } } 33 => { @@ -916,20 +933,20 @@ mod __parse__BasicBlock { } 34 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 19, + states_to_pop: 0, + nonterminal_produced: 18, } } 35 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 19, + states_to_pop: 2, + nonterminal_produced: 18, } } 36 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 19, + states_to_pop: 1, + nonterminal_produced: 18, } } 37 => { @@ -940,20 +957,20 @@ mod __parse__BasicBlock { } 38 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 20, + states_to_pop: 0, + nonterminal_produced: 19, } } 39 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 20, + states_to_pop: 2, + nonterminal_produced: 19, } } 40 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 20, + states_to_pop: 1, + nonterminal_produced: 19, } } 41 => { @@ -964,20 +981,20 @@ mod __parse__BasicBlock { } 42 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 21, + states_to_pop: 0, + nonterminal_produced: 20, } } 43 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 21, + states_to_pop: 2, + nonterminal_produced: 20, } } 44 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 21, + states_to_pop: 1, + nonterminal_produced: 20, } } 45 => { @@ -988,103 +1005,103 @@ mod __parse__BasicBlock { } 46 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 8, nonterminal_produced: 22, } } 47 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, - nonterminal_produced: 23, + states_to_pop: 9, + nonterminal_produced: 22, } } 48 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 9, + states_to_pop: 1, nonterminal_produced: 23, } } 49 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 24, + states_to_pop: 2, + nonterminal_produced: 23, } } 50 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 24, } } 51 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 25, + states_to_pop: 1, + nonterminal_produced: 24, } } 52 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 26, + states_to_pop: 2, + nonterminal_produced: 25, } } 53 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 0, nonterminal_produced: 26, } } 54 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 27, + nonterminal_produced: 26, } } 55 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 27, } } 56 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, - nonterminal_produced: 28, + states_to_pop: 2, + nonterminal_produced: 27, } } 57 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, + states_to_pop: 8, nonterminal_produced: 28, } } 58 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 4, + states_to_pop: 8, nonterminal_produced: 28, } } 59 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, + states_to_pop: 5, nonterminal_produced: 28, } } 60 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 5, + states_to_pop: 9, nonterminal_produced: 28, } } 61 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 5, nonterminal_produced: 28, } } 62 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 2, nonterminal_produced: 28, } } @@ -1097,212 +1114,230 @@ mod __parse__BasicBlock { 64 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 29, + nonterminal_produced: 28, } } 65 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 30, + states_to_pop: 2, + nonterminal_produced: 29, } } 66 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 67 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 68 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 32, + nonterminal_produced: 30, } } 69 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 32, + states_to_pop: 1, + nonterminal_produced: 31, } } 70 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 33, + states_to_pop: 2, + nonterminal_produced: 31, } } 71 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 34, + states_to_pop: 1, + nonterminal_produced: 32, } } 72 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 34, + states_to_pop: 0, + nonterminal_produced: 32, } } 73 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 74 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 75 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 36, + states_to_pop: 2, + nonterminal_produced: 34, } } 76 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 37, + nonterminal_produced: 34, } } 77 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 37, + states_to_pop: 3, + nonterminal_produced: 35, } } 78 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 36, } } 79 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 38, + states_to_pop: 0, + nonterminal_produced: 36, } } 80 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 81 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 82 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 83 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 84 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 85 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 86 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 87 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 88 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 39, + nonterminal_produced: 37, } } 89 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 39, + states_to_pop: 1, + nonterminal_produced: 37, } } 90 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 40, + states_to_pop: 2, + nonterminal_produced: 37, } } 91 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 40, + nonterminal_produced: 38, } } - 92 => __state_machine::SimulatedReduce::Accept, - 93 => { + 92 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 42, + states_to_pop: 0, + nonterminal_produced: 38, } } - 94 => { + 93 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 43, + nonterminal_produced: 39, } } - 95 => { + 94 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 44, + nonterminal_produced: 39, } } + 95 => __state_machine::SimulatedReduce::Accept, 96 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 45, + nonterminal_produced: 41, } } 97 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 46, + nonterminal_produced: 42, } } 98 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 47, + nonterminal_produced: 43, } } 99 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 48, + nonterminal_produced: 44, + } + } + 100 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 45, + } + } + 101 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 46, + } + } + 102 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, } } _ => panic!("invalid reduction index {}", __reduce_index) @@ -1663,12 +1698,7 @@ mod __parse__BasicBlock { __reduce91(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 92 => { - // __BasicBlock = BasicBlock => ActionFn(2); - let __sym0 = __pop_Variant9(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action2::<>(input, __sym0); - return Some(Ok(__nt)); + __reduce92(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 93 => { __reduce93(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -1677,7 +1707,12 @@ mod __parse__BasicBlock { __reduce94(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 95 => { - __reduce95(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + // __BasicBlock = BasicBlock => ActionFn(2); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action2::<>(input, __sym0); + return Some(Ok(__nt)); } 96 => { __reduce96(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -1691,6 +1726,15 @@ mod __parse__BasicBlock { 99 => { __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 100 => { + __reduce100(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 101 => { + __reduce101(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 102 => { + __reduce102(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -1730,32 +1774,32 @@ mod __parse__BasicBlock { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, BasicBlockId, usize) + ) -> (usize, CmpOp, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant17< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, CmpOp, usize) + ) -> (usize, Function, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant18< + fn __pop_Variant19< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Function, usize) + ) -> (usize, Identifier, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -1803,36 +1847,25 @@ mod __parse__BasicBlock { _ => __symbol_type_mismatch() } } - fn __pop_Variant25< - 'input, - >( - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, RegId, usize) - { - match __symbols.pop() { - Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), - _ => __symbol_type_mismatch() - } - } - fn __pop_Variant17< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant27< + fn __pop_Variant26< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Target, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -1858,25 +1891,25 @@ mod __parse__BasicBlock { _ => __symbol_type_mismatch() } } - fn __pop_Variant15< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant16< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -1902,14 +1935,14 @@ mod __parse__BasicBlock { _ => __symbol_type_mismatch() } } - fn __pop_Variant19< + fn __pop_Variant18< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, alloc::vec::Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -1968,14 +2001,14 @@ mod __parse__BasicBlock { _ => __symbol_type_mismatch() } } - fn __pop_Variant29< + fn __pop_Variant28< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -1990,14 +2023,14 @@ mod __parse__BasicBlock { _ => __symbol_type_mismatch() } } - fn __pop_Variant28< + fn __pop_Variant27< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -2012,25 +2045,25 @@ mod __parse__BasicBlock { _ => __symbol_type_mismatch() } } - fn __pop_Variant26< + fn __pop_Variant25< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant30< + fn __pop_Variant29< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, u64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -2054,11 +2087,11 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = "-" => ActionFn(44); + // "-"? = "-" => ActionFn(47); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action47::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 0) } @@ -2071,10 +2104,10 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = => ActionFn(45); + // "-"? = => ActionFn(48); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action45::<>(input, &__start, &__end); + let __nt = super::__action48::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (0, 0) } @@ -2087,13 +2120,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Arg, "," => ActionFn(74); + // ( ",") = Arg, "," => ActionFn(77); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action74::<>(input, __sym0, __sym1); + let __nt = super::__action77::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 1) } @@ -2106,10 +2139,10 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(72); + // ( ",")* = => ActionFn(75); 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::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (0, 2) } @@ -2122,11 +2155,11 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(73); + // ( ",")* = ( ",")+ => ActionFn(76); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action73::<>(input, __sym0); + let __nt = super::__action76::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (1, 2) } @@ -2139,13 +2172,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Arg, "," => ActionFn(86); + // ( ",")+ = Arg, "," => ActionFn(89); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action86::<>(input, __sym0, __sym1); + let __nt = super::__action89::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -2158,14 +2191,14 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Arg, "," => ActionFn(87); + // ( ",")+ = ( ",")+, Arg, "," => ActionFn(90); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (3, 3) } @@ -2178,13 +2211,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Operand, "," => ActionFn(77); + // ( ",") = Operand, "," => ActionFn(80); 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::__action77::<>(input, __sym0, __sym1); + let __nt = super::__action80::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 4) } @@ -2197,10 +2230,10 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(75); + // ( ",")* = => ActionFn(78); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action75::<>(input, &__start, &__end); + let __nt = super::__action78::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 5) } @@ -2213,11 +2246,11 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(76); + // ( ",")* = ( ",")+ => ActionFn(79); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action76::<>(input, __sym0); + let __nt = super::__action79::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 5) } @@ -2230,13 +2263,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Operand, "," => ActionFn(90); + // ( ",")+ = Operand, "," => 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::__action90::<>(input, __sym0, __sym1); + let __nt = super::__action93::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 6) } @@ -2249,14 +2282,14 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Operand, "," => ActionFn(91); + // ( ",")+ = ( ",")+, Operand, "," => ActionFn(94); 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::__action91::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 6) } @@ -2269,13 +2302,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Type, "," => ActionFn(65); + // ( ",") = Type, "," => ActionFn(68); 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::__action65::<>(input, __sym0, __sym1); + let __nt = super::__action68::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 7) } @@ -2288,10 +2321,10 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(63); + // ( ",")* = => ActionFn(66); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action63::<>(input, &__start, &__end); + let __nt = super::__action66::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 8) } @@ -2304,11 +2337,11 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(64); + // ( ",")* = ( ",")+ => ActionFn(67); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action64::<>(input, __sym0); + let __nt = super::__action67::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 8) } @@ -2321,13 +2354,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Type, "," => ActionFn(94); + // ( ",")+ = Type, "," => ActionFn(97); 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::__action94::<>(input, __sym0, __sym1); + let __nt = super::__action97::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 9) } @@ -2340,14 +2373,14 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Type, "," => ActionFn(95); + // ( ",")+ = ( ",")+, Type, "," => ActionFn(98); 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::__action95::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (3, 9) } @@ -2360,15 +2393,16 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg = Type, RegId => ActionFn(12); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant25(__symbols); + // Arg = Type, "%", Identifier => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action12::<>(input, __sym0, __sym1); + let __end = __sym2.2; + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (2, 10) + (3, 10) } fn __reduce18< 'input, @@ -2379,11 +2413,11 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = Arg => ActionFn(70); + // Arg? = Arg => ActionFn(73); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action73::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -2396,10 +2430,10 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = => ActionFn(71); + // Arg? = => ActionFn(74); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action71::<>(input, &__start, &__end); + let __nt = super::__action74::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (0, 11) } @@ -2412,14 +2446,14 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":" => ActionFn(106); + // BasicBlock = Identifier, BasicBlockArgList, ":" => ActionFn(109); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -2432,15 +2466,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":", Instruction+ => ActionFn(107); + // BasicBlock = Identifier, BasicBlockArgList, ":", Instruction+ => ActionFn(110); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant21(__symbols); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action107::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action110::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (4, 12) } @@ -2453,13 +2487,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":" => ActionFn(108); + // BasicBlock = Identifier, ":" => ActionFn(111); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action108::<>(input, __sym0, __sym1); + let __nt = super::__action111::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (2, 12) } @@ -2472,14 +2506,14 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":", Instruction+ => ActionFn(109); + // BasicBlock = Identifier, ":", Instruction+ => ActionFn(112); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant21(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action112::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -2492,10 +2526,10 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = => ActionFn(56); + // BasicBlock* = => ActionFn(59); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action56::<>(input, &__start, &__end); + let __nt = super::__action59::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (0, 13) } @@ -2508,11 +2542,11 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = BasicBlock+ => ActionFn(57); + // BasicBlock* = BasicBlock+ => ActionFn(60); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action57::<>(input, __sym0); + let __nt = super::__action60::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 13) } @@ -2525,11 +2559,11 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock => ActionFn(66); + // BasicBlock+ = BasicBlock => ActionFn(69); let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action66::<>(input, __sym0); + let __nt = super::__action69::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 14) } @@ -2542,13 +2576,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(67); + // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(70); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant9(__symbols); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action67::<>(input, __sym0, __sym1); + let __nt = super::__action70::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 14) } @@ -2581,11 +2615,11 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = BasicBlockArgList => ActionFn(54); + // BasicBlockArgList? = BasicBlockArgList => ActionFn(57); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action54::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 16) } @@ -2598,10 +2632,10 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = => ActionFn(55); + // BasicBlockArgList? = => ActionFn(58); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action55::<>(input, &__start, &__end); + let __nt = super::__action58::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (0, 16) } @@ -2614,11 +2648,11 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockId = r#"bb(0|([1-9][0-9]*))"# => ActionFn(40); + // CmpOp = "eq" => ActionFn(21); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 17) } @@ -2630,33 +2664,16 @@ mod __parse__BasicBlock { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) - { - // CmpOp = "eq" => ActionFn(21); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action21::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) - } - fn __reduce33< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) { // CmpOp = "gt" => ActionFn(22); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } - fn __reduce34< + fn __reduce33< 'input, >( input: &'input str, @@ -2665,15 +2682,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Arg => ActionFn(98); + // Comma = Arg => ActionFn(101); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action98::<>(input, __sym0); + let __nt = super::__action101::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce35< + fn __reduce34< 'input, >( input: &'input str, @@ -2682,14 +2699,14 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(99); + // Comma = => ActionFn(102); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action99::<>(input, &__start, &__end); + let __nt = super::__action102::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (0, 19) + (0, 18) } - fn __reduce36< + fn __reduce35< 'input, >( input: &'input str, @@ -2698,17 +2715,17 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Arg => ActionFn(100); + // Comma = ( ",")+, Arg => ActionFn(103); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action100::<>(input, __sym0, __sym1); + let __nt = super::__action103::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (2, 19) + (2, 18) } - fn __reduce37< + fn __reduce36< 'input, >( input: &'input str, @@ -2717,15 +2734,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(101); + // Comma = ( ",")+ => ActionFn(104); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action101::<>(input, __sym0); + let __nt = super::__action104::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce38< + fn __reduce37< 'input, >( input: &'input str, @@ -2734,15 +2751,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Operand => ActionFn(110); + // Comma = Operand => ActionFn(113); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action110::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action113::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce39< + fn __reduce38< 'input, >( input: &'input str, @@ -2751,14 +2768,14 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(111); + // Comma = => ActionFn(114); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action111::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (0, 20) + let __nt = super::__action114::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 19) } - fn __reduce40< + fn __reduce39< 'input, >( input: &'input str, @@ -2767,17 +2784,17 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Operand => ActionFn(112); + // Comma = ( ",")+, Operand => ActionFn(115); 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::__action112::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (2, 20) + let __nt = super::__action115::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 19) } - fn __reduce41< + fn __reduce40< 'input, >( input: &'input str, @@ -2786,15 +2803,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(113); + // Comma = ( ",")+ => ActionFn(116); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action113::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action116::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce42< + fn __reduce41< 'input, >( input: &'input str, @@ -2803,15 +2820,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Type => ActionFn(118); + // Comma = Type => ActionFn(121); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action118::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action121::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce43< + fn __reduce42< 'input, >( input: &'input str, @@ -2820,14 +2837,14 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(119); + // Comma = => ActionFn(122); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action119::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (0, 21) + let __nt = super::__action122::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 20) } - fn __reduce44< + fn __reduce43< 'input, >( input: &'input str, @@ -2836,17 +2853,17 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Type => ActionFn(120); + // Comma = ( ",")+, Type => ActionFn(123); 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::__action120::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (2, 21) + let __nt = super::__action123::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 20) } - fn __reduce45< + fn __reduce44< 'input, >( input: &'input str, @@ -2855,15 +2872,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(121); + // Comma = ( ",")+ => ActionFn(124); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action121::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action124::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce46< + fn __reduce45< 'input, >( input: &'input str, @@ -2872,15 +2889,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(38); + // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action38::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant17(__nt), __end)); - (1, 22) + let __nt = super::__action41::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) } - fn __reduce47< + fn __reduce46< 'input, >( input: &'input str, @@ -2889,23 +2906,23 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(102); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(105); assert!(__symbols.len() >= 8); let __sym7 = __pop_Variant0(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym7.2; - let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (8, 23) + let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (8, 22) } - fn __reduce48< + fn __reduce47< 'input, >( input: &'input str, @@ -2914,22 +2931,39 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(103); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(106); assert!(__symbols.len() >= 9); let __sym8 = __pop_Variant0(__symbols); let __sym7 = __pop_Variant10(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym8.2; - let __nt = super::__action103::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (9, 22) + } + fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Function+ = Function => ActionFn(62); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action62::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (9, 23) + (1, 23) } fn __reduce49< 'input, @@ -2940,15 +2974,34 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function => ActionFn(59); + // Function+ = Function+, Function => ActionFn(63); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant17(__symbols); let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action63::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 23) + } + fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Identifier = UnsignedNum => ActionFn(42); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action59::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); (1, 24) } - fn __reduce50< + fn __reduce51< 'input, >( input: &'input str, @@ -2957,17 +3010,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function+, Function => ActionFn(60); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant18(__symbols); - let __sym0 = __pop_Variant19(__symbols); + // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(43); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action60::<>(input, __sym0, __sym1); + let __end = __sym0.2; + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); - (2, 24) + (1, 24) } - fn __reduce51< + fn __reduce52< 'input, >( input: &'input str, @@ -2986,7 +3037,7 @@ mod __parse__BasicBlock { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 25) } - fn __reduce52< + fn __reduce53< 'input, >( input: &'input str, @@ -2995,14 +3046,14 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = => ActionFn(52); + // Instruction* = => ActionFn(55); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action52::<>(input, &__start, &__end); + let __nt = super::__action55::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (0, 26) } - fn __reduce53< + fn __reduce54< 'input, >( input: &'input str, @@ -3011,15 +3062,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = Instruction+ => ActionFn(53); + // Instruction* = Instruction+ => ActionFn(56); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action53::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 26) } - fn __reduce54< + fn __reduce55< 'input, >( input: &'input str, @@ -3028,15 +3079,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction => ActionFn(68); + // Instruction+ = Instruction => ActionFn(71); let __sym0 = __pop_Variant20(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action68::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 27) } - fn __reduce55< + fn __reduce56< 'input, >( input: &'input str, @@ -3045,17 +3096,17 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction+, Instruction => ActionFn(69); + // Instruction+ = Instruction+, Instruction => ActionFn(72); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant20(__symbols); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action69::<>(input, __sym0, __sym1); + let __nt = super::__action72::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (2, 27) } - fn __reduce56< + fn __reduce57< 'input, >( input: &'input str, @@ -3064,22 +3115,23 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "add", Type, Operand, ",", Operand => ActionFn(14); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "add", Operand, ",", Operand => ActionFn(14); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce57< + fn __reduce58< 'input, >( input: &'input str, @@ -3088,22 +3140,23 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "sub", Type, Operand, ",", Operand => ActionFn(15); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "sub", Operand, ",", Operand => ActionFn(15); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce58< + fn __reduce59< 'input, >( input: &'input str, @@ -3112,19 +3165,20 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", Type, Operand => ActionFn(16); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant4(__symbols); - let __sym2 = __pop_Variant6(__symbols); + // InstructionInner = Type, "%", Identifier, "=", Operand => ActionFn(16); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant4(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym3.2; - let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym4.2; + let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (4, 28) + (5, 28) } - fn __reduce59< + fn __reduce60< 'input, >( input: &'input str, @@ -3133,23 +3187,24 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "icmp", CmpOp, Type, Operand, ",", Operand => ActionFn(17); - assert!(__symbols.len() >= 8); - let __sym7 = __pop_Variant4(__symbols); - let __sym6 = __pop_Variant0(__symbols); - let __sym5 = __pop_Variant4(__symbols); - let __sym4 = __pop_Variant6(__symbols); - let __sym3 = __pop_Variant14(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "cmp", CmpOp, Operand, ",", Operand => ActionFn(17); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant4(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant4(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym7.2; - let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __end = __sym8.2; + let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (8, 28) + (9, 28) } - fn __reduce60< + fn __reduce61< 'input, >( input: &'input str, @@ -3160,9 +3215,9 @@ mod __parse__BasicBlock { { // InstructionInner = "condbr", Operand, Target, ",", Target => ActionFn(18); assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant27(__symbols); + let __sym4 = __pop_Variant26(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant27(__symbols); + let __sym2 = __pop_Variant26(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; @@ -3171,7 +3226,7 @@ mod __parse__BasicBlock { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (5, 28) } - fn __reduce61< + fn __reduce62< 'input, >( input: &'input str, @@ -3182,7 +3237,7 @@ mod __parse__BasicBlock { { // InstructionInner = "br", Target => ActionFn(19); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant26(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; @@ -3190,26 +3245,6 @@ mod __parse__BasicBlock { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } - fn __reduce62< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // InstructionInner = "ret", Type, Operand => ActionFn(114); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant4(__symbols); - let __sym1 = __pop_Variant6(__symbols); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action114::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (3, 28) - } fn __reduce63< 'input, >( @@ -3219,13 +3254,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type => ActionFn(115); + // InstructionInner = "ret", Operand => ActionFn(117); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action115::<>(input, __sym0, __sym1); + let __nt = super::__action117::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } @@ -3238,13 +3273,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Literal = SignedNum => ActionFn(27); - let __sym0 = __pop_Variant26(__symbols); + // InstructionInner = "ret" => ActionFn(118); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action27::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant22(__nt), __end)); - (1, 29) + let __nt = super::__action118::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } fn __reduce65< 'input, @@ -3255,13 +3290,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Module = Function+ => ActionFn(8); - let __sym0 = __pop_Variant19(__symbols); + // Literal = SignedNum, Type => ActionFn(27); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant25(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 30) + let __end = __sym1.2; + let __nt = super::__action27::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (2, 29) } fn __reduce66< 'input, @@ -3272,13 +3309,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = Literal => ActionFn(25); - let __sym0 = __pop_Variant22(__symbols); + // Literal = "true" => ActionFn(28); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action25::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) } fn __reduce67< 'input, @@ -3289,13 +3326,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = RegId => ActionFn(26); - let __sym0 = __pop_Variant25(__symbols); + // Literal = "false" => ActionFn(29); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action26::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) } fn __reduce68< 'input, @@ -3306,13 +3343,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = Operand => ActionFn(49); - let __sym0 = __pop_Variant4(__symbols); + // Module = Function+ => ActionFn(8); + let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action49::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant24(__nt), __end)); - (1, 32) + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (1, 30) } fn __reduce69< 'input, @@ -3323,12 +3360,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = => ActionFn(50); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action50::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant24(__nt), __end)); - (0, 32) + // Operand = Literal => ActionFn(25); + let __sym0 = __pop_Variant22(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action25::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 31) } fn __reduce70< 'input, @@ -3339,13 +3377,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // RegId = r#"v(0|([1-9][0-9]*))"# => ActionFn(39); + // Operand = "%", Identifier => ActionFn(26); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action39::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant25(__nt), __end)); - (1, 33) + let __end = __sym1.2; + let __nt = super::__action26::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (2, 31) } fn __reduce71< 'input, @@ -3356,15 +3396,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = "-", UnsignedNum => ActionFn(84); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant30(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Operand? = Operand => ActionFn(52); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action84::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (2, 34) + let __end = __sym0.2; + let __nt = super::__action52::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (1, 32) } fn __reduce72< 'input, @@ -3375,13 +3413,12 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = UnsignedNum => ActionFn(85); - let __sym0 = __pop_Variant30(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action85::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (1, 34) + // Operand? = => ActionFn(53); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action53::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (0, 32) } fn __reduce73< 'input, @@ -3392,15 +3429,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId, TargetArgList => ActionFn(116); + // SignedNum = "-", UnsignedNum => ActionFn(87); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant29(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action116::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (2, 35) + let __nt = super::__action87::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (2, 33) } fn __reduce74< 'input, @@ -3411,13 +3448,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId => ActionFn(117); - let __sym0 = __pop_Variant13(__symbols); + // SignedNum = UnsignedNum => ActionFn(88); + let __sym0 = __pop_Variant29(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action117::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 35) + let __nt = super::__action88::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 33) } fn __reduce75< 'input, @@ -3428,16 +3465,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList = "(", Comma, ")" => ActionFn(24); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Target = Identifier, TargetArgList => ActionFn(119); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (3, 36) + let __end = __sym1.2; + let __nt = super::__action119::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 34) } fn __reduce76< 'input, @@ -3448,13 +3484,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = TargetArgList => ActionFn(47); - let __sym0 = __pop_Variant15(__symbols); + // Target = Identifier => ActionFn(120); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action47::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (1, 37) + let __nt = super::__action120::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 34) } fn __reduce77< 'input, @@ -3465,12 +3501,16 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = => ActionFn(48); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action48::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (0, 37) + // TargetArgList = "(", Comma, ")" => ActionFn(24); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 35) } fn __reduce78< 'input, @@ -3481,13 +3521,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u8" => ActionFn(28); - let __sym0 = __pop_Variant0(__symbols); + // TargetArgList? = TargetArgList => ActionFn(50); + let __sym0 = __pop_Variant14(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action28::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + let __nt = super::__action50::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (1, 36) } fn __reduce79< 'input, @@ -3498,13 +3538,12 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u16" => ActionFn(29); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action29::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + // TargetArgList? = => ActionFn(51); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action51::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 36) } fn __reduce80< 'input, @@ -3515,13 +3554,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u32" => ActionFn(30); + // Type = "u8" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce81< 'input, @@ -3532,13 +3571,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u64" => ActionFn(31); + // Type = "u16" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce82< 'input, @@ -3549,13 +3588,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i8" => ActionFn(32); + // Type = "u32" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce83< 'input, @@ -3566,13 +3605,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i16" => ActionFn(33); + // Type = "u64" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce84< 'input, @@ -3583,13 +3622,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i32" => ActionFn(34); + // Type = "i8" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce85< 'input, @@ -3600,13 +3639,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i64" => ActionFn(35); + // Type = "i16" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce86< 'input, @@ -3617,13 +3656,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "void" => ActionFn(36); + // Type = "i32" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce87< 'input, @@ -3634,13 +3673,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "bool" => ActionFn(37); + // Type = "i64" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce88< 'input, @@ -3651,13 +3690,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = Type => ActionFn(61); - let __sym0 = __pop_Variant6(__symbols); + // Type = "void" => ActionFn(38); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action61::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (1, 39) + let __nt = super::__action38::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 37) } fn __reduce89< 'input, @@ -3668,12 +3707,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = => ActionFn(62); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action62::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (0, 39) + // Type = "bool" => ActionFn(39); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action39::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 37) } fn __reduce90< 'input, @@ -3684,13 +3724,15 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = "0" => ActionFn(42); + // Type = "&", Type => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action42::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __end = __sym1.2; + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 37) } fn __reduce91< 'input, @@ -3701,13 +3743,29 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(43); - let __sym0 = __pop_Variant0(__symbols); + // Type? = Type => ActionFn(64); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action43::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action64::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (1, 38) + } + fn __reduce92< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Type? = => ActionFn(65); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action65::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (0, 38) } fn __reduce93< 'input, @@ -3718,13 +3776,13 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __CmpOp = CmpOp => ActionFn(5); - let __sym0 = __pop_Variant14(__symbols); + // UnsignedNum = "0" => ActionFn(45); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action5::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 42) + let __nt = super::__action45::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } fn __reduce94< 'input, @@ -3735,15 +3793,49 @@ mod __parse__BasicBlock { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Function = Function => ActionFn(1); - let __sym0 = __pop_Variant18(__symbols); + // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(46); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action1::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (1, 43) + let __nt = super::__action46::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce95< + fn __reduce96< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __CmpOp = CmpOp => ActionFn(5); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 41) + } + fn __reduce97< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Function = Function => ActionFn(1); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 42) + } + fn __reduce98< 'input, >( input: &'input str, @@ -3758,9 +3850,9 @@ mod __parse__BasicBlock { let __end = __sym0.2; let __nt = super::__action3::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 44) + (1, 43) } - fn __reduce96< + fn __reduce99< 'input, >( input: &'input str, @@ -3775,9 +3867,9 @@ mod __parse__BasicBlock { let __end = __sym0.2; let __nt = super::__action4::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 45) + (1, 44) } - fn __reduce97< + fn __reduce100< 'input, >( input: &'input str, @@ -3792,9 +3884,9 @@ mod __parse__BasicBlock { let __end = __sym0.2; let __nt = super::__action0::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 46) + (1, 45) } - fn __reduce98< + fn __reduce101< 'input, >( input: &'input str, @@ -3809,9 +3901,9 @@ mod __parse__BasicBlock { let __end = __sym0.2; let __nt = super::__action7::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 47) + (1, 46) } - fn __reduce99< + fn __reduce102< 'input, >( input: &'input str, @@ -3821,12 +3913,12 @@ mod __parse__BasicBlock { ) -> (usize, usize) { // __Target = Target => ActionFn(6); - let __sym0 = __pop_Variant27(__symbols); + let __sym0 = __pop_Variant26(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 48) + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 47) } } #[allow(unused_imports)] @@ -3837,7 +3929,7 @@ pub use self::__parse__BasicBlock::BasicBlockParser; mod __parse__CmpOp { use std::str::FromStr; - use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; + use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -3861,55 +3953,56 @@ mod __parse__CmpOp { Variant10(alloc::vec::Vec), Variant11(Vec), Variant12(core::option::Option>), - Variant13(BasicBlockId), - Variant14(CmpOp), - Variant15(Vec), - Variant16(Vec), - Variant17(String), - Variant18(Function), - Variant19(alloc::vec::Vec), + Variant13(CmpOp), + Variant14(Vec), + Variant15(Vec), + Variant16(String), + Variant17(Function), + Variant18(alloc::vec::Vec), + Variant19(Identifier), Variant20(Instruction), Variant21(alloc::vec::Vec), Variant22(Literal), Variant23(Module), Variant24(core::option::Option), - Variant25(RegId), - Variant26(i64), - Variant27(Target), - Variant28(core::option::Option>), - Variant29(core::option::Option), - Variant30(u64), + Variant25(i64), + Variant26(Target), + Variant27(core::option::Option>), + Variant28(core::option::Option), + Variant29(u64), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, 3, 0, 0, 4, 0, 0, 0, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, 0, 0, 0, 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 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 33 + integer] + __ACTION[(state as usize) * 36 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 0, // State 1 - -94, + -97, // State 2 - -33, + -32, // State 3 - -34, + -33, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 18 => 1, + 17 => 1, _ => 0, } } const __TERMINAL: &[&str] = &[ + r###""%""###, + r###""&""###, r###""(""###, r###"")""###, r###"",""###, @@ -3921,17 +4014,19 @@ mod __parse__CmpOp { r###""add""###, r###""bool""###, r###""br""###, + r###""cmp""###, r###""condbr""###, r###""eq""###, + r###""false""###, r###""fun""###, r###""gt""###, r###""i16""###, r###""i32""###, r###""i64""###, r###""i8""###, - r###""icmp""###, r###""ret""###, r###""sub""###, + r###""true""###, r###""u16""###, r###""u32""###, r###""u64""###, @@ -3941,8 +4036,7 @@ mod __parse__CmpOp { r###""}""###, r###"r#"@[a-zA-Z_][a-zA-Z0-9_]*"#"###, r###"r#"[1-9][0-9]*"#"###, - r###"r#"bb(0|([1-9][0-9]*))"#"###, - r###"r#"v(0|([1-9][0-9]*))"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, ]; fn __expected_tokens(__state: i8) -> alloc::vec::Vec { __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { @@ -4011,7 +4105,7 @@ mod __parse__CmpOp { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 33 - 1) + __action(state, 36 - 1) } #[inline] @@ -4078,39 +4172,42 @@ mod __parse__CmpOp { ) -> Option { match *__token { - Token(4, _) if true => Some(0), - Token(5, _) if true => Some(1), - Token(6, _) if true => Some(2), - Token(7, _) if true => Some(3), - Token(8, _) if true => Some(4), - Token(9, _) if true => Some(5), - Token(10, _) if true => Some(6), - Token(11, _) if true => Some(7), - Token(12, _) if true => Some(8), - Token(13, _) if true => Some(9), - Token(14, _) if true => Some(10), - Token(15, _) if true => Some(11), - Token(16, _) if true => Some(12), - Token(17, _) if true => Some(13), - Token(18, _) if true => Some(14), - Token(19, _) if true => Some(15), - Token(20, _) if true => Some(16), - Token(21, _) if true => Some(17), - Token(22, _) if true => Some(18), - Token(23, _) if true => Some(19), - Token(24, _) if true => Some(20), - Token(25, _) if true => Some(21), - Token(26, _) if true => Some(22), - Token(27, _) if true => Some(23), - Token(28, _) if true => Some(24), - Token(29, _) if true => Some(25), - Token(30, _) if true => Some(26), - Token(31, _) if true => Some(27), - Token(32, _) if true => Some(28), - Token(0, _) if true => Some(29), - Token(1, _) if true => Some(30), - Token(2, _) if true => Some(31), - Token(3, _) if true => Some(32), + Token(3, _) if true => Some(0), + Token(4, _) if true => Some(1), + Token(5, _) if true => Some(2), + Token(6, _) if true => Some(3), + Token(7, _) if true => Some(4), + Token(8, _) if true => Some(5), + Token(9, _) if true => Some(6), + Token(10, _) if true => Some(7), + Token(11, _) if true => Some(8), + Token(12, _) if true => Some(9), + Token(13, _) if true => Some(10), + Token(14, _) if true => Some(11), + Token(15, _) if true => Some(12), + Token(16, _) if true => Some(13), + Token(17, _) if true => Some(14), + Token(18, _) if true => Some(15), + Token(19, _) if true => Some(16), + Token(20, _) if true => Some(17), + Token(21, _) if true => Some(18), + Token(22, _) if true => Some(19), + Token(23, _) if true => Some(20), + Token(24, _) if true => Some(21), + Token(25, _) if true => Some(22), + Token(26, _) if true => Some(23), + Token(27, _) if true => Some(24), + Token(28, _) if true => Some(25), + Token(29, _) if true => Some(26), + Token(30, _) if true => Some(27), + Token(31, _) if true => Some(28), + Token(32, _) if true => Some(29), + Token(33, _) if true => Some(30), + Token(34, _) if true => Some(31), + Token(35, _) if true => Some(32), + Token(0, _) if true => Some(33), + Token(1, _) if true => Some(34), + Token(2, _) if true => Some(35), _ => None, } } @@ -4123,8 +4220,8 @@ mod __parse__CmpOp { ) -> __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 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 => 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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -4242,7 +4339,7 @@ mod __parse__CmpOp { } 17 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 3, nonterminal_produced: 10, } } @@ -4333,7 +4430,7 @@ mod __parse__CmpOp { 32 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 18, + nonterminal_produced: 17, } } 33 => { @@ -4344,20 +4441,20 @@ mod __parse__CmpOp { } 34 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 19, + states_to_pop: 0, + nonterminal_produced: 18, } } 35 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 19, + states_to_pop: 2, + nonterminal_produced: 18, } } 36 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 19, + states_to_pop: 1, + nonterminal_produced: 18, } } 37 => { @@ -4368,20 +4465,20 @@ mod __parse__CmpOp { } 38 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 20, + states_to_pop: 0, + nonterminal_produced: 19, } } 39 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 20, + states_to_pop: 2, + nonterminal_produced: 19, } } 40 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 20, + states_to_pop: 1, + nonterminal_produced: 19, } } 41 => { @@ -4392,20 +4489,20 @@ mod __parse__CmpOp { } 42 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 21, + states_to_pop: 0, + nonterminal_produced: 20, } } 43 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 21, + states_to_pop: 2, + nonterminal_produced: 20, } } 44 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 21, + states_to_pop: 1, + nonterminal_produced: 20, } } 45 => { @@ -4416,103 +4513,103 @@ mod __parse__CmpOp { } 46 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 8, nonterminal_produced: 22, } } 47 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, - nonterminal_produced: 23, + states_to_pop: 9, + nonterminal_produced: 22, } } 48 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 9, + states_to_pop: 1, nonterminal_produced: 23, } } 49 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 24, + states_to_pop: 2, + nonterminal_produced: 23, } } 50 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 24, } } 51 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 25, + states_to_pop: 1, + nonterminal_produced: 24, } } 52 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 26, + states_to_pop: 2, + nonterminal_produced: 25, } } 53 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 0, nonterminal_produced: 26, } } 54 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 27, + nonterminal_produced: 26, } } 55 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 27, } } 56 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, - nonterminal_produced: 28, + states_to_pop: 2, + nonterminal_produced: 27, } } 57 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, + states_to_pop: 8, nonterminal_produced: 28, } } 58 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 4, + states_to_pop: 8, nonterminal_produced: 28, } } 59 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, + states_to_pop: 5, nonterminal_produced: 28, } } 60 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 5, + states_to_pop: 9, nonterminal_produced: 28, } } 61 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 5, nonterminal_produced: 28, } } 62 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 2, nonterminal_produced: 28, } } @@ -4525,212 +4622,230 @@ mod __parse__CmpOp { 64 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 29, + nonterminal_produced: 28, } } 65 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 30, + states_to_pop: 2, + nonterminal_produced: 29, } } 66 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 67 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 68 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 32, + nonterminal_produced: 30, } } 69 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 32, + states_to_pop: 1, + nonterminal_produced: 31, } } 70 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 33, + states_to_pop: 2, + nonterminal_produced: 31, } } 71 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 34, + states_to_pop: 1, + nonterminal_produced: 32, } } 72 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 34, + states_to_pop: 0, + nonterminal_produced: 32, } } 73 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 74 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 75 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 36, + states_to_pop: 2, + nonterminal_produced: 34, } } 76 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 37, + nonterminal_produced: 34, } } 77 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 37, + states_to_pop: 3, + nonterminal_produced: 35, } } 78 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 36, } } 79 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 38, + states_to_pop: 0, + nonterminal_produced: 36, } } 80 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 81 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 82 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 83 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 84 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 85 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 86 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 87 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 88 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 39, + nonterminal_produced: 37, } } 89 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 39, + states_to_pop: 1, + nonterminal_produced: 37, } } 90 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 40, + states_to_pop: 2, + nonterminal_produced: 37, } } 91 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 40, + nonterminal_produced: 38, } } 92 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 41, + states_to_pop: 0, + nonterminal_produced: 38, } } - 93 => __state_machine::SimulatedReduce::Accept, - 94 => { + 93 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 43, + nonterminal_produced: 39, } } - 95 => { + 94 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 44, + nonterminal_produced: 39, } } - 96 => { + 95 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 45, + nonterminal_produced: 40, } } + 96 => __state_machine::SimulatedReduce::Accept, 97 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 46, + nonterminal_produced: 42, } } 98 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 47, + nonterminal_produced: 43, } } 99 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 48, + nonterminal_produced: 44, + } + } + 100 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 45, + } + } + 101 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 46, + } + } + 102 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, } } _ => panic!("invalid reduction index {}", __reduce_index) @@ -5094,12 +5209,7 @@ mod __parse__CmpOp { __reduce92(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 93 => { - // __CmpOp = CmpOp => ActionFn(5); - let __sym0 = __pop_Variant14(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action5::<>(input, __sym0); - return Some(Ok(__nt)); + __reduce93(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 94 => { __reduce94(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -5108,7 +5218,12 @@ mod __parse__CmpOp { __reduce95(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 96 => { - __reduce96(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + // __CmpOp = CmpOp => ActionFn(5); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action5::<>(input, __sym0); + return Some(Ok(__nt)); } 97 => { __reduce97(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -5119,6 +5234,15 @@ mod __parse__CmpOp { 99 => { __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 100 => { + __reduce100(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 101 => { + __reduce101(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 102 => { + __reduce102(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -5158,32 +5282,32 @@ mod __parse__CmpOp { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, BasicBlockId, usize) + ) -> (usize, CmpOp, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant17< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, CmpOp, usize) + ) -> (usize, Function, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant18< + fn __pop_Variant19< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Function, usize) + ) -> (usize, Identifier, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5231,36 +5355,25 @@ mod __parse__CmpOp { _ => __symbol_type_mismatch() } } - fn __pop_Variant25< - 'input, - >( - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, RegId, usize) - { - match __symbols.pop() { - Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), - _ => __symbol_type_mismatch() - } - } - fn __pop_Variant17< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant27< + fn __pop_Variant26< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Target, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5286,25 +5399,25 @@ mod __parse__CmpOp { _ => __symbol_type_mismatch() } } - fn __pop_Variant15< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant16< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5330,14 +5443,14 @@ mod __parse__CmpOp { _ => __symbol_type_mismatch() } } - fn __pop_Variant19< + fn __pop_Variant18< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, alloc::vec::Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5396,14 +5509,14 @@ mod __parse__CmpOp { _ => __symbol_type_mismatch() } } - fn __pop_Variant29< + fn __pop_Variant28< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5418,14 +5531,14 @@ mod __parse__CmpOp { _ => __symbol_type_mismatch() } } - fn __pop_Variant28< + fn __pop_Variant27< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5440,25 +5553,25 @@ mod __parse__CmpOp { _ => __symbol_type_mismatch() } } - fn __pop_Variant26< + fn __pop_Variant25< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant30< + fn __pop_Variant29< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, u64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -5482,11 +5595,11 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = "-" => ActionFn(44); + // "-"? = "-" => ActionFn(47); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action47::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 0) } @@ -5499,10 +5612,10 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = => ActionFn(45); + // "-"? = => ActionFn(48); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action45::<>(input, &__start, &__end); + let __nt = super::__action48::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (0, 0) } @@ -5515,13 +5628,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Arg, "," => ActionFn(74); + // ( ",") = Arg, "," => ActionFn(77); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action74::<>(input, __sym0, __sym1); + let __nt = super::__action77::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 1) } @@ -5534,10 +5647,10 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(72); + // ( ",")* = => ActionFn(75); 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::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (0, 2) } @@ -5550,11 +5663,11 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(73); + // ( ",")* = ( ",")+ => ActionFn(76); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action73::<>(input, __sym0); + let __nt = super::__action76::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (1, 2) } @@ -5567,13 +5680,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Arg, "," => ActionFn(86); + // ( ",")+ = Arg, "," => ActionFn(89); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action86::<>(input, __sym0, __sym1); + let __nt = super::__action89::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -5586,14 +5699,14 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Arg, "," => ActionFn(87); + // ( ",")+ = ( ",")+, Arg, "," => ActionFn(90); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (3, 3) } @@ -5606,13 +5719,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Operand, "," => ActionFn(77); + // ( ",") = Operand, "," => ActionFn(80); 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::__action77::<>(input, __sym0, __sym1); + let __nt = super::__action80::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 4) } @@ -5625,10 +5738,10 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(75); + // ( ",")* = => ActionFn(78); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action75::<>(input, &__start, &__end); + let __nt = super::__action78::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 5) } @@ -5641,11 +5754,11 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(76); + // ( ",")* = ( ",")+ => ActionFn(79); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action76::<>(input, __sym0); + let __nt = super::__action79::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 5) } @@ -5658,13 +5771,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Operand, "," => ActionFn(90); + // ( ",")+ = Operand, "," => 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::__action90::<>(input, __sym0, __sym1); + let __nt = super::__action93::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 6) } @@ -5677,14 +5790,14 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Operand, "," => ActionFn(91); + // ( ",")+ = ( ",")+, Operand, "," => ActionFn(94); 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::__action91::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 6) } @@ -5697,13 +5810,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Type, "," => ActionFn(65); + // ( ",") = Type, "," => ActionFn(68); 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::__action65::<>(input, __sym0, __sym1); + let __nt = super::__action68::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 7) } @@ -5716,10 +5829,10 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(63); + // ( ",")* = => ActionFn(66); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action63::<>(input, &__start, &__end); + let __nt = super::__action66::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 8) } @@ -5732,11 +5845,11 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(64); + // ( ",")* = ( ",")+ => ActionFn(67); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action64::<>(input, __sym0); + let __nt = super::__action67::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 8) } @@ -5749,13 +5862,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Type, "," => ActionFn(94); + // ( ",")+ = Type, "," => ActionFn(97); 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::__action94::<>(input, __sym0, __sym1); + let __nt = super::__action97::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 9) } @@ -5768,14 +5881,14 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Type, "," => ActionFn(95); + // ( ",")+ = ( ",")+, Type, "," => ActionFn(98); 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::__action95::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (3, 9) } @@ -5788,15 +5901,16 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg = Type, RegId => ActionFn(12); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant25(__symbols); + // Arg = Type, "%", Identifier => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action12::<>(input, __sym0, __sym1); + let __end = __sym2.2; + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (2, 10) + (3, 10) } fn __reduce18< 'input, @@ -5807,11 +5921,11 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = Arg => ActionFn(70); + // Arg? = Arg => ActionFn(73); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action73::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -5824,10 +5938,10 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = => ActionFn(71); + // Arg? = => ActionFn(74); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action71::<>(input, &__start, &__end); + let __nt = super::__action74::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (0, 11) } @@ -5840,14 +5954,14 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":" => ActionFn(106); + // BasicBlock = Identifier, BasicBlockArgList, ":" => ActionFn(109); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -5860,15 +5974,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":", Instruction+ => ActionFn(107); + // BasicBlock = Identifier, BasicBlockArgList, ":", Instruction+ => ActionFn(110); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant21(__symbols); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action107::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action110::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (4, 12) } @@ -5881,13 +5995,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":" => ActionFn(108); + // BasicBlock = Identifier, ":" => ActionFn(111); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action108::<>(input, __sym0, __sym1); + let __nt = super::__action111::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (2, 12) } @@ -5900,14 +6014,14 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":", Instruction+ => ActionFn(109); + // BasicBlock = Identifier, ":", Instruction+ => ActionFn(112); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant21(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action112::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -5920,10 +6034,10 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = => ActionFn(56); + // BasicBlock* = => ActionFn(59); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action56::<>(input, &__start, &__end); + let __nt = super::__action59::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (0, 13) } @@ -5936,11 +6050,11 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = BasicBlock+ => ActionFn(57); + // BasicBlock* = BasicBlock+ => ActionFn(60); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action57::<>(input, __sym0); + let __nt = super::__action60::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 13) } @@ -5953,11 +6067,11 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock => ActionFn(66); + // BasicBlock+ = BasicBlock => ActionFn(69); let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action66::<>(input, __sym0); + let __nt = super::__action69::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 14) } @@ -5970,13 +6084,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(67); + // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(70); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant9(__symbols); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action67::<>(input, __sym0, __sym1); + let __nt = super::__action70::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 14) } @@ -6009,11 +6123,11 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = BasicBlockArgList => ActionFn(54); + // BasicBlockArgList? = BasicBlockArgList => ActionFn(57); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action54::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 16) } @@ -6026,10 +6140,10 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = => ActionFn(55); + // BasicBlockArgList? = => ActionFn(58); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action55::<>(input, &__start, &__end); + let __nt = super::__action58::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (0, 16) } @@ -6042,11 +6156,11 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockId = r#"bb(0|([1-9][0-9]*))"# => ActionFn(40); + // CmpOp = "eq" => ActionFn(21); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 17) } @@ -6058,33 +6172,16 @@ mod __parse__CmpOp { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) - { - // CmpOp = "eq" => ActionFn(21); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action21::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) - } - fn __reduce33< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) { // CmpOp = "gt" => ActionFn(22); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } - fn __reduce34< + fn __reduce33< 'input, >( input: &'input str, @@ -6093,15 +6190,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Arg => ActionFn(98); + // Comma = Arg => ActionFn(101); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action98::<>(input, __sym0); + let __nt = super::__action101::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce35< + fn __reduce34< 'input, >( input: &'input str, @@ -6110,14 +6207,14 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(99); + // Comma = => ActionFn(102); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action99::<>(input, &__start, &__end); + let __nt = super::__action102::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (0, 19) + (0, 18) } - fn __reduce36< + fn __reduce35< 'input, >( input: &'input str, @@ -6126,17 +6223,17 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Arg => ActionFn(100); + // Comma = ( ",")+, Arg => ActionFn(103); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action100::<>(input, __sym0, __sym1); + let __nt = super::__action103::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (2, 19) + (2, 18) } - fn __reduce37< + fn __reduce36< 'input, >( input: &'input str, @@ -6145,15 +6242,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(101); + // Comma = ( ",")+ => ActionFn(104); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action101::<>(input, __sym0); + let __nt = super::__action104::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce38< + fn __reduce37< 'input, >( input: &'input str, @@ -6162,15 +6259,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Operand => ActionFn(110); + // Comma = Operand => ActionFn(113); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action110::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action113::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce39< + fn __reduce38< 'input, >( input: &'input str, @@ -6179,14 +6276,14 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(111); + // Comma = => ActionFn(114); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action111::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (0, 20) + let __nt = super::__action114::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 19) } - fn __reduce40< + fn __reduce39< 'input, >( input: &'input str, @@ -6195,17 +6292,17 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Operand => ActionFn(112); + // Comma = ( ",")+, Operand => ActionFn(115); 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::__action112::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (2, 20) + let __nt = super::__action115::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 19) } - fn __reduce41< + fn __reduce40< 'input, >( input: &'input str, @@ -6214,15 +6311,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(113); + // Comma = ( ",")+ => ActionFn(116); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action113::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action116::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce42< + fn __reduce41< 'input, >( input: &'input str, @@ -6231,15 +6328,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Type => ActionFn(118); + // Comma = Type => ActionFn(121); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action118::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action121::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce43< + fn __reduce42< 'input, >( input: &'input str, @@ -6248,14 +6345,14 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(119); + // Comma = => ActionFn(122); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action119::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (0, 21) + let __nt = super::__action122::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 20) } - fn __reduce44< + fn __reduce43< 'input, >( input: &'input str, @@ -6264,17 +6361,17 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Type => ActionFn(120); + // Comma = ( ",")+, Type => ActionFn(123); 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::__action120::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (2, 21) + let __nt = super::__action123::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 20) } - fn __reduce45< + fn __reduce44< 'input, >( input: &'input str, @@ -6283,15 +6380,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(121); + // Comma = ( ",")+ => ActionFn(124); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action121::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action124::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce46< + fn __reduce45< 'input, >( input: &'input str, @@ -6300,15 +6397,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(38); + // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action38::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant17(__nt), __end)); - (1, 22) + let __nt = super::__action41::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) } - fn __reduce47< + fn __reduce46< 'input, >( input: &'input str, @@ -6317,23 +6414,23 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(102); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(105); assert!(__symbols.len() >= 8); let __sym7 = __pop_Variant0(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym7.2; - let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (8, 23) + let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (8, 22) } - fn __reduce48< + fn __reduce47< 'input, >( input: &'input str, @@ -6342,22 +6439,39 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(103); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(106); assert!(__symbols.len() >= 9); let __sym8 = __pop_Variant0(__symbols); let __sym7 = __pop_Variant10(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym8.2; - let __nt = super::__action103::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (9, 22) + } + fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Function+ = Function => ActionFn(62); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action62::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (9, 23) + (1, 23) } fn __reduce49< 'input, @@ -6368,15 +6482,34 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function => ActionFn(59); + // Function+ = Function+, Function => ActionFn(63); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant17(__symbols); let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action63::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 23) + } + fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Identifier = UnsignedNum => ActionFn(42); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action59::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); (1, 24) } - fn __reduce50< + fn __reduce51< 'input, >( input: &'input str, @@ -6385,17 +6518,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function+, Function => ActionFn(60); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant18(__symbols); - let __sym0 = __pop_Variant19(__symbols); + // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(43); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action60::<>(input, __sym0, __sym1); + let __end = __sym0.2; + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); - (2, 24) + (1, 24) } - fn __reduce51< + fn __reduce52< 'input, >( input: &'input str, @@ -6414,7 +6545,7 @@ mod __parse__CmpOp { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 25) } - fn __reduce52< + fn __reduce53< 'input, >( input: &'input str, @@ -6423,14 +6554,14 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = => ActionFn(52); + // Instruction* = => ActionFn(55); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action52::<>(input, &__start, &__end); + let __nt = super::__action55::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (0, 26) } - fn __reduce53< + fn __reduce54< 'input, >( input: &'input str, @@ -6439,15 +6570,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = Instruction+ => ActionFn(53); + // Instruction* = Instruction+ => ActionFn(56); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action53::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 26) } - fn __reduce54< + fn __reduce55< 'input, >( input: &'input str, @@ -6456,15 +6587,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction => ActionFn(68); + // Instruction+ = Instruction => ActionFn(71); let __sym0 = __pop_Variant20(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action68::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 27) } - fn __reduce55< + fn __reduce56< 'input, >( input: &'input str, @@ -6473,17 +6604,17 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction+, Instruction => ActionFn(69); + // Instruction+ = Instruction+, Instruction => ActionFn(72); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant20(__symbols); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action69::<>(input, __sym0, __sym1); + let __nt = super::__action72::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (2, 27) } - fn __reduce56< + fn __reduce57< 'input, >( input: &'input str, @@ -6492,22 +6623,23 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "add", Type, Operand, ",", Operand => ActionFn(14); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); - let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + // InstructionInner = Type, "%", Identifier, "=", "add", Operand, ",", Operand => ActionFn(14); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (8, 28) } - fn __reduce57< + fn __reduce58< 'input, >( input: &'input str, @@ -6516,22 +6648,23 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "sub", Type, Operand, ",", Operand => ActionFn(15); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "sub", Operand, ",", Operand => ActionFn(15); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce58< + fn __reduce59< 'input, >( input: &'input str, @@ -6540,19 +6673,20 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", Type, Operand => ActionFn(16); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant4(__symbols); - let __sym2 = __pop_Variant6(__symbols); + // InstructionInner = Type, "%", Identifier, "=", Operand => ActionFn(16); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant4(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym3.2; - let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym4.2; + let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (4, 28) + (5, 28) } - fn __reduce59< + fn __reduce60< 'input, >( input: &'input str, @@ -6561,23 +6695,24 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "icmp", CmpOp, Type, Operand, ",", Operand => ActionFn(17); - assert!(__symbols.len() >= 8); - let __sym7 = __pop_Variant4(__symbols); - let __sym6 = __pop_Variant0(__symbols); - let __sym5 = __pop_Variant4(__symbols); - let __sym4 = __pop_Variant6(__symbols); - let __sym3 = __pop_Variant14(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "cmp", CmpOp, Operand, ",", Operand => ActionFn(17); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant4(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant4(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym7.2; - let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __end = __sym8.2; + let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (8, 28) + (9, 28) } - fn __reduce60< + fn __reduce61< 'input, >( input: &'input str, @@ -6588,9 +6723,9 @@ mod __parse__CmpOp { { // InstructionInner = "condbr", Operand, Target, ",", Target => ActionFn(18); assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant27(__symbols); + let __sym4 = __pop_Variant26(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant27(__symbols); + let __sym2 = __pop_Variant26(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; @@ -6599,7 +6734,7 @@ mod __parse__CmpOp { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (5, 28) } - fn __reduce61< + fn __reduce62< 'input, >( input: &'input str, @@ -6610,7 +6745,7 @@ mod __parse__CmpOp { { // InstructionInner = "br", Target => ActionFn(19); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant26(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; @@ -6618,26 +6753,6 @@ mod __parse__CmpOp { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } - fn __reduce62< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // InstructionInner = "ret", Type, Operand => ActionFn(114); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant4(__symbols); - let __sym1 = __pop_Variant6(__symbols); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action114::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (3, 28) - } fn __reduce63< 'input, >( @@ -6647,13 +6762,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type => ActionFn(115); + // InstructionInner = "ret", Operand => ActionFn(117); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action115::<>(input, __sym0, __sym1); + let __nt = super::__action117::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } @@ -6666,13 +6781,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Literal = SignedNum => ActionFn(27); - let __sym0 = __pop_Variant26(__symbols); + // InstructionInner = "ret" => ActionFn(118); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action27::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant22(__nt), __end)); - (1, 29) + let __nt = super::__action118::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } fn __reduce65< 'input, @@ -6683,13 +6798,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Module = Function+ => ActionFn(8); - let __sym0 = __pop_Variant19(__symbols); + // Literal = SignedNum, Type => ActionFn(27); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant25(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 30) + let __end = __sym1.2; + let __nt = super::__action27::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (2, 29) } fn __reduce66< 'input, @@ -6700,13 +6817,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = Literal => ActionFn(25); - let __sym0 = __pop_Variant22(__symbols); + // Literal = "true" => ActionFn(28); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action25::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) } fn __reduce67< 'input, @@ -6717,13 +6834,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = RegId => ActionFn(26); - let __sym0 = __pop_Variant25(__symbols); + // Literal = "false" => ActionFn(29); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action26::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) } fn __reduce68< 'input, @@ -6734,13 +6851,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = Operand => ActionFn(49); - let __sym0 = __pop_Variant4(__symbols); + // Module = Function+ => ActionFn(8); + let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action49::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant24(__nt), __end)); - (1, 32) + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (1, 30) } fn __reduce69< 'input, @@ -6751,12 +6868,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = => ActionFn(50); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action50::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant24(__nt), __end)); - (0, 32) + // Operand = Literal => ActionFn(25); + let __sym0 = __pop_Variant22(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action25::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 31) } fn __reduce70< 'input, @@ -6767,13 +6885,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // RegId = r#"v(0|([1-9][0-9]*))"# => ActionFn(39); + // Operand = "%", Identifier => ActionFn(26); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action39::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant25(__nt), __end)); - (1, 33) + let __end = __sym1.2; + let __nt = super::__action26::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (2, 31) } fn __reduce71< 'input, @@ -6784,15 +6904,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = "-", UnsignedNum => ActionFn(84); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant30(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Operand? = Operand => ActionFn(52); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action84::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (2, 34) + let __end = __sym0.2; + let __nt = super::__action52::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (1, 32) } fn __reduce72< 'input, @@ -6803,13 +6921,12 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = UnsignedNum => ActionFn(85); - let __sym0 = __pop_Variant30(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action85::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (1, 34) + // Operand? = => ActionFn(53); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action53::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (0, 32) } fn __reduce73< 'input, @@ -6820,15 +6937,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId, TargetArgList => ActionFn(116); + // SignedNum = "-", UnsignedNum => ActionFn(87); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant29(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action116::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (2, 35) + let __nt = super::__action87::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (2, 33) } fn __reduce74< 'input, @@ -6839,13 +6956,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId => ActionFn(117); - let __sym0 = __pop_Variant13(__symbols); + // SignedNum = UnsignedNum => ActionFn(88); + let __sym0 = __pop_Variant29(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action117::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 35) + let __nt = super::__action88::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 33) } fn __reduce75< 'input, @@ -6856,16 +6973,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList = "(", Comma, ")" => ActionFn(24); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Target = Identifier, TargetArgList => ActionFn(119); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (3, 36) + let __end = __sym1.2; + let __nt = super::__action119::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 34) } fn __reduce76< 'input, @@ -6876,13 +6992,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = TargetArgList => ActionFn(47); - let __sym0 = __pop_Variant15(__symbols); + // Target = Identifier => ActionFn(120); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action47::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (1, 37) + let __nt = super::__action120::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 34) } fn __reduce77< 'input, @@ -6893,12 +7009,16 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = => ActionFn(48); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action48::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (0, 37) + // TargetArgList = "(", Comma, ")" => ActionFn(24); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 35) } fn __reduce78< 'input, @@ -6909,13 +7029,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u8" => ActionFn(28); - let __sym0 = __pop_Variant0(__symbols); + // TargetArgList? = TargetArgList => ActionFn(50); + let __sym0 = __pop_Variant14(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action28::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + let __nt = super::__action50::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (1, 36) } fn __reduce79< 'input, @@ -6926,13 +7046,12 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u16" => ActionFn(29); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action29::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + // TargetArgList? = => ActionFn(51); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action51::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 36) } fn __reduce80< 'input, @@ -6943,13 +7062,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u32" => ActionFn(30); + // Type = "u8" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce81< 'input, @@ -6960,13 +7079,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u64" => ActionFn(31); + // Type = "u16" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce82< 'input, @@ -6977,13 +7096,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i8" => ActionFn(32); + // Type = "u32" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce83< 'input, @@ -6994,13 +7113,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i16" => ActionFn(33); + // Type = "u64" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce84< 'input, @@ -7011,13 +7130,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i32" => ActionFn(34); + // Type = "i8" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce85< 'input, @@ -7028,13 +7147,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i64" => ActionFn(35); + // Type = "i16" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce86< 'input, @@ -7045,13 +7164,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "void" => ActionFn(36); + // Type = "i32" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce87< 'input, @@ -7062,13 +7181,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "bool" => ActionFn(37); + // Type = "i64" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce88< 'input, @@ -7079,13 +7198,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = Type => ActionFn(61); - let __sym0 = __pop_Variant6(__symbols); + // Type = "void" => ActionFn(38); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action61::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (1, 39) + let __nt = super::__action38::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 37) } fn __reduce89< 'input, @@ -7096,12 +7215,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = => ActionFn(62); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action62::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (0, 39) + // Type = "bool" => ActionFn(39); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action39::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 37) } fn __reduce90< 'input, @@ -7112,13 +7232,15 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = "0" => ActionFn(42); + // Type = "&", Type => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action42::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __end = __sym1.2; + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 37) } fn __reduce91< 'input, @@ -7129,13 +7251,13 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(43); - let __sym0 = __pop_Variant0(__symbols); + // Type? = Type => ActionFn(64); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action43::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action64::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (1, 38) } fn __reduce92< 'input, @@ -7146,13 +7268,29 @@ mod __parse__CmpOp { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __BasicBlock = BasicBlock => ActionFn(2); - let __sym0 = __pop_Variant9(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action2::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant9(__nt), __end)); - (1, 41) + // Type? = => ActionFn(65); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action65::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (0, 38) + } + fn __reduce93< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // UnsignedNum = "0" => ActionFn(45); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action45::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } fn __reduce94< 'input, @@ -7162,16 +7300,50 @@ mod __parse__CmpOp { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) + { + // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(46); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action46::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) + } + fn __reduce95< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __BasicBlock = BasicBlock => ActionFn(2); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action2::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 40) + } + fn __reduce97< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) { // __Function = Function => ActionFn(1); - let __sym0 = __pop_Variant18(__symbols); + let __sym0 = __pop_Variant17(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action1::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (1, 43) + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 42) } - fn __reduce95< + fn __reduce98< 'input, >( input: &'input str, @@ -7186,9 +7358,9 @@ mod __parse__CmpOp { let __end = __sym0.2; let __nt = super::__action3::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 44) + (1, 43) } - fn __reduce96< + fn __reduce99< 'input, >( input: &'input str, @@ -7203,9 +7375,9 @@ mod __parse__CmpOp { let __end = __sym0.2; let __nt = super::__action4::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 45) + (1, 44) } - fn __reduce97< + fn __reduce100< 'input, >( input: &'input str, @@ -7220,9 +7392,9 @@ mod __parse__CmpOp { let __end = __sym0.2; let __nt = super::__action0::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 46) + (1, 45) } - fn __reduce98< + fn __reduce101< 'input, >( input: &'input str, @@ -7237,9 +7409,9 @@ mod __parse__CmpOp { let __end = __sym0.2; let __nt = super::__action7::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 47) + (1, 46) } - fn __reduce99< + fn __reduce102< 'input, >( input: &'input str, @@ -7249,12 +7421,12 @@ mod __parse__CmpOp { ) -> (usize, usize) { // __Target = Target => ActionFn(6); - let __sym0 = __pop_Variant27(__symbols); + let __sym0 = __pop_Variant26(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 48) + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 47) } } #[allow(unused_imports)] @@ -7265,7 +7437,7 @@ pub use self::__parse__CmpOp::CmpOpParser; mod __parse__Function { use std::str::FromStr; - use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; + use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -7289,233 +7461,240 @@ mod __parse__Function { Variant10(alloc::vec::Vec), Variant11(Vec), Variant12(core::option::Option>), - Variant13(BasicBlockId), - Variant14(CmpOp), - Variant15(Vec), - Variant16(Vec), - Variant17(String), - Variant18(Function), - Variant19(alloc::vec::Vec), + Variant13(CmpOp), + Variant14(Vec), + Variant15(Vec), + Variant16(String), + Variant17(Function), + Variant18(alloc::vec::Vec), + Variant19(Identifier), Variant20(Instruction), Variant21(alloc::vec::Vec), Variant22(Literal), Variant23(Module), Variant24(core::option::Option), - Variant25(RegId), - Variant26(i64), - Variant27(Target), - Variant28(core::option::Option>), - Variant29(core::option::Option), - Variant30(u64), + Variant25(i64), + Variant26(Target), + Variant27(core::option::Option>), + Variant28(core::option::Option), + Variant29(u64), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 0, 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, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, 43, 44, 45, 46, 47, 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, 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, 49, 0, 0, // State 3 - 0, -44, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, // State 4 - 0, -46, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 4, 0, -43, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 59, 0, + 0, 4, 0, -45, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 59, 0, + 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 61, 62, // State 7 - 9, 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, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 61, 62, // State 8 - 0, -36, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 0, 0, 0, 0, 11, 0, 0, 0, 0, 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 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, -23, 68, + 0, 4, 0, -35, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, // State 10 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, -21, 68, + 0, 4, 0, 0, 0, 0, -23, 0, 0, 0, 0, 38, 15, 0, 16, 0, 0, 0, 0, 39, 40, 41, 42, 17, 0, 0, 43, 44, 45, 46, 47, 0, -23, 0, -23, -23, // State 11 - 0, -38, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, -21, 0, 0, 0, 0, 38, 15, 0, 16, 0, 0, 0, 0, 39, 40, 41, 42, 17, 0, 0, 43, 44, 45, 46, 47, 0, -21, 0, -21, -21, // State 12 - 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, -37, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, // State 13 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, -24, 68, + 0, 4, 0, 0, 0, 0, -24, 0, 0, 0, 0, 38, 15, 0, 16, 0, 0, 0, 0, 39, 40, 41, 42, 17, 0, 0, 43, 44, 45, 46, 47, 0, -24, 0, -24, -24, // State 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, 0, 0, 0, 0, 59, 0, + 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, // State 15 - 0, 0, 0, 22, 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, 81, 0, 68, + 24, 0, 0, 0, 0, 25, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 16 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 25, 59, 0, -65, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 17 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, -22, 68, + 0, 4, 0, 0, 0, 0, -22, 0, 0, 0, 0, 38, 15, 0, 16, 0, 0, 0, 0, 39, 40, 41, 42, 17, 0, 0, 43, 44, 45, 46, 47, 0, -22, 0, -22, -22, // State 18 - 0, 0, 0, 0, 0, 0, 0, 0, 25, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 26, 0, 27, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, // State 19 - 28, 0, -75, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, // 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, 59, 0, + 0, 0, 26, 0, -77, 0, 0, 0, -77, 0, 0, 0, 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 21 - 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, 81, 0, 0, + 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, // State 22 - 0, 0, 0, 22, 80, 0, -64, 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, 68, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, // State 23 - 0, 0, 0, 22, 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, 81, 0, 68, + 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, // State 24 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 25 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, -39, 0, 25, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 26 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 25, 59, 0, 0, 0, 30, 0, 0, 31, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 32, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 27 - 0, -40, 0, 22, 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, 81, 0, 68, + 24, 0, 0, -41, 0, 25, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 28 - 0, 0, 0, 22, 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, 81, 0, 68, + 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, // State 29 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 25, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 30 - 0, 0, 0, 22, 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, 81, 0, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 31 - 0, -42, 0, 22, 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, 81, 0, 68, + 24, 0, 0, 0, 0, 25, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // 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, 59, 0, + 24, 0, 0, 0, 0, 25, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 33 - 0, 0, 0, 22, 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, 81, 0, 68, + 24, 0, 0, 0, 0, 25, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 34 - 0, 0, 0, 22, 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, 81, 0, 68, + 24, 0, 0, 0, 0, 25, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 35 - 0, 0, 0, 22, 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, 81, 0, 68, + 24, 0, 0, 0, 0, 25, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, // State 36 - 0, 0, 0, 22, 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, 81, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 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, 0, 0, 0, 0, 0, 0, + -90, 0, 0, -90, -90, 0, -90, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, -90, -90, // State 38 - 0, -88, -88, -88, -88, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, -88, 0, -88, + -86, 0, 0, -86, -86, 0, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, -86, // State 39 - 0, -84, -84, -84, -84, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, -84, 0, -84, + -87, 0, 0, -87, -87, 0, -87, 0, -87, 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, -87, -87, // State 40 - 0, -85, -85, -85, -85, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, 0, -85, + -88, 0, 0, -88, -88, 0, -88, 0, -88, 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, -88, -88, // State 41 - 0, -86, -86, -86, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, 0, -86, + -85, 0, 0, -85, -85, 0, -85, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, -85, // State 42 - 0, -83, -83, -83, -83, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, -83, 0, -83, + -82, 0, 0, -82, -82, 0, -82, 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, -82, -82, -82, // State 43 - 0, -80, -80, -80, -80, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, -80, 0, -80, + -83, 0, 0, -83, -83, 0, -83, 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, -83, -83, -83, // State 44 - 0, -81, -81, -81, -81, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, -81, 0, -81, + -84, 0, 0, -84, -84, 0, -84, 0, -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, -84, -84, -84, // State 45 - 0, -82, -82, -82, -82, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82, -82, 0, -82, + -81, 0, 0, -81, -81, 0, -81, 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, -81, -81, -81, // State 46 - 0, -79, -79, -79, -79, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, -79, 0, -79, + -89, 0, 0, -89, -89, 0, -89, 0, -89, 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, -89, -89, // State 47 - 0, -87, -87, -87, -87, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, -87, 0, -87, + 0, 0, 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, // State 48 - 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, -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, // State 49 - -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -91, 0, 0, -91, -91, 0, -91, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, -91, -91, // State 50 - 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, 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, // State 51 - 0, -43, 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, -42, 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, // State 52 - 0, -45, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -44, 56, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 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, // State 54 - 0, -16, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, -16, -16, -16, -16, 0, 0, 0, -16, -16, -16, -16, -16, 0, 0, 0, 0, 0, 0, + 0, -16, 0, -16, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, -16, -16, -16, -16, 0, 0, 0, -16, -16, -16, -16, -16, 0, 0, 0, 0, 0, // State 55 - 0, -17, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, -17, -17, -17, -17, 0, 0, 0, -17, -17, -17, -17, -17, 0, 0, 0, 0, 0, 0, + 0, -17, 0, -17, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, -17, -17, -17, -17, 0, 0, 0, -17, -17, -17, -17, -17, 0, 0, 0, 0, 0, // State 56 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, + 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, -27, -27, // State 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, -51, -51, -51, 0, -51, -51, -51, -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, -51, -51, // State 58 - -32, 0, -32, 0, 0, -32, -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, -94, -94, -94, -94, 0, -94, -94, -94, -94, 0, -94, 0, 0, 0, 0, 0, 0, 0, -94, -94, -94, -94, 0, 0, 0, -94, -94, -94, -94, -94, 0, 0, 0, -94, -94, // State 59 - 0, 0, 0, 0, 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, 0, -28, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 60 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -95, -95, -95, -95, 0, -95, -95, -95, -95, 0, -95, 0, 0, 0, 0, 0, 0, 0, -95, -95, -95, -95, 0, 0, 0, -95, -95, -95, -95, -95, 0, 0, 0, -95, -95, // State 61 - 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -52, -52, -52, 0, -52, -52, -52, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, -52, // State 62 - 0, -35, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, -28, // State 63 - 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 64 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, -55, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, -55, -55, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 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 65 - 0, 0, 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, 0, + 0, 0, 0, -34, 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, 0, 0, 0, 0, 0, 0, // State 66 - 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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 67 - 0, -71, -71, 0, 0, 0, -71, -71, 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, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 68 - 0, -37, 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, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, -56, -56, 0, -56, 0, 0, 0, 0, -56, -56, -56, -56, -56, 0, 0, -56, -56, -56, -56, -56, 0, -56, 0, -56, -56, // State 69 - 0, -6, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, -6, -6, -6, -6, -6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 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 70 - 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, // State 71 - 0, -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, -36, 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, // State 72 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, -56, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, -56, -56, + 0, -6, 0, -6, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, -6, -6, -6, -6, -6, 0, 0, 0, 0, 0, // State 73 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, -52, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, -52, -52, + 0, 0, 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 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 74 - 0, 0, 0, 0, 0, 0, -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, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, -57, -57, 0, -57, 0, 0, 0, 0, -57, -57, -57, -57, -57, 0, 0, -57, -57, -57, -57, -57, 0, -57, 0, -57, -57, // State 75 - 0, -67, -67, 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, -67, 0, + 0, -53, 0, 0, 0, 0, -53, 0, 0, 0, 0, -53, -53, 0, -53, 0, 0, 0, 0, -53, -53, -53, -53, -53, 0, 0, -53, -53, -53, -53, -53, 0, -53, 0, -53, -53, // State 76 - 0, -68, -68, 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, -68, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 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 77 - 0, -65, -65, 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, -65, 0, + 0, 0, 0, -70, -70, 0, -70, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -70, // State 78 - 0, -73, -73, 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, 0, + 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75, -75, -75, -75, 0, 0, 0, -75, -75, -75, -75, -75, 0, 0, 0, 0, 0, // State 79 - 0, -91, -91, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, + 0, 0, 0, -68, -68, 0, -68, 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, -68, -68, // State 80 - 0, -92, -92, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, + 0, 0, 0, -67, -67, 0, -67, 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, -67, -67, // State 81 - 0, -7, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, -7, -7, -7, -7, 0, 0, 0, -7, -7, -7, -7, -7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -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, // State 82 - 0, 0, -74, 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, 0, + 0, -7, 0, -7, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, -7, -7, -7, -7, 0, 0, 0, -7, -7, -7, -7, -7, 0, 0, 0, 0, 0, // State 83 - 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -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, // State 84 - 0, -72, -72, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 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, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -76, 0, 0, 0, -76, 0, 0, 0, 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 86 - 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 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 87 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, -33, -33, -33, -33, 0, 0, 0, -33, -33, -33, -33, -33, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -66, -66, 0, -66, 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, -66, -66, // State 88 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, -34, -34, -34, -34, 0, 0, 0, -34, -34, -34, -34, -34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -71, -71, 0, -71, 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, -71, -71, // State 89 - 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74, -74, -74, -74, 0, 0, 0, -74, -74, -74, -74, -74, 0, 0, 0, 0, 0, // State 90 - 0, -39, 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, 95, 0, 0, 0, 0, 0, 0, 0, 0, 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 91 - 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, -38, 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, // State 92 - 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 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 93 - 0, -41, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -40, 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, 0, 0, // State 94 - 0, 0, -76, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, 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 95 - 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -11, + -11, 0, 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, // State 96 - 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -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, // State 97 - 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, 0, 0, 0, + 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 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 98 - 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, -12, + -32, 0, 0, 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, // State 99 - 0, 0, 0, 0, 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, + -33, 0, 0, 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, // State 100 - 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 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, // State 101 - 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -12, 0, 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, + // State 102 + 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 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 103 + 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 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 104 + 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 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 105 + 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 33 + integer] + __ACTION[(state as usize) * 36 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -7591,9 +7770,9 @@ mod __parse__Function { // State 35 0, // State 36 - 0, + -98, // State 37 - -95, + 0, // State 38 0, // State 39 @@ -7633,19 +7812,19 @@ mod __parse__Function { // State 56 0, // State 57 - -48, + 0, // State 58 0, // State 59 - 0, + -47, // State 60 - -49, + 0, // State 61 0, // State 62 0, // State 63 - 0, + -48, // State 64 0, // State 65 @@ -7722,86 +7901,93 @@ mod __parse__Function { 0, // State 101 0, + // State 102 + 0, + // State 103 + 0, + // State 104 + 0, + // State 105 + 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 3 => 11, - 6 => 31, - 9 => 4, + 3 => 12, + 6 => 27, + 9 => 5, 10 => match state { - 11 => 68, - _ => 62, + 12 => 71, + _ => 65, }, 12 => match state { - 6 => 59, + 7 => 62, _ => 56, }, - 14 => 6, - 15 => 61, - 17 => match state { - 5..=6 => 7, - _ => 19, + 14 => 7, + 15 => 64, + 17 => 32, + 18 => 66, + 19 => 90, + 20 => 50, + 21 => 47, + 22 => 36, + 24 => match state { + 6..=7 => 8, + 18 => 83, + 19 => 84, + 23 => 88, + _ => 20, }, - 18 => 29, - 19 => 63, - 20 => 89, - 21 => 50, - 22 => 48, - 23 => 37, 25 => match state { - 9..=10 => 64, - _ => 72, + 10..=11 => 68, + _ => 74, }, 27 => match state { - 10 => 17, + 11 => 17, _ => 13, }, - 28 => 65, - 29 => 75, + 28 => 69, + 29 => 77, 31 => match state { - 22 => 85, - 23 => 86, - 27 => 90, - 28 => 91, - 30 => 92, - 31 => 93, - 33 => 97, - 34 => 99, - 35 => 100, - 36 => 101, - _ => 20, + 16 => 81, + 25 => 91, + 26 => 92, + 27 => 93, + 29 => 97, + 31 => 100, + 32 => 102, + 33 => 103, + 34 => 104, + 35 => 105, + _ => 21, }, - 33 => match state { - 9..=10 | 13 | 17 => 66, - 12 => 71, + 33 => 22, + 34 => match state { + 21 => 86, + 28 => 96, _ => 76, }, - 34 => 77, - 35 => match state { - 20 => 83, - 32 => 96, - _ => 74, - }, - 36 => 82, - 38 => match state { + 35 => 85, + 37 => match state { 1 => 2, - 16 => 22, - 18 => 23, - 24 => 28, - 26 => 30, - 29 => 33, - 3 => 51, - 4 => 52, - _ => 12, + 3 => 49, + 4 => 51, + 5 => 52, + 9 | 12 => 67, + 22 => 87, + _ => 70, }, - 40 => match state { - 21 => 84, - _ => 78, + 39 => match state { + 15..=16 | 25..=27 | 29 | 31..=35 => 78, + 24 => 89, + _ => 57, }, _ => 0, } } const __TERMINAL: &[&str] = &[ + r###""%""###, + r###""&""###, r###""(""###, r###"")""###, r###"",""###, @@ -7813,17 +7999,19 @@ mod __parse__Function { r###""add""###, r###""bool""###, r###""br""###, + r###""cmp""###, r###""condbr""###, r###""eq""###, + r###""false""###, r###""fun""###, r###""gt""###, r###""i16""###, r###""i32""###, r###""i64""###, r###""i8""###, - r###""icmp""###, r###""ret""###, r###""sub""###, + r###""true""###, r###""u16""###, r###""u32""###, r###""u64""###, @@ -7833,8 +8021,7 @@ mod __parse__Function { r###""}""###, r###"r#"@[a-zA-Z_][a-zA-Z0-9_]*"#"###, r###"r#"[1-9][0-9]*"#"###, - r###"r#"bb(0|([1-9][0-9]*))"#"###, - r###"r#"v(0|([1-9][0-9]*))"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, ]; fn __expected_tokens(__state: i8) -> alloc::vec::Vec { __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { @@ -7903,7 +8090,7 @@ mod __parse__Function { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 33 - 1) + __action(state, 36 - 1) } #[inline] @@ -7970,39 +8157,42 @@ mod __parse__Function { ) -> Option { match *__token { - Token(4, _) if true => Some(0), - Token(5, _) if true => Some(1), - Token(6, _) if true => Some(2), - Token(7, _) if true => Some(3), - Token(8, _) if true => Some(4), - Token(9, _) if true => Some(5), - Token(10, _) if true => Some(6), - Token(11, _) if true => Some(7), - Token(12, _) if true => Some(8), - Token(13, _) if true => Some(9), - Token(14, _) if true => Some(10), - Token(15, _) if true => Some(11), - Token(16, _) if true => Some(12), - Token(17, _) if true => Some(13), - Token(18, _) if true => Some(14), - Token(19, _) if true => Some(15), - Token(20, _) if true => Some(16), - Token(21, _) if true => Some(17), - Token(22, _) if true => Some(18), - Token(23, _) if true => Some(19), - Token(24, _) if true => Some(20), - Token(25, _) if true => Some(21), - Token(26, _) if true => Some(22), - Token(27, _) if true => Some(23), - Token(28, _) if true => Some(24), - Token(29, _) if true => Some(25), - Token(30, _) if true => Some(26), - Token(31, _) if true => Some(27), - Token(32, _) if true => Some(28), - Token(0, _) if true => Some(29), - Token(1, _) if true => Some(30), - Token(2, _) if true => Some(31), - Token(3, _) if true => Some(32), + Token(3, _) if true => Some(0), + Token(4, _) if true => Some(1), + Token(5, _) if true => Some(2), + Token(6, _) if true => Some(3), + Token(7, _) if true => Some(4), + Token(8, _) if true => Some(5), + Token(9, _) if true => Some(6), + Token(10, _) if true => Some(7), + Token(11, _) if true => Some(8), + Token(12, _) if true => Some(9), + Token(13, _) if true => Some(10), + Token(14, _) if true => Some(11), + Token(15, _) if true => Some(12), + Token(16, _) if true => Some(13), + Token(17, _) if true => Some(14), + Token(18, _) if true => Some(15), + Token(19, _) if true => Some(16), + Token(20, _) if true => Some(17), + Token(21, _) if true => Some(18), + Token(22, _) if true => Some(19), + Token(23, _) if true => Some(20), + Token(24, _) if true => Some(21), + Token(25, _) if true => Some(22), + Token(26, _) if true => Some(23), + Token(27, _) if true => Some(24), + Token(28, _) if true => Some(25), + Token(29, _) if true => Some(26), + Token(30, _) if true => Some(27), + Token(31, _) if true => Some(28), + Token(32, _) if true => Some(29), + Token(33, _) if true => Some(30), + Token(34, _) if true => Some(31), + Token(35, _) if true => Some(32), + Token(0, _) if true => Some(33), + Token(1, _) if true => Some(34), + Token(2, _) if true => Some(35), _ => None, } } @@ -8015,8 +8205,8 @@ mod __parse__Function { ) -> __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 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 => 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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -8134,7 +8324,7 @@ mod __parse__Function { } 17 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 3, nonterminal_produced: 10, } } @@ -8225,7 +8415,7 @@ mod __parse__Function { 32 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 18, + nonterminal_produced: 17, } } 33 => { @@ -8236,20 +8426,20 @@ mod __parse__Function { } 34 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 19, + states_to_pop: 0, + nonterminal_produced: 18, } } 35 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 19, + states_to_pop: 2, + nonterminal_produced: 18, } } 36 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 19, + states_to_pop: 1, + nonterminal_produced: 18, } } 37 => { @@ -8260,20 +8450,20 @@ mod __parse__Function { } 38 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 20, + states_to_pop: 0, + nonterminal_produced: 19, } } 39 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 20, + states_to_pop: 2, + nonterminal_produced: 19, } } 40 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 20, + states_to_pop: 1, + nonterminal_produced: 19, } } 41 => { @@ -8284,20 +8474,20 @@ mod __parse__Function { } 42 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 21, + states_to_pop: 0, + nonterminal_produced: 20, } } 43 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 21, + states_to_pop: 2, + nonterminal_produced: 20, } } 44 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 21, + states_to_pop: 1, + nonterminal_produced: 20, } } 45 => { @@ -8308,103 +8498,103 @@ mod __parse__Function { } 46 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 8, nonterminal_produced: 22, } } 47 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, - nonterminal_produced: 23, + states_to_pop: 9, + nonterminal_produced: 22, } } 48 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 9, + states_to_pop: 1, nonterminal_produced: 23, } } 49 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 24, + states_to_pop: 2, + nonterminal_produced: 23, } } 50 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 24, } } 51 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 25, + states_to_pop: 1, + nonterminal_produced: 24, } } 52 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 26, + states_to_pop: 2, + nonterminal_produced: 25, } } 53 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 0, nonterminal_produced: 26, } } 54 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 27, + nonterminal_produced: 26, } } 55 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 27, } } 56 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, - nonterminal_produced: 28, + states_to_pop: 2, + nonterminal_produced: 27, } } 57 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, + states_to_pop: 8, nonterminal_produced: 28, } } 58 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 4, + states_to_pop: 8, nonterminal_produced: 28, } } 59 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, + states_to_pop: 5, nonterminal_produced: 28, } } 60 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 5, + states_to_pop: 9, nonterminal_produced: 28, } } 61 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 5, nonterminal_produced: 28, } } 62 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 2, nonterminal_produced: 28, } } @@ -8417,212 +8607,230 @@ mod __parse__Function { 64 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 29, + nonterminal_produced: 28, } } 65 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 30, + states_to_pop: 2, + nonterminal_produced: 29, } } 66 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 67 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 68 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 32, + nonterminal_produced: 30, } } 69 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 32, + states_to_pop: 1, + nonterminal_produced: 31, } } 70 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 33, + states_to_pop: 2, + nonterminal_produced: 31, } } 71 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 34, + states_to_pop: 1, + nonterminal_produced: 32, } } 72 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 34, + states_to_pop: 0, + nonterminal_produced: 32, } } 73 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 74 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 75 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 36, + states_to_pop: 2, + nonterminal_produced: 34, } } 76 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 37, + nonterminal_produced: 34, } } 77 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 37, + states_to_pop: 3, + nonterminal_produced: 35, } } 78 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 36, } } 79 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 38, + states_to_pop: 0, + nonterminal_produced: 36, } } 80 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 81 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 82 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 83 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 84 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 85 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 86 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 87 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 88 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 39, + nonterminal_produced: 37, } } 89 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 39, + states_to_pop: 1, + nonterminal_produced: 37, } } 90 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 40, + states_to_pop: 2, + nonterminal_produced: 37, } } 91 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 40, + nonterminal_produced: 38, } } 92 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 41, + states_to_pop: 0, + nonterminal_produced: 38, } } 93 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 42, + nonterminal_produced: 39, } } - 94 => __state_machine::SimulatedReduce::Accept, - 95 => { + 94 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 44, + nonterminal_produced: 39, } } - 96 => { + 95 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 45, + nonterminal_produced: 40, } } - 97 => { + 96 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 46, + nonterminal_produced: 41, } } + 97 => __state_machine::SimulatedReduce::Accept, 98 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 47, + nonterminal_produced: 43, } } 99 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 48, + nonterminal_produced: 44, + } + } + 100 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 45, + } + } + 101 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 46, + } + } + 102 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, } } _ => panic!("invalid reduction index {}", __reduce_index) @@ -8989,12 +9197,7 @@ mod __parse__Function { __reduce93(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 94 => { - // __Function = Function => ActionFn(1); - let __sym0 = __pop_Variant18(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action1::<>(input, __sym0); - return Some(Ok(__nt)); + __reduce94(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 95 => { __reduce95(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -9003,7 +9206,12 @@ mod __parse__Function { __reduce96(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 97 => { - __reduce97(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + // __Function = Function => ActionFn(1); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1::<>(input, __sym0); + return Some(Ok(__nt)); } 98 => { __reduce98(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -9011,6 +9219,15 @@ mod __parse__Function { 99 => { __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 100 => { + __reduce100(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 101 => { + __reduce101(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 102 => { + __reduce102(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -9050,32 +9267,32 @@ mod __parse__Function { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, BasicBlockId, usize) + ) -> (usize, CmpOp, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant17< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, CmpOp, usize) + ) -> (usize, Function, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant18< + fn __pop_Variant19< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Function, usize) + ) -> (usize, Identifier, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9123,36 +9340,25 @@ mod __parse__Function { _ => __symbol_type_mismatch() } } - fn __pop_Variant25< - 'input, - >( - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, RegId, usize) - { - match __symbols.pop() { - Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), - _ => __symbol_type_mismatch() - } - } - fn __pop_Variant17< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant27< + fn __pop_Variant26< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Target, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9178,25 +9384,25 @@ mod __parse__Function { _ => __symbol_type_mismatch() } } - fn __pop_Variant15< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant16< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9222,14 +9428,14 @@ mod __parse__Function { _ => __symbol_type_mismatch() } } - fn __pop_Variant19< + fn __pop_Variant18< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, alloc::vec::Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9288,14 +9494,14 @@ mod __parse__Function { _ => __symbol_type_mismatch() } } - fn __pop_Variant29< + fn __pop_Variant28< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9310,14 +9516,14 @@ mod __parse__Function { _ => __symbol_type_mismatch() } } - fn __pop_Variant28< + fn __pop_Variant27< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9332,25 +9538,25 @@ mod __parse__Function { _ => __symbol_type_mismatch() } } - fn __pop_Variant26< + fn __pop_Variant25< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant30< + fn __pop_Variant29< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, u64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -9374,11 +9580,11 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = "-" => ActionFn(44); + // "-"? = "-" => ActionFn(47); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action47::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 0) } @@ -9391,10 +9597,10 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = => ActionFn(45); + // "-"? = => ActionFn(48); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action45::<>(input, &__start, &__end); + let __nt = super::__action48::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (0, 0) } @@ -9407,13 +9613,13 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Arg, "," => ActionFn(74); + // ( ",") = Arg, "," => ActionFn(77); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action74::<>(input, __sym0, __sym1); + let __nt = super::__action77::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 1) } @@ -9426,10 +9632,10 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(72); + // ( ",")* = => ActionFn(75); 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::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (0, 2) } @@ -9442,11 +9648,11 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(73); + // ( ",")* = ( ",")+ => ActionFn(76); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action73::<>(input, __sym0); + let __nt = super::__action76::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (1, 2) } @@ -9459,13 +9665,13 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Arg, "," => ActionFn(86); + // ( ",")+ = Arg, "," => ActionFn(89); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action86::<>(input, __sym0, __sym1); + let __nt = super::__action89::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -9478,14 +9684,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Arg, "," => ActionFn(87); + // ( ",")+ = ( ",")+, Arg, "," => ActionFn(90); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (3, 3) } @@ -9498,13 +9704,13 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Operand, "," => ActionFn(77); + // ( ",") = Operand, "," => ActionFn(80); 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::__action77::<>(input, __sym0, __sym1); + let __nt = super::__action80::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 4) } @@ -9517,10 +9723,10 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(75); + // ( ",")* = => ActionFn(78); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action75::<>(input, &__start, &__end); + let __nt = super::__action78::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 5) } @@ -9533,11 +9739,11 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(76); + // ( ",")* = ( ",")+ => ActionFn(79); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action76::<>(input, __sym0); + let __nt = super::__action79::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 5) } @@ -9550,13 +9756,13 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Operand, "," => ActionFn(90); + // ( ",")+ = Operand, "," => 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::__action90::<>(input, __sym0, __sym1); + let __nt = super::__action93::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 6) } @@ -9569,14 +9775,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Operand, "," => ActionFn(91); + // ( ",")+ = ( ",")+, Operand, "," => ActionFn(94); 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::__action91::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 6) } @@ -9589,13 +9795,13 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Type, "," => ActionFn(65); + // ( ",") = Type, "," => ActionFn(68); 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::__action65::<>(input, __sym0, __sym1); + let __nt = super::__action68::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 7) } @@ -9608,10 +9814,10 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(63); + // ( ",")* = => ActionFn(66); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action63::<>(input, &__start, &__end); + let __nt = super::__action66::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 8) } @@ -9624,11 +9830,11 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(64); + // ( ",")* = ( ",")+ => ActionFn(67); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action64::<>(input, __sym0); + let __nt = super::__action67::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 8) } @@ -9641,13 +9847,13 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Type, "," => ActionFn(94); + // ( ",")+ = Type, "," => ActionFn(97); 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::__action94::<>(input, __sym0, __sym1); + let __nt = super::__action97::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 9) } @@ -9660,14 +9866,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Type, "," => ActionFn(95); + // ( ",")+ = ( ",")+, Type, "," => ActionFn(98); 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::__action95::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (3, 9) } @@ -9680,15 +9886,16 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg = Type, RegId => ActionFn(12); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant25(__symbols); + // Arg = Type, "%", Identifier => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action12::<>(input, __sym0, __sym1); + let __end = __sym2.2; + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (2, 10) + (3, 10) } fn __reduce18< 'input, @@ -9699,11 +9906,11 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = Arg => ActionFn(70); + // Arg? = Arg => ActionFn(73); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action73::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -9716,10 +9923,10 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = => ActionFn(71); + // Arg? = => ActionFn(74); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action71::<>(input, &__start, &__end); + let __nt = super::__action74::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (0, 11) } @@ -9732,14 +9939,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":" => ActionFn(106); + // BasicBlock = Identifier, BasicBlockArgList, ":" => ActionFn(109); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -9752,15 +9959,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":", Instruction+ => ActionFn(107); + // BasicBlock = Identifier, BasicBlockArgList, ":", Instruction+ => ActionFn(110); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant21(__symbols); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action107::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action110::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (4, 12) } @@ -9773,13 +9980,13 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":" => ActionFn(108); + // BasicBlock = Identifier, ":" => ActionFn(111); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action108::<>(input, __sym0, __sym1); + let __nt = super::__action111::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (2, 12) } @@ -9792,14 +9999,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":", Instruction+ => ActionFn(109); + // BasicBlock = Identifier, ":", Instruction+ => ActionFn(112); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant21(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action112::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -9812,10 +10019,10 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = => ActionFn(56); + // BasicBlock* = => ActionFn(59); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action56::<>(input, &__start, &__end); + let __nt = super::__action59::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (0, 13) } @@ -9828,11 +10035,11 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = BasicBlock+ => ActionFn(57); + // BasicBlock* = BasicBlock+ => ActionFn(60); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action57::<>(input, __sym0); + let __nt = super::__action60::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 13) } @@ -9845,11 +10052,11 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock => ActionFn(66); + // BasicBlock+ = BasicBlock => ActionFn(69); let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action66::<>(input, __sym0); + let __nt = super::__action69::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 14) } @@ -9862,13 +10069,13 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(67); + // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(70); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant9(__symbols); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action67::<>(input, __sym0, __sym1); + let __nt = super::__action70::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 14) } @@ -9901,11 +10108,11 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = BasicBlockArgList => ActionFn(54); + // BasicBlockArgList? = BasicBlockArgList => ActionFn(57); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action54::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 16) } @@ -9918,10 +10125,10 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = => ActionFn(55); + // BasicBlockArgList? = => ActionFn(58); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action55::<>(input, &__start, &__end); + let __nt = super::__action58::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (0, 16) } @@ -9934,11 +10141,11 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockId = r#"bb(0|([1-9][0-9]*))"# => ActionFn(40); + // CmpOp = "eq" => ActionFn(21); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 17) } @@ -9950,33 +10157,16 @@ mod __parse__Function { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) - { - // CmpOp = "eq" => ActionFn(21); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action21::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) - } - fn __reduce33< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) { // CmpOp = "gt" => ActionFn(22); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } - fn __reduce34< + fn __reduce33< 'input, >( input: &'input str, @@ -9985,15 +10175,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Arg => ActionFn(98); + // Comma = Arg => ActionFn(101); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action98::<>(input, __sym0); + let __nt = super::__action101::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce35< + fn __reduce34< 'input, >( input: &'input str, @@ -10002,14 +10192,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(99); + // Comma = => ActionFn(102); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action99::<>(input, &__start, &__end); + let __nt = super::__action102::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (0, 19) + (0, 18) } - fn __reduce36< + fn __reduce35< 'input, >( input: &'input str, @@ -10018,17 +10208,17 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Arg => ActionFn(100); + // Comma = ( ",")+, Arg => ActionFn(103); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action100::<>(input, __sym0, __sym1); + let __nt = super::__action103::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (2, 19) + (2, 18) } - fn __reduce37< + fn __reduce36< 'input, >( input: &'input str, @@ -10037,15 +10227,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(101); + // Comma = ( ",")+ => ActionFn(104); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action101::<>(input, __sym0); + let __nt = super::__action104::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce38< + fn __reduce37< 'input, >( input: &'input str, @@ -10054,15 +10244,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Operand => ActionFn(110); + // Comma = Operand => ActionFn(113); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action110::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action113::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce39< + fn __reduce38< 'input, >( input: &'input str, @@ -10071,14 +10261,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(111); + // Comma = => ActionFn(114); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action111::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (0, 20) + let __nt = super::__action114::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 19) } - fn __reduce40< + fn __reduce39< 'input, >( input: &'input str, @@ -10087,17 +10277,17 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Operand => ActionFn(112); + // Comma = ( ",")+, Operand => ActionFn(115); 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::__action112::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (2, 20) + let __nt = super::__action115::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 19) } - fn __reduce41< + fn __reduce40< 'input, >( input: &'input str, @@ -10106,15 +10296,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(113); + // Comma = ( ",")+ => ActionFn(116); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action113::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action116::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce42< + fn __reduce41< 'input, >( input: &'input str, @@ -10123,15 +10313,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Type => ActionFn(118); + // Comma = Type => ActionFn(121); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action118::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action121::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce43< + fn __reduce42< 'input, >( input: &'input str, @@ -10140,14 +10330,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(119); + // Comma = => ActionFn(122); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action119::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (0, 21) + let __nt = super::__action122::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 20) } - fn __reduce44< + fn __reduce43< 'input, >( input: &'input str, @@ -10156,17 +10346,17 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Type => ActionFn(120); + // Comma = ( ",")+, Type => ActionFn(123); 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::__action120::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (2, 21) + let __nt = super::__action123::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 20) } - fn __reduce45< + fn __reduce44< 'input, >( input: &'input str, @@ -10175,15 +10365,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(121); + // Comma = ( ",")+ => ActionFn(124); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action121::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action124::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce46< + fn __reduce45< 'input, >( input: &'input str, @@ -10192,15 +10382,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(38); + // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action38::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant17(__nt), __end)); - (1, 22) + let __nt = super::__action41::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) } - fn __reduce47< + fn __reduce46< 'input, >( input: &'input str, @@ -10209,23 +10399,23 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(102); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(105); assert!(__symbols.len() >= 8); let __sym7 = __pop_Variant0(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym7.2; - let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (8, 23) + let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (8, 22) } - fn __reduce48< + fn __reduce47< 'input, >( input: &'input str, @@ -10234,22 +10424,39 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(103); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(106); assert!(__symbols.len() >= 9); let __sym8 = __pop_Variant0(__symbols); let __sym7 = __pop_Variant10(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym8.2; - let __nt = super::__action103::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (9, 22) + } + fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Function+ = Function => ActionFn(62); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action62::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (9, 23) + (1, 23) } fn __reduce49< 'input, @@ -10260,15 +10467,34 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function => ActionFn(59); + // Function+ = Function+, Function => ActionFn(63); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant17(__symbols); let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action63::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 23) + } + fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Identifier = UnsignedNum => ActionFn(42); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action59::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); (1, 24) } - fn __reduce50< + fn __reduce51< 'input, >( input: &'input str, @@ -10277,17 +10503,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function+, Function => ActionFn(60); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant18(__symbols); - let __sym0 = __pop_Variant19(__symbols); + // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(43); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action60::<>(input, __sym0, __sym1); + let __end = __sym0.2; + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); - (2, 24) + (1, 24) } - fn __reduce51< + fn __reduce52< 'input, >( input: &'input str, @@ -10306,7 +10530,7 @@ mod __parse__Function { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 25) } - fn __reduce52< + fn __reduce53< 'input, >( input: &'input str, @@ -10315,14 +10539,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = => ActionFn(52); + // Instruction* = => ActionFn(55); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action52::<>(input, &__start, &__end); + let __nt = super::__action55::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (0, 26) } - fn __reduce53< + fn __reduce54< 'input, >( input: &'input str, @@ -10331,15 +10555,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = Instruction+ => ActionFn(53); + // Instruction* = Instruction+ => ActionFn(56); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action53::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 26) } - fn __reduce54< + fn __reduce55< 'input, >( input: &'input str, @@ -10348,15 +10572,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction => ActionFn(68); + // Instruction+ = Instruction => ActionFn(71); let __sym0 = __pop_Variant20(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action68::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 27) } - fn __reduce55< + fn __reduce56< 'input, >( input: &'input str, @@ -10365,17 +10589,17 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction+, Instruction => ActionFn(69); + // Instruction+ = Instruction+, Instruction => ActionFn(72); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant20(__symbols); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action69::<>(input, __sym0, __sym1); + let __nt = super::__action72::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (2, 27) } - fn __reduce56< + fn __reduce57< 'input, >( input: &'input str, @@ -10384,22 +10608,23 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "add", Type, Operand, ",", Operand => ActionFn(14); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "add", Operand, ",", Operand => ActionFn(14); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce57< + fn __reduce58< 'input, >( input: &'input str, @@ -10408,22 +10633,23 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "sub", Type, Operand, ",", Operand => ActionFn(15); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "sub", Operand, ",", Operand => ActionFn(15); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce58< + fn __reduce59< 'input, >( input: &'input str, @@ -10432,19 +10658,20 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", Type, Operand => ActionFn(16); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant4(__symbols); - let __sym2 = __pop_Variant6(__symbols); + // InstructionInner = Type, "%", Identifier, "=", Operand => ActionFn(16); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant4(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym3.2; - let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym4.2; + let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (4, 28) + (5, 28) } - fn __reduce59< + fn __reduce60< 'input, >( input: &'input str, @@ -10453,23 +10680,24 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "icmp", CmpOp, Type, Operand, ",", Operand => ActionFn(17); - assert!(__symbols.len() >= 8); - let __sym7 = __pop_Variant4(__symbols); - let __sym6 = __pop_Variant0(__symbols); - let __sym5 = __pop_Variant4(__symbols); - let __sym4 = __pop_Variant6(__symbols); - let __sym3 = __pop_Variant14(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "cmp", CmpOp, Operand, ",", Operand => ActionFn(17); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant4(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant4(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym7.2; - let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __end = __sym8.2; + let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (8, 28) + (9, 28) } - fn __reduce60< + fn __reduce61< 'input, >( input: &'input str, @@ -10480,9 +10708,9 @@ mod __parse__Function { { // InstructionInner = "condbr", Operand, Target, ",", Target => ActionFn(18); assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant27(__symbols); + let __sym4 = __pop_Variant26(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant27(__symbols); + let __sym2 = __pop_Variant26(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; @@ -10491,7 +10719,7 @@ mod __parse__Function { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (5, 28) } - fn __reduce61< + fn __reduce62< 'input, >( input: &'input str, @@ -10502,7 +10730,7 @@ mod __parse__Function { { // InstructionInner = "br", Target => ActionFn(19); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant26(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; @@ -10510,7 +10738,7 @@ mod __parse__Function { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } - fn __reduce62< + fn __reduce63< 'input, >( input: &'input str, @@ -10519,18 +10747,34 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type, Operand => ActionFn(114); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant4(__symbols); - let __sym1 = __pop_Variant6(__symbols); + // InstructionInner = "ret", Operand => ActionFn(117); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action114::<>(input, __sym0, __sym1, __sym2); + let __end = __sym1.2; + let __nt = super::__action117::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (3, 28) + (2, 28) } - fn __reduce63< + fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // InstructionInner = "ret" => ActionFn(118); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action118::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) + } + fn __reduce65< 'input, >( input: &'input str, @@ -10539,17 +10783,17 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type => ActionFn(115); + // Literal = SignedNum, Type => ActionFn(27); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant6(__symbols); - let __sym0 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant25(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action115::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (2, 28) + let __nt = super::__action27::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (2, 29) } - fn __reduce64< + fn __reduce66< 'input, >( input: &'input str, @@ -10558,15 +10802,32 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Literal = SignedNum => ActionFn(27); - let __sym0 = __pop_Variant26(__symbols); + // Literal = "true" => 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::Variant22(__nt), __end)); (1, 29) } - fn __reduce65< + fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Literal = "false" => ActionFn(29); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) + } + fn __reduce68< 'input, >( input: &'input str, @@ -10576,14 +10837,14 @@ mod __parse__Function { ) -> (usize, usize) { // Module = Function+ => ActionFn(8); - let __sym0 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action8::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); (1, 30) } - fn __reduce66< + fn __reduce69< 'input, >( input: &'input str, @@ -10600,7 +10861,7 @@ mod __parse__Function { __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 31) } - fn __reduce67< + fn __reduce70< 'input, >( input: &'input str, @@ -10609,15 +10870,17 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = RegId => ActionFn(26); - let __sym0 = __pop_Variant25(__symbols); + // Operand = "%", Identifier => ActionFn(26); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action26::<>(input, __sym0); + let __end = __sym1.2; + let __nt = super::__action26::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + (2, 31) } - fn __reduce68< + fn __reduce71< 'input, >( input: &'input str, @@ -10626,15 +10889,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = Operand => ActionFn(49); + // Operand? = Operand => ActionFn(52); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action49::<>(input, __sym0); + let __nt = super::__action52::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant24(__nt), __end)); (1, 32) } - fn __reduce69< + fn __reduce72< 'input, >( input: &'input str, @@ -10643,31 +10906,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = => ActionFn(50); + // Operand? = => ActionFn(53); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action50::<>(input, &__start, &__end); + let __nt = super::__action53::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant24(__nt), __end)); (0, 32) } - fn __reduce70< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // RegId = r#"v(0|([1-9][0-9]*))"# => ActionFn(39); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action39::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant25(__nt), __end)); - (1, 33) - } - fn __reduce71< + fn __reduce73< 'input, >( input: &'input str, @@ -10676,17 +10922,17 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = "-", UnsignedNum => ActionFn(84); + // SignedNum = "-", UnsignedNum => ActionFn(87); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant30(__symbols); + let __sym1 = __pop_Variant29(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action84::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (2, 34) + let __nt = super::__action87::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (2, 33) } - fn __reduce72< + fn __reduce74< 'input, >( input: &'input str, @@ -10695,15 +10941,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = UnsignedNum => ActionFn(85); - let __sym0 = __pop_Variant30(__symbols); + // SignedNum = UnsignedNum => ActionFn(88); + let __sym0 = __pop_Variant29(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action85::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (1, 34) + let __nt = super::__action88::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 33) } - fn __reduce73< + fn __reduce75< 'input, >( input: &'input str, @@ -10712,17 +10958,17 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId, TargetArgList => ActionFn(116); + // Target = Identifier, TargetArgList => ActionFn(119); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action116::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (2, 35) + let __nt = super::__action119::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 34) } - fn __reduce74< + fn __reduce76< 'input, >( input: &'input str, @@ -10731,15 +10977,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId => ActionFn(117); - let __sym0 = __pop_Variant13(__symbols); + // Target = Identifier => ActionFn(120); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action117::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 35) + let __nt = super::__action120::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 34) } - fn __reduce75< + fn __reduce77< 'input, >( input: &'input str, @@ -10751,15 +10997,15 @@ mod __parse__Function { // TargetArgList = "(", Comma, ")" => ActionFn(24); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant15(__symbols); + let __sym1 = __pop_Variant14(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym2.2; let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (3, 36) + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 35) } - fn __reduce76< + fn __reduce78< 'input, >( input: &'input str, @@ -10768,15 +11014,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = TargetArgList => ActionFn(47); - let __sym0 = __pop_Variant15(__symbols); + // TargetArgList? = TargetArgList => ActionFn(50); + let __sym0 = __pop_Variant14(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action47::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (1, 37) + let __nt = super::__action50::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (1, 36) } - fn __reduce77< + fn __reduce79< 'input, >( input: &'input str, @@ -10785,14 +11031,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = => ActionFn(48); + // TargetArgList? = => ActionFn(51); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action48::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (0, 37) + let __nt = super::__action51::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 36) } - fn __reduce78< + fn __reduce80< 'input, >( input: &'input str, @@ -10801,15 +11047,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u8" => ActionFn(28); + // Type = "u8" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action28::<>(input, __sym0); + let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce79< + fn __reduce81< 'input, >( input: &'input str, @@ -10818,15 +11064,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u16" => ActionFn(29); + // Type = "u16" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action29::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce80< + fn __reduce82< 'input, >( input: &'input str, @@ -10835,15 +11081,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u32" => ActionFn(30); + // Type = "u32" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action30::<>(input, __sym0); + let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce81< + fn __reduce83< 'input, >( input: &'input str, @@ -10852,15 +11098,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u64" => ActionFn(31); + // Type = "u64" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action31::<>(input, __sym0); + let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce82< + fn __reduce84< 'input, >( input: &'input str, @@ -10869,15 +11115,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i8" => ActionFn(32); + // Type = "i8" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action32::<>(input, __sym0); + let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce83< + fn __reduce85< 'input, >( input: &'input str, @@ -10886,15 +11132,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i16" => ActionFn(33); + // Type = "i16" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce84< + fn __reduce86< 'input, >( input: &'input str, @@ -10903,15 +11149,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i32" => ActionFn(34); + // Type = "i32" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action34::<>(input, __sym0); + let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce85< + fn __reduce87< 'input, >( input: &'input str, @@ -10920,15 +11166,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i64" => ActionFn(35); + // Type = "i64" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action35::<>(input, __sym0); + let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce86< + fn __reduce88< 'input, >( input: &'input str, @@ -10937,15 +11183,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "void" => ActionFn(36); + // Type = "void" => ActionFn(38); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action36::<>(input, __sym0); + let __nt = super::__action38::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce87< + fn __reduce89< 'input, >( input: &'input str, @@ -10954,15 +11200,34 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "bool" => ActionFn(37); + // Type = "bool" => ActionFn(39); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action37::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce88< + fn __reduce90< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Type = "&", Type => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 37) + } + fn __reduce91< 'input, >( input: &'input str, @@ -10971,15 +11236,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = Type => ActionFn(61); + // Type? = Type => ActionFn(64); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action61::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (1, 39) + let __nt = super::__action64::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (1, 38) } - fn __reduce89< + fn __reduce92< 'input, >( input: &'input str, @@ -10988,14 +11253,14 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = => ActionFn(62); + // Type? = => ActionFn(65); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action62::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (0, 39) + let __nt = super::__action65::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (0, 38) } - fn __reduce90< + fn __reduce93< 'input, >( input: &'input str, @@ -11004,15 +11269,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = "0" => ActionFn(42); + // UnsignedNum = "0" => ActionFn(45); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action42::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action45::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce91< + fn __reduce94< 'input, >( input: &'input str, @@ -11021,15 +11286,15 @@ mod __parse__Function { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(43); + // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(46); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action43::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action46::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce92< + fn __reduce95< 'input, >( input: &'input str, @@ -11044,9 +11309,9 @@ mod __parse__Function { let __end = __sym0.2; let __nt = super::__action2::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); - (1, 41) + (1, 40) } - fn __reduce93< + fn __reduce96< 'input, >( input: &'input str, @@ -11056,14 +11321,14 @@ mod __parse__Function { ) -> (usize, usize) { // __CmpOp = CmpOp => ActionFn(5); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action5::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 42) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 41) } - fn __reduce95< + fn __reduce98< 'input, >( input: &'input str, @@ -11078,9 +11343,9 @@ mod __parse__Function { let __end = __sym0.2; let __nt = super::__action3::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 44) + (1, 43) } - fn __reduce96< + fn __reduce99< 'input, >( input: &'input str, @@ -11095,9 +11360,9 @@ mod __parse__Function { let __end = __sym0.2; let __nt = super::__action4::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 45) + (1, 44) } - fn __reduce97< + fn __reduce100< 'input, >( input: &'input str, @@ -11112,9 +11377,9 @@ mod __parse__Function { let __end = __sym0.2; let __nt = super::__action0::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 46) + (1, 45) } - fn __reduce98< + fn __reduce101< 'input, >( input: &'input str, @@ -11129,9 +11394,9 @@ mod __parse__Function { let __end = __sym0.2; let __nt = super::__action7::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 47) + (1, 46) } - fn __reduce99< + fn __reduce102< 'input, >( input: &'input str, @@ -11141,12 +11406,12 @@ mod __parse__Function { ) -> (usize, usize) { // __Target = Target => ActionFn(6); - let __sym0 = __pop_Variant27(__symbols); + let __sym0 = __pop_Variant26(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 48) + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 47) } } #[allow(unused_imports)] @@ -11157,7 +11422,7 @@ pub use self::__parse__Function::FunctionParser; mod __parse__Instruction { use std::str::FromStr; - use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; + use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -11181,161 +11446,166 @@ mod __parse__Instruction { Variant10(alloc::vec::Vec), Variant11(Vec), Variant12(core::option::Option>), - Variant13(BasicBlockId), - Variant14(CmpOp), - Variant15(Vec), - Variant16(Vec), - Variant17(String), - Variant18(Function), - Variant19(alloc::vec::Vec), + Variant13(CmpOp), + Variant14(Vec), + Variant15(Vec), + Variant16(String), + Variant17(Function), + Variant18(alloc::vec::Vec), + Variant19(Identifier), Variant20(Instruction), Variant21(alloc::vec::Vec), Variant22(Literal), Variant23(Module), Variant24(core::option::Option), - Variant25(RegId), - Variant26(i64), - Variant27(Target), - Variant28(core::option::Option>), - Variant29(core::option::Option), - Variant30(u64), + Variant25(i64), + Variant26(Target), + Variant27(core::option::Option>), + Variant28(core::option::Option), + Variant29(u64), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 3, 0, 4, 0, 0, 0, 0, 27, 28, 29, 30, 5, 0, 0, 31, 32, 33, 34, 35, 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, 0, 0, 0, 30, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0, 0, 0, 31, 32, 33, 34, 35, 0, 0, 0, 0, 0, // State 2 - 0, 0, 0, 8, 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, 36, 0, 27, + 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, 41, 42, // State 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 11, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 4 - 0, 0, 0, 0, 0, 0, 0, 0, 11, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 12, 0, 13, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 11, 40, 0, -65, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 5 - 14, 0, -75, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 41, 42, // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, + 0, 0, 12, 0, -77, 0, 0, 0, -77, 0, 0, 0, 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 7 - 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, 36, 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, 41, 42, // State 8 - 0, 0, 0, 8, 35, 0, -64, 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, 27, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0, 0, 0, 31, 32, 33, 34, 35, 0, 0, 0, 0, 0, // State 9 - 0, 0, 0, 8, 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, 36, 0, 27, + 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, 41, 42, // State 10 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 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, 41, 0, // State 11 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, -39, 0, 11, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 12 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 11, 40, 0, 0, 0, 16, 0, 0, 17, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 18, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 13 - 0, -40, 0, 8, 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, 36, 0, 27, + 10, 0, 0, -41, 0, 11, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 14 - 0, 0, 0, 8, 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, 36, 0, 27, + 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, 41, 42, // State 15 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 39, 40, 41, 0, 0, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 11, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 16 - 0, 0, 0, 8, 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, 36, 0, 27, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 17 - 0, -42, 0, 8, 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, 36, 0, 27, + 10, 0, 0, 0, 0, 11, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 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, 30, 0, + 10, 0, 0, 0, 0, 11, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 19 - 0, 0, 0, 8, 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, 36, 0, 27, + 10, 0, 0, 0, 0, 11, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 20 - 0, 0, 0, 8, 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, 36, 0, 27, + 10, 0, 0, 0, 0, 11, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 21 - 0, 0, 0, 8, 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, 36, 0, 27, + 10, 0, 0, 0, 0, 11, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, // State 22 - 0, 0, 0, 8, 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, 36, 0, 27, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, 36, 0, 0, 0, 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 24 - 0, 0, 0, 0, 0, 0, 28, 0, 0, 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, 0, 0, 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 25 - 0, 0, 0, 0, 0, 0, 0, 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, + -90, 0, 0, -90, -90, 0, -90, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, -90, // State 26 - 0, -71, -71, 0, 0, 0, -71, -71, 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, + -86, 0, 0, -86, -86, 0, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, // State 27 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -87, -87, 0, -87, 0, -87, 0, 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, -87, // State 28 - 0, 0, 0, 0, 0, 0, -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, + -88, 0, 0, -88, -88, 0, -88, 0, -88, 0, 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, -88, // State 29 - -32, 0, -32, 0, 0, 0, -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, + -85, 0, 0, -85, -85, 0, -85, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, // State 30 - 0, -67, -67, 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, -67, 0, + -82, 0, 0, -82, -82, 0, -82, 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, -82, -82, // State 31 - 0, -68, -68, 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, -68, 0, + -83, 0, 0, -83, -83, 0, -83, 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, -83, -83, // State 32 - 0, -65, -65, 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, -65, 0, + -84, 0, 0, -84, -84, 0, -84, 0, -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, -84, -84, // State 33 - 0, -73, -73, 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, 0, + -81, 0, 0, -81, -81, 0, -81, 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, -81, -81, // State 34 - 0, -91, -91, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, + -89, 0, 0, -89, -89, 0, -89, 0, -89, 0, 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, -89, // State 35 - 0, -92, -92, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 36 - 0, 0, 0, -88, -88, 0, -88, 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, -88, + -91, 0, 0, -91, -91, 0, -91, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, -91, // State 37 - 0, 0, 0, -84, -84, 0, -84, 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, -84, + 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 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 38 - 0, 0, 0, -85, -85, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, 0, -85, + 0, 0, -51, -51, -51, 0, -51, 0, -51, -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, -51, -51, // State 39 - 0, 0, 0, -86, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, -86, + 0, -94, -94, -94, -94, 0, -94, 0, -94, -94, 0, -94, 0, 0, 0, 0, 0, 0, 0, -94, -94, -94, -94, 0, 0, 0, -94, -94, -94, -94, -94, 0, 0, 0, -94, -94, // State 40 - 0, 0, 0, -83, -83, 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, -83, 0, -83, + 0, -95, -95, -95, -95, 0, -95, 0, -95, -95, 0, -95, 0, 0, 0, 0, 0, 0, 0, -95, -95, -95, -95, 0, 0, 0, -95, -95, -95, -95, -95, 0, 0, 0, -95, -95, // State 41 - 0, 0, 0, -80, -80, 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, -80, 0, -80, + 0, 0, -52, -52, -52, 0, -52, 0, -52, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, -52, // State 42 - 0, 0, 0, -81, -81, 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, -81, 0, -81, + 0, 0, 0, -70, -70, 0, -70, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -70, // State 43 - 0, 0, 0, -82, -82, 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, -82, 0, -82, + 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75, -75, -75, -75, 0, 0, 0, -75, -75, -75, -75, -75, 0, 0, 0, 0, 0, // State 44 - 0, 0, 0, -79, -79, 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, -79, 0, -79, + 0, 0, 0, -68, -68, 0, -68, 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, -68, -68, // State 45 - 0, 0, 0, -87, -87, 0, -87, 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, -87, + 0, 0, 0, -67, -67, 0, -67, 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, -67, -67, // State 46 - 0, 0, -74, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -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, // State 47 - 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 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, -72, -72, 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, 0, + 0, 0, 0, 0, -76, 0, 0, 0, -76, 0, 0, 0, 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 49 - 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 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, 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, -59, 0, 0, 0, 0, 0, 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, -66, 0, -66, 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, -66, -66, // State 51 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, -33, -33, -33, -33, 0, 0, 0, -33, -33, -33, -33, -33, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -71, -71, 0, -71, 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, -71, -71, // State 52 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, -34, -34, -34, -34, 0, 0, 0, -34, -34, -34, -34, -34, 0, 0, 0, 0, 0, 0, + 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74, -74, -74, -74, 0, 0, 0, -74, -74, -74, -74, -74, 0, 0, 0, 0, 0, // State 53 - 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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 54 - 0, -39, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 59, 0, 0, 0, 0, 0, 0, 0, 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 55 - 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, + 0, 0, 0, -40, 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, 0, 0, 0, 0, // State 57 - 0, -41, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, 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, -76, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -11, 0, 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, // State 59 - 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -11, + 0, 0, 0, 0, 0, 0, 0, 0, -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, // State 60 - 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, // State 61 - 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, + -32, 0, 0, 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, // State 62 - 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, -12, + -33, 0, 0, 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, // State 63 - 0, 0, 0, 0, 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, 21, 0, 0, 0, 0, 0, 0, 0, 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 64 - 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -12, 0, 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, // State 65 - 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 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 66 + 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 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 67 + 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 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 68 + 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 33 + integer] + __ACTION[(state as usize) * 36 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -11383,9 +11653,9 @@ mod __parse__Instruction { // State 21 0, // State 22 - 0, + -99, // State 23 - -96, + 0, // State 24 0, // State 25 @@ -11393,7 +11663,7 @@ mod __parse__Instruction { // State 26 0, // State 27 - -52, + 0, // State 28 0, // State 29 @@ -11409,7 +11679,7 @@ mod __parse__Instruction { // State 34 0, // State 35 - 0, + -53, // State 36 0, // State 37 @@ -11470,55 +11740,62 @@ mod __parse__Instruction { 0, // State 65 0, + // State 66 + 0, + // State 67 + 0, + // State 68 + 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 6 => 17, - 17 => 5, - 18 => 15, - 20 => 53, - 25 => 23, - 28 => 24, - 29 => 30, - 31 => match state { - 8 => 49, - 9 => 50, - 13 => 54, - 14 => 55, - 16 => 56, - 17 => 57, - 19 => 61, - 20 => 63, - 21 => 64, - 22 => 65, + 6 => 13, + 17 => 18, + 19 => 53, + 24 => match state { + 5 => 47, + 9 => 51, _ => 6, }, - 33 => match state { - 0 => 25, - _ => 31, + 25 => 22, + 28 => 23, + 29 => 42, + 31 => match state { + 4 => 46, + 11 => 54, + 12 => 55, + 13 => 56, + 15 => 60, + 17 => 63, + 18 => 65, + 19 => 66, + 20 => 67, + 21 => 68, + _ => 7, }, - 34 => 32, - 35 => match state { - 6 => 47, - 18 => 60, - _ => 28, + 33 => 8, + 34 => match state { + 7 => 49, + 14 => 59, + _ => 37, }, - 36 => 46, - 38 => match state { - 4 => 9, - 10 => 14, - 12 => 16, - 15 => 19, - _ => 8, + 35 => 48, + 37 => match state { + 1 => 36, + 8 => 50, + _ => 24, }, - 40 => match state { - 7 => 48, - _ => 33, + 39 => match state { + 3..=4 | 11..=13 | 15 | 17..=21 => 43, + 10 => 52, + _ => 38, }, _ => 0, } } const __TERMINAL: &[&str] = &[ + r###""%""###, + r###""&""###, r###""(""###, r###"")""###, r###"",""###, @@ -11530,17 +11807,19 @@ mod __parse__Instruction { r###""add""###, r###""bool""###, r###""br""###, + r###""cmp""###, r###""condbr""###, r###""eq""###, + r###""false""###, r###""fun""###, r###""gt""###, r###""i16""###, r###""i32""###, r###""i64""###, r###""i8""###, - r###""icmp""###, r###""ret""###, r###""sub""###, + r###""true""###, r###""u16""###, r###""u32""###, r###""u64""###, @@ -11550,8 +11829,7 @@ mod __parse__Instruction { r###""}""###, r###"r#"@[a-zA-Z_][a-zA-Z0-9_]*"#"###, r###"r#"[1-9][0-9]*"#"###, - r###"r#"bb(0|([1-9][0-9]*))"#"###, - r###"r#"v(0|([1-9][0-9]*))"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, ]; fn __expected_tokens(__state: i8) -> alloc::vec::Vec { __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { @@ -11620,7 +11898,7 @@ mod __parse__Instruction { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 33 - 1) + __action(state, 36 - 1) } #[inline] @@ -11687,39 +11965,42 @@ mod __parse__Instruction { ) -> Option { match *__token { - Token(4, _) if true => Some(0), - Token(5, _) if true => Some(1), - Token(6, _) if true => Some(2), - Token(7, _) if true => Some(3), - Token(8, _) if true => Some(4), - Token(9, _) if true => Some(5), - Token(10, _) if true => Some(6), - Token(11, _) if true => Some(7), - Token(12, _) if true => Some(8), - Token(13, _) if true => Some(9), - Token(14, _) if true => Some(10), - Token(15, _) if true => Some(11), - Token(16, _) if true => Some(12), - Token(17, _) if true => Some(13), - Token(18, _) if true => Some(14), - Token(19, _) if true => Some(15), - Token(20, _) if true => Some(16), - Token(21, _) if true => Some(17), - Token(22, _) if true => Some(18), - Token(23, _) if true => Some(19), - Token(24, _) if true => Some(20), - Token(25, _) if true => Some(21), - Token(26, _) if true => Some(22), - Token(27, _) if true => Some(23), - Token(28, _) if true => Some(24), - Token(29, _) if true => Some(25), - Token(30, _) if true => Some(26), - Token(31, _) if true => Some(27), - Token(32, _) if true => Some(28), - Token(0, _) if true => Some(29), - Token(1, _) if true => Some(30), - Token(2, _) if true => Some(31), - Token(3, _) if true => Some(32), + Token(3, _) if true => Some(0), + Token(4, _) if true => Some(1), + Token(5, _) if true => Some(2), + Token(6, _) if true => Some(3), + Token(7, _) if true => Some(4), + Token(8, _) if true => Some(5), + Token(9, _) if true => Some(6), + Token(10, _) if true => Some(7), + Token(11, _) if true => Some(8), + Token(12, _) if true => Some(9), + Token(13, _) if true => Some(10), + Token(14, _) if true => Some(11), + Token(15, _) if true => Some(12), + Token(16, _) if true => Some(13), + Token(17, _) if true => Some(14), + Token(18, _) if true => Some(15), + Token(19, _) if true => Some(16), + Token(20, _) if true => Some(17), + Token(21, _) if true => Some(18), + Token(22, _) if true => Some(19), + Token(23, _) if true => Some(20), + Token(24, _) if true => Some(21), + Token(25, _) if true => Some(22), + Token(26, _) if true => Some(23), + Token(27, _) if true => Some(24), + Token(28, _) if true => Some(25), + Token(29, _) if true => Some(26), + Token(30, _) if true => Some(27), + Token(31, _) if true => Some(28), + Token(32, _) if true => Some(29), + Token(33, _) if true => Some(30), + Token(34, _) if true => Some(31), + Token(35, _) if true => Some(32), + Token(0, _) if true => Some(33), + Token(1, _) if true => Some(34), + Token(2, _) if true => Some(35), _ => None, } } @@ -11732,8 +12013,8 @@ mod __parse__Instruction { ) -> __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 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 => 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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -11851,7 +12132,7 @@ mod __parse__Instruction { } 17 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 3, nonterminal_produced: 10, } } @@ -11942,7 +12223,7 @@ mod __parse__Instruction { 32 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 18, + nonterminal_produced: 17, } } 33 => { @@ -11953,20 +12234,20 @@ mod __parse__Instruction { } 34 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 19, + states_to_pop: 0, + nonterminal_produced: 18, } } 35 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 19, + states_to_pop: 2, + nonterminal_produced: 18, } } 36 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 19, + states_to_pop: 1, + nonterminal_produced: 18, } } 37 => { @@ -11977,20 +12258,20 @@ mod __parse__Instruction { } 38 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 20, + states_to_pop: 0, + nonterminal_produced: 19, } } 39 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 20, + states_to_pop: 2, + nonterminal_produced: 19, } } 40 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 20, + states_to_pop: 1, + nonterminal_produced: 19, } } 41 => { @@ -12001,20 +12282,20 @@ mod __parse__Instruction { } 42 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 21, + states_to_pop: 0, + nonterminal_produced: 20, } } 43 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 21, + states_to_pop: 2, + nonterminal_produced: 20, } } 44 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 21, + states_to_pop: 1, + nonterminal_produced: 20, } } 45 => { @@ -12025,103 +12306,103 @@ mod __parse__Instruction { } 46 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 8, nonterminal_produced: 22, } } 47 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, - nonterminal_produced: 23, + states_to_pop: 9, + nonterminal_produced: 22, } } 48 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 9, + states_to_pop: 1, nonterminal_produced: 23, } } 49 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 24, + states_to_pop: 2, + nonterminal_produced: 23, } } 50 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 24, } } 51 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 25, + states_to_pop: 1, + nonterminal_produced: 24, } } 52 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 26, + states_to_pop: 2, + nonterminal_produced: 25, } } 53 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 0, nonterminal_produced: 26, } } 54 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 27, + nonterminal_produced: 26, } } 55 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 27, } } 56 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, - nonterminal_produced: 28, + states_to_pop: 2, + nonterminal_produced: 27, } } 57 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, + states_to_pop: 8, nonterminal_produced: 28, } } 58 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 4, + states_to_pop: 8, nonterminal_produced: 28, } } 59 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, + states_to_pop: 5, nonterminal_produced: 28, } } 60 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 5, + states_to_pop: 9, nonterminal_produced: 28, } } 61 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 5, nonterminal_produced: 28, } } 62 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 2, nonterminal_produced: 28, } } @@ -12134,212 +12415,230 @@ mod __parse__Instruction { 64 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 29, + nonterminal_produced: 28, } } 65 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 30, + states_to_pop: 2, + nonterminal_produced: 29, } } 66 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 67 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 68 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 32, + nonterminal_produced: 30, } } 69 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 32, + states_to_pop: 1, + nonterminal_produced: 31, } } 70 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 33, + states_to_pop: 2, + nonterminal_produced: 31, } } 71 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 34, + states_to_pop: 1, + nonterminal_produced: 32, } } 72 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 34, + states_to_pop: 0, + nonterminal_produced: 32, } } 73 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 74 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 75 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 36, + states_to_pop: 2, + nonterminal_produced: 34, } } 76 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 37, + nonterminal_produced: 34, } } 77 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 37, + states_to_pop: 3, + nonterminal_produced: 35, } } 78 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 36, } } 79 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 38, + states_to_pop: 0, + nonterminal_produced: 36, } } 80 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 81 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 82 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 83 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 84 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 85 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 86 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 87 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 88 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 39, + nonterminal_produced: 37, } } 89 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 39, + states_to_pop: 1, + nonterminal_produced: 37, } } 90 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 40, + states_to_pop: 2, + nonterminal_produced: 37, } } 91 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 40, + nonterminal_produced: 38, } } 92 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 41, + states_to_pop: 0, + nonterminal_produced: 38, } } 93 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 42, + nonterminal_produced: 39, } } 94 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 43, + nonterminal_produced: 39, + } + } + 95 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 40, } } - 95 => __state_machine::SimulatedReduce::Accept, 96 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 45, + nonterminal_produced: 41, } } 97 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 46, + nonterminal_produced: 42, } } - 98 => { + 98 => __state_machine::SimulatedReduce::Accept, + 99 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 47, + nonterminal_produced: 44, } } - 99 => { + 100 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 45, + } + } + 101 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 48, + nonterminal_produced: 46, + } + } + 102 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, } } _ => panic!("invalid reduction index {}", __reduce_index) @@ -12709,12 +13008,7 @@ mod __parse__Instruction { __reduce94(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 95 => { - // __Instruction = Instruction => ActionFn(3); - let __sym0 = __pop_Variant20(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action3::<>(input, __sym0); - return Some(Ok(__nt)); + __reduce95(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 96 => { __reduce96(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) @@ -12723,11 +13017,25 @@ mod __parse__Instruction { __reduce97(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 98 => { - __reduce98(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + // __Instruction = Instruction => ActionFn(3); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action3::<>(input, __sym0); + return Some(Ok(__nt)); } 99 => { __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } + 100 => { + __reduce100(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 101 => { + __reduce101(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 102 => { + __reduce102(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } _ => panic!("invalid action code {}", __action) }; let __states_len = __states.len(); @@ -12767,32 +13075,32 @@ mod __parse__Instruction { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, BasicBlockId, usize) + ) -> (usize, CmpOp, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant17< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, CmpOp, usize) + ) -> (usize, Function, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant18< + fn __pop_Variant19< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Function, usize) + ) -> (usize, Identifier, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -12840,36 +13148,25 @@ mod __parse__Instruction { _ => __symbol_type_mismatch() } } - fn __pop_Variant25< - 'input, - >( - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, RegId, usize) - { - match __symbols.pop() { - Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), - _ => __symbol_type_mismatch() - } - } - fn __pop_Variant17< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant27< + fn __pop_Variant26< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Target, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -12895,25 +13192,25 @@ mod __parse__Instruction { _ => __symbol_type_mismatch() } } - fn __pop_Variant15< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant16< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -12939,14 +13236,14 @@ mod __parse__Instruction { _ => __symbol_type_mismatch() } } - fn __pop_Variant19< + fn __pop_Variant18< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, alloc::vec::Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -13005,14 +13302,14 @@ mod __parse__Instruction { _ => __symbol_type_mismatch() } } - fn __pop_Variant29< + fn __pop_Variant28< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -13027,14 +13324,14 @@ mod __parse__Instruction { _ => __symbol_type_mismatch() } } - fn __pop_Variant28< + fn __pop_Variant27< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -13049,25 +13346,25 @@ mod __parse__Instruction { _ => __symbol_type_mismatch() } } - fn __pop_Variant26< + fn __pop_Variant25< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant30< + fn __pop_Variant29< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, u64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -13091,11 +13388,11 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = "-" => ActionFn(44); + // "-"? = "-" => ActionFn(47); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action47::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 0) } @@ -13108,10 +13405,10 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = => ActionFn(45); + // "-"? = => ActionFn(48); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action45::<>(input, &__start, &__end); + let __nt = super::__action48::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (0, 0) } @@ -13124,13 +13421,13 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Arg, "," => ActionFn(74); + // ( ",") = Arg, "," => ActionFn(77); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action74::<>(input, __sym0, __sym1); + let __nt = super::__action77::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 1) } @@ -13143,10 +13440,10 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(72); + // ( ",")* = => ActionFn(75); 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::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (0, 2) } @@ -13159,11 +13456,11 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(73); + // ( ",")* = ( ",")+ => ActionFn(76); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action73::<>(input, __sym0); + let __nt = super::__action76::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (1, 2) } @@ -13176,13 +13473,13 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Arg, "," => ActionFn(86); + // ( ",")+ = Arg, "," => ActionFn(89); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action86::<>(input, __sym0, __sym1); + let __nt = super::__action89::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -13195,14 +13492,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Arg, "," => ActionFn(87); + // ( ",")+ = ( ",")+, Arg, "," => ActionFn(90); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (3, 3) } @@ -13215,13 +13512,13 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Operand, "," => ActionFn(77); + // ( ",") = Operand, "," => ActionFn(80); 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::__action77::<>(input, __sym0, __sym1); + let __nt = super::__action80::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 4) } @@ -13234,10 +13531,10 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(75); + // ( ",")* = => ActionFn(78); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action75::<>(input, &__start, &__end); + let __nt = super::__action78::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 5) } @@ -13250,11 +13547,11 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(76); + // ( ",")* = ( ",")+ => ActionFn(79); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action76::<>(input, __sym0); + let __nt = super::__action79::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 5) } @@ -13267,13 +13564,13 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Operand, "," => ActionFn(90); + // ( ",")+ = Operand, "," => 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::__action90::<>(input, __sym0, __sym1); + let __nt = super::__action93::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 6) } @@ -13286,14 +13583,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Operand, "," => ActionFn(91); + // ( ",")+ = ( ",")+, Operand, "," => ActionFn(94); 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::__action91::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 6) } @@ -13306,13 +13603,13 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Type, "," => ActionFn(65); + // ( ",") = Type, "," => ActionFn(68); 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::__action65::<>(input, __sym0, __sym1); + let __nt = super::__action68::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 7) } @@ -13325,10 +13622,10 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(63); + // ( ",")* = => ActionFn(66); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action63::<>(input, &__start, &__end); + let __nt = super::__action66::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 8) } @@ -13341,11 +13638,11 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(64); + // ( ",")* = ( ",")+ => ActionFn(67); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action64::<>(input, __sym0); + let __nt = super::__action67::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 8) } @@ -13358,13 +13655,13 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Type, "," => ActionFn(94); + // ( ",")+ = Type, "," => ActionFn(97); 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::__action94::<>(input, __sym0, __sym1); + let __nt = super::__action97::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 9) } @@ -13377,14 +13674,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Type, "," => ActionFn(95); + // ( ",")+ = ( ",")+, Type, "," => ActionFn(98); 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::__action95::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (3, 9) } @@ -13397,15 +13694,16 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg = Type, RegId => ActionFn(12); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant25(__symbols); + // Arg = Type, "%", Identifier => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action12::<>(input, __sym0, __sym1); + let __end = __sym2.2; + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (2, 10) + (3, 10) } fn __reduce18< 'input, @@ -13416,11 +13714,11 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = Arg => ActionFn(70); + // Arg? = Arg => ActionFn(73); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action73::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -13433,10 +13731,10 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = => ActionFn(71); + // Arg? = => ActionFn(74); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action71::<>(input, &__start, &__end); + let __nt = super::__action74::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (0, 11) } @@ -13449,14 +13747,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":" => ActionFn(106); + // BasicBlock = Identifier, BasicBlockArgList, ":" => ActionFn(109); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -13469,15 +13767,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":", Instruction+ => ActionFn(107); + // BasicBlock = Identifier, BasicBlockArgList, ":", Instruction+ => ActionFn(110); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant21(__symbols); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action107::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action110::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (4, 12) } @@ -13490,13 +13788,13 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":" => ActionFn(108); + // BasicBlock = Identifier, ":" => ActionFn(111); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action108::<>(input, __sym0, __sym1); + let __nt = super::__action111::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (2, 12) } @@ -13509,14 +13807,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":", Instruction+ => ActionFn(109); + // BasicBlock = Identifier, ":", Instruction+ => ActionFn(112); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant21(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action112::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -13529,10 +13827,10 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = => ActionFn(56); + // BasicBlock* = => ActionFn(59); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action56::<>(input, &__start, &__end); + let __nt = super::__action59::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (0, 13) } @@ -13545,11 +13843,11 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = BasicBlock+ => ActionFn(57); + // BasicBlock* = BasicBlock+ => ActionFn(60); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action57::<>(input, __sym0); + let __nt = super::__action60::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 13) } @@ -13562,11 +13860,11 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock => ActionFn(66); + // BasicBlock+ = BasicBlock => ActionFn(69); let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action66::<>(input, __sym0); + let __nt = super::__action69::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 14) } @@ -13579,13 +13877,13 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(67); + // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(70); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant9(__symbols); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action67::<>(input, __sym0, __sym1); + let __nt = super::__action70::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 14) } @@ -13618,11 +13916,11 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = BasicBlockArgList => ActionFn(54); + // BasicBlockArgList? = BasicBlockArgList => ActionFn(57); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action54::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 16) } @@ -13635,10 +13933,10 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = => ActionFn(55); + // BasicBlockArgList? = => ActionFn(58); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action55::<>(input, &__start, &__end); + let __nt = super::__action58::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (0, 16) } @@ -13651,11 +13949,11 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockId = r#"bb(0|([1-9][0-9]*))"# => ActionFn(40); + // CmpOp = "eq" => ActionFn(21); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 17) } @@ -13667,33 +13965,16 @@ mod __parse__Instruction { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) - { - // CmpOp = "eq" => ActionFn(21); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action21::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) - } - fn __reduce33< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) { // CmpOp = "gt" => ActionFn(22); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } - fn __reduce34< + fn __reduce33< 'input, >( input: &'input str, @@ -13702,15 +13983,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Arg => ActionFn(98); + // Comma = Arg => ActionFn(101); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action98::<>(input, __sym0); + let __nt = super::__action101::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce35< + fn __reduce34< 'input, >( input: &'input str, @@ -13719,14 +14000,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(99); + // Comma = => ActionFn(102); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action99::<>(input, &__start, &__end); + let __nt = super::__action102::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (0, 19) + (0, 18) } - fn __reduce36< + fn __reduce35< 'input, >( input: &'input str, @@ -13735,17 +14016,17 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Arg => ActionFn(100); + // Comma = ( ",")+, Arg => ActionFn(103); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action100::<>(input, __sym0, __sym1); + let __nt = super::__action103::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (2, 19) + (2, 18) } - fn __reduce37< + fn __reduce36< 'input, >( input: &'input str, @@ -13754,15 +14035,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(101); + // Comma = ( ",")+ => ActionFn(104); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action101::<>(input, __sym0); + let __nt = super::__action104::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce38< + fn __reduce37< 'input, >( input: &'input str, @@ -13771,15 +14052,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Operand => ActionFn(110); + // Comma = Operand => ActionFn(113); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action110::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action113::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce39< + fn __reduce38< 'input, >( input: &'input str, @@ -13788,14 +14069,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(111); + // Comma = => ActionFn(114); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action111::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (0, 20) + let __nt = super::__action114::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 19) } - fn __reduce40< + fn __reduce39< 'input, >( input: &'input str, @@ -13804,17 +14085,17 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Operand => ActionFn(112); + // Comma = ( ",")+, Operand => ActionFn(115); 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::__action112::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (2, 20) + let __nt = super::__action115::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 19) } - fn __reduce41< + fn __reduce40< 'input, >( input: &'input str, @@ -13823,15 +14104,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(113); + // Comma = ( ",")+ => ActionFn(116); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action113::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action116::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce42< + fn __reduce41< 'input, >( input: &'input str, @@ -13840,15 +14121,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Type => ActionFn(118); + // Comma = Type => ActionFn(121); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action118::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action121::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce43< + fn __reduce42< 'input, >( input: &'input str, @@ -13857,14 +14138,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(119); + // Comma = => ActionFn(122); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action119::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (0, 21) + let __nt = super::__action122::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 20) } - fn __reduce44< + fn __reduce43< 'input, >( input: &'input str, @@ -13873,17 +14154,17 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Type => ActionFn(120); + // Comma = ( ",")+, Type => ActionFn(123); 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::__action120::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (2, 21) + let __nt = super::__action123::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 20) } - fn __reduce45< + fn __reduce44< 'input, >( input: &'input str, @@ -13892,15 +14173,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(121); + // Comma = ( ",")+ => ActionFn(124); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action121::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action124::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce46< + fn __reduce45< 'input, >( input: &'input str, @@ -13909,15 +14190,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(38); + // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action38::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant17(__nt), __end)); - (1, 22) + let __nt = super::__action41::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) } - fn __reduce47< + fn __reduce46< 'input, >( input: &'input str, @@ -13926,23 +14207,23 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(102); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(105); assert!(__symbols.len() >= 8); let __sym7 = __pop_Variant0(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym7.2; - let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (8, 23) + let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (8, 22) } - fn __reduce48< + fn __reduce47< 'input, >( input: &'input str, @@ -13951,22 +14232,39 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(103); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(106); assert!(__symbols.len() >= 9); let __sym8 = __pop_Variant0(__symbols); let __sym7 = __pop_Variant10(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym8.2; - let __nt = super::__action103::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (9, 22) + } + fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Function+ = Function => ActionFn(62); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action62::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (9, 23) + (1, 23) } fn __reduce49< 'input, @@ -13977,15 +14275,34 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function => ActionFn(59); + // Function+ = Function+, Function => ActionFn(63); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant17(__symbols); let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action63::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 23) + } + fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Identifier = UnsignedNum => ActionFn(42); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action59::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); (1, 24) } - fn __reduce50< + fn __reduce51< 'input, >( input: &'input str, @@ -13994,17 +14311,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function+, Function => ActionFn(60); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant18(__symbols); - let __sym0 = __pop_Variant19(__symbols); + // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(43); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action60::<>(input, __sym0, __sym1); + let __end = __sym0.2; + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); - (2, 24) + (1, 24) } - fn __reduce51< + fn __reduce52< 'input, >( input: &'input str, @@ -14023,7 +14338,7 @@ mod __parse__Instruction { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 25) } - fn __reduce52< + fn __reduce53< 'input, >( input: &'input str, @@ -14032,14 +14347,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = => ActionFn(52); + // Instruction* = => ActionFn(55); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action52::<>(input, &__start, &__end); + let __nt = super::__action55::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (0, 26) } - fn __reduce53< + fn __reduce54< 'input, >( input: &'input str, @@ -14048,15 +14363,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = Instruction+ => ActionFn(53); + // Instruction* = Instruction+ => ActionFn(56); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action53::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 26) } - fn __reduce54< + fn __reduce55< 'input, >( input: &'input str, @@ -14065,15 +14380,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction => ActionFn(68); + // Instruction+ = Instruction => ActionFn(71); let __sym0 = __pop_Variant20(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action68::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 27) } - fn __reduce55< + fn __reduce56< 'input, >( input: &'input str, @@ -14082,17 +14397,17 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction+, Instruction => ActionFn(69); + // Instruction+ = Instruction+, Instruction => ActionFn(72); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant20(__symbols); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action69::<>(input, __sym0, __sym1); + let __nt = super::__action72::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (2, 27) } - fn __reduce56< + fn __reduce57< 'input, >( input: &'input str, @@ -14101,22 +14416,23 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "add", Type, Operand, ",", Operand => ActionFn(14); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "add", Operand, ",", Operand => ActionFn(14); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce57< + fn __reduce58< 'input, >( input: &'input str, @@ -14125,22 +14441,23 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "sub", Type, Operand, ",", Operand => ActionFn(15); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "sub", Operand, ",", Operand => ActionFn(15); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce58< + fn __reduce59< 'input, >( input: &'input str, @@ -14149,19 +14466,20 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", Type, Operand => ActionFn(16); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant4(__symbols); - let __sym2 = __pop_Variant6(__symbols); + // InstructionInner = Type, "%", Identifier, "=", Operand => ActionFn(16); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant4(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym3.2; - let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym4.2; + let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (4, 28) + (5, 28) } - fn __reduce59< + fn __reduce60< 'input, >( input: &'input str, @@ -14170,23 +14488,24 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "icmp", CmpOp, Type, Operand, ",", Operand => ActionFn(17); - assert!(__symbols.len() >= 8); - let __sym7 = __pop_Variant4(__symbols); - let __sym6 = __pop_Variant0(__symbols); - let __sym5 = __pop_Variant4(__symbols); - let __sym4 = __pop_Variant6(__symbols); - let __sym3 = __pop_Variant14(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "cmp", CmpOp, Operand, ",", Operand => ActionFn(17); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant4(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant4(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym7.2; - let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __end = __sym8.2; + let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (8, 28) + (9, 28) } - fn __reduce60< + fn __reduce61< 'input, >( input: &'input str, @@ -14197,9 +14516,9 @@ mod __parse__Instruction { { // InstructionInner = "condbr", Operand, Target, ",", Target => ActionFn(18); assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant27(__symbols); + let __sym4 = __pop_Variant26(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant27(__symbols); + let __sym2 = __pop_Variant26(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; @@ -14208,7 +14527,7 @@ mod __parse__Instruction { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (5, 28) } - fn __reduce61< + fn __reduce62< 'input, >( input: &'input str, @@ -14219,7 +14538,7 @@ mod __parse__Instruction { { // InstructionInner = "br", Target => ActionFn(19); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant26(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; @@ -14227,7 +14546,7 @@ mod __parse__Instruction { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } - fn __reduce62< + fn __reduce63< 'input, >( input: &'input str, @@ -14236,18 +14555,34 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type, Operand => ActionFn(114); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant4(__symbols); - let __sym1 = __pop_Variant6(__symbols); + // InstructionInner = "ret", Operand => ActionFn(117); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action114::<>(input, __sym0, __sym1, __sym2); + let __end = __sym1.2; + let __nt = super::__action117::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (3, 28) + (2, 28) } - fn __reduce63< + fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // InstructionInner = "ret" => ActionFn(118); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action118::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) + } + fn __reduce65< 'input, >( input: &'input str, @@ -14256,17 +14591,17 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type => ActionFn(115); + // Literal = SignedNum, Type => ActionFn(27); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant6(__symbols); - let __sym0 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant25(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action115::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (2, 28) + let __nt = super::__action27::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (2, 29) } - fn __reduce64< + fn __reduce66< 'input, >( input: &'input str, @@ -14275,15 +14610,32 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Literal = SignedNum => ActionFn(27); - let __sym0 = __pop_Variant26(__symbols); + // Literal = "true" => 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::Variant22(__nt), __end)); (1, 29) } - fn __reduce65< + fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Literal = "false" => ActionFn(29); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) + } + fn __reduce68< 'input, >( input: &'input str, @@ -14293,14 +14645,14 @@ mod __parse__Instruction { ) -> (usize, usize) { // Module = Function+ => ActionFn(8); - let __sym0 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action8::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); (1, 30) } - fn __reduce66< + fn __reduce69< 'input, >( input: &'input str, @@ -14317,7 +14669,7 @@ mod __parse__Instruction { __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 31) } - fn __reduce67< + fn __reduce70< 'input, >( input: &'input str, @@ -14326,15 +14678,17 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = RegId => ActionFn(26); - let __sym0 = __pop_Variant25(__symbols); + // Operand = "%", Identifier => ActionFn(26); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action26::<>(input, __sym0); + let __end = __sym1.2; + let __nt = super::__action26::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + (2, 31) } - fn __reduce68< + fn __reduce71< 'input, >( input: &'input str, @@ -14343,15 +14697,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = Operand => ActionFn(49); + // Operand? = Operand => ActionFn(52); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action49::<>(input, __sym0); + let __nt = super::__action52::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant24(__nt), __end)); (1, 32) } - fn __reduce69< + fn __reduce72< 'input, >( input: &'input str, @@ -14360,31 +14714,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = => ActionFn(50); + // Operand? = => ActionFn(53); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action50::<>(input, &__start, &__end); + let __nt = super::__action53::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant24(__nt), __end)); (0, 32) } - fn __reduce70< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // RegId = r#"v(0|([1-9][0-9]*))"# => ActionFn(39); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action39::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant25(__nt), __end)); - (1, 33) - } - fn __reduce71< + fn __reduce73< 'input, >( input: &'input str, @@ -14393,17 +14730,17 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = "-", UnsignedNum => ActionFn(84); + // SignedNum = "-", UnsignedNum => ActionFn(87); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant30(__symbols); + let __sym1 = __pop_Variant29(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action84::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (2, 34) + let __nt = super::__action87::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (2, 33) } - fn __reduce72< + fn __reduce74< 'input, >( input: &'input str, @@ -14412,15 +14749,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = UnsignedNum => ActionFn(85); - let __sym0 = __pop_Variant30(__symbols); + // SignedNum = UnsignedNum => ActionFn(88); + let __sym0 = __pop_Variant29(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action85::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (1, 34) + let __nt = super::__action88::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 33) } - fn __reduce73< + fn __reduce75< 'input, >( input: &'input str, @@ -14429,17 +14766,17 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId, TargetArgList => ActionFn(116); + // Target = Identifier, TargetArgList => ActionFn(119); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action116::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (2, 35) + let __nt = super::__action119::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 34) } - fn __reduce74< + fn __reduce76< 'input, >( input: &'input str, @@ -14448,15 +14785,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId => ActionFn(117); - let __sym0 = __pop_Variant13(__symbols); + // Target = Identifier => ActionFn(120); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action117::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 35) + let __nt = super::__action120::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 34) } - fn __reduce75< + fn __reduce77< 'input, >( input: &'input str, @@ -14468,15 +14805,15 @@ mod __parse__Instruction { // TargetArgList = "(", Comma, ")" => ActionFn(24); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant15(__symbols); + let __sym1 = __pop_Variant14(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym2.2; let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (3, 36) + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 35) } - fn __reduce76< + fn __reduce78< 'input, >( input: &'input str, @@ -14485,15 +14822,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = TargetArgList => ActionFn(47); - let __sym0 = __pop_Variant15(__symbols); + // TargetArgList? = TargetArgList => ActionFn(50); + let __sym0 = __pop_Variant14(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action47::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (1, 37) + let __nt = super::__action50::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (1, 36) } - fn __reduce77< + fn __reduce79< 'input, >( input: &'input str, @@ -14502,14 +14839,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = => ActionFn(48); + // TargetArgList? = => ActionFn(51); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action48::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (0, 37) + let __nt = super::__action51::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 36) } - fn __reduce78< + fn __reduce80< 'input, >( input: &'input str, @@ -14518,15 +14855,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u8" => ActionFn(28); + // Type = "u8" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action28::<>(input, __sym0); + let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce79< + fn __reduce81< 'input, >( input: &'input str, @@ -14535,15 +14872,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u16" => ActionFn(29); + // Type = "u16" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action29::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce80< + fn __reduce82< 'input, >( input: &'input str, @@ -14552,15 +14889,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u32" => ActionFn(30); + // Type = "u32" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action30::<>(input, __sym0); + let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce81< + fn __reduce83< 'input, >( input: &'input str, @@ -14569,15 +14906,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u64" => ActionFn(31); + // Type = "u64" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action31::<>(input, __sym0); + let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce82< + fn __reduce84< 'input, >( input: &'input str, @@ -14586,15 +14923,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i8" => ActionFn(32); + // Type = "i8" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action32::<>(input, __sym0); + let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce83< + fn __reduce85< 'input, >( input: &'input str, @@ -14603,15 +14940,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i16" => ActionFn(33); + // Type = "i16" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce84< + fn __reduce86< 'input, >( input: &'input str, @@ -14620,15 +14957,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i32" => ActionFn(34); + // Type = "i32" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action34::<>(input, __sym0); + let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce85< + fn __reduce87< 'input, >( input: &'input str, @@ -14637,15 +14974,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i64" => ActionFn(35); + // Type = "i64" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action35::<>(input, __sym0); + let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce86< + fn __reduce88< 'input, >( input: &'input str, @@ -14654,15 +14991,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "void" => ActionFn(36); + // Type = "void" => ActionFn(38); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action36::<>(input, __sym0); + let __nt = super::__action38::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce87< + fn __reduce89< 'input, >( input: &'input str, @@ -14671,15 +15008,34 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "bool" => ActionFn(37); + // Type = "bool" => ActionFn(39); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action37::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce88< + fn __reduce90< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Type = "&", Type => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 37) + } + fn __reduce91< 'input, >( input: &'input str, @@ -14688,15 +15044,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = Type => ActionFn(61); + // Type? = Type => ActionFn(64); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action61::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (1, 39) + let __nt = super::__action64::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (1, 38) } - fn __reduce89< + fn __reduce92< 'input, >( input: &'input str, @@ -14705,14 +15061,14 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = => ActionFn(62); + // Type? = => ActionFn(65); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action62::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (0, 39) + let __nt = super::__action65::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (0, 38) } - fn __reduce90< + fn __reduce93< 'input, >( input: &'input str, @@ -14721,15 +15077,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = "0" => ActionFn(42); + // UnsignedNum = "0" => ActionFn(45); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action42::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action45::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce91< + fn __reduce94< 'input, >( input: &'input str, @@ -14738,15 +15094,15 @@ mod __parse__Instruction { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(43); + // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(46); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action43::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action46::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce92< + fn __reduce95< 'input, >( input: &'input str, @@ -14761,9 +15117,9 @@ mod __parse__Instruction { let __end = __sym0.2; let __nt = super::__action2::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); - (1, 41) + (1, 40) } - fn __reduce93< + fn __reduce96< 'input, >( input: &'input str, @@ -14773,14 +15129,14 @@ mod __parse__Instruction { ) -> (usize, usize) { // __CmpOp = CmpOp => ActionFn(5); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action5::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 42) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 41) } - fn __reduce94< + fn __reduce97< 'input, >( input: &'input str, @@ -14790,14 +15146,14 @@ mod __parse__Instruction { ) -> (usize, usize) { // __Function = Function => ActionFn(1); - let __sym0 = __pop_Variant18(__symbols); + let __sym0 = __pop_Variant17(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action1::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (1, 43) + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 42) } - fn __reduce96< + fn __reduce99< 'input, >( input: &'input str, @@ -14812,9 +15168,9 @@ mod __parse__Instruction { let __end = __sym0.2; let __nt = super::__action4::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 45) + (1, 44) } - fn __reduce97< + fn __reduce100< 'input, >( input: &'input str, @@ -14829,9 +15185,9 @@ mod __parse__Instruction { let __end = __sym0.2; let __nt = super::__action0::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 46) + (1, 45) } - fn __reduce98< + fn __reduce101< 'input, >( input: &'input str, @@ -14846,9 +15202,9 @@ mod __parse__Instruction { let __end = __sym0.2; let __nt = super::__action7::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 47) + (1, 46) } - fn __reduce99< + fn __reduce102< 'input, >( input: &'input str, @@ -14858,12 +15214,12 @@ mod __parse__Instruction { ) -> (usize, usize) { // __Target = Target => ActionFn(6); - let __sym0 = __pop_Variant27(__symbols); + let __sym0 = __pop_Variant26(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 48) + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 47) } } #[allow(unused_imports)] @@ -14874,7 +15230,7 @@ pub use self::__parse__Instruction::InstructionParser; mod __parse__InstructionInner { use std::str::FromStr; - use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; + use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -14898,157 +15254,162 @@ mod __parse__InstructionInner { Variant10(alloc::vec::Vec), Variant11(Vec), Variant12(core::option::Option>), - Variant13(BasicBlockId), - Variant14(CmpOp), - Variant15(Vec), - Variant16(Vec), - Variant17(String), - Variant18(Function), - Variant19(alloc::vec::Vec), + Variant13(CmpOp), + Variant14(Vec), + Variant15(Vec), + Variant16(String), + Variant17(Function), + Variant18(alloc::vec::Vec), + Variant19(Identifier), Variant20(Instruction), Variant21(alloc::vec::Vec), Variant22(Literal), Variant23(Module), Variant24(core::option::Option), - Variant25(RegId), - Variant26(i64), - Variant27(Target), - Variant28(core::option::Option>), - Variant29(core::option::Option), - Variant30(u64), + Variant25(i64), + Variant26(Target), + Variant27(core::option::Option>), + Variant28(core::option::Option), + Variant29(u64), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 3, 0, 4, 0, 0, 0, 0, 26, 27, 28, 29, 5, 0, 0, 30, 31, 32, 33, 34, 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, 0, 0, 0, 28, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 0, 0, 0, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, // State 2 - 0, 0, 0, 8, 33, 0, 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, 26, + 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, 39, 40, // State 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 4 - 0, 0, 0, 0, 0, 0, 0, 0, 11, 35, 0, 0, 0, 0, 0, 36, 37, 38, 39, 12, 0, 13, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 5 - 14, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 39, 40, // State 6 - 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 12, 0, -77, 0, 0, 0, 0, 0, 0, 0, 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 7 - 0, 0, 0, 0, 33, 0, 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, 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, 39, 40, // State 8 - 0, 0, 0, 8, 33, 0, 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, 26, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 0, 0, 0, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, // State 9 - 0, 0, 0, 8, 33, 0, 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, 26, + 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, 39, 40, // State 10 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 40, 41, 42, 43, 44, 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, 39, 0, // State 11 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, -39, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 12 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 11, 38, 0, 0, 0, 16, 0, 0, 17, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 18, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 13 - 0, -40, 0, 8, 33, 0, 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, 26, + 10, 0, 0, -41, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 14 - 0, 0, 0, 8, 33, 0, 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, 26, + 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, 39, 40, // State 15 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 16 - 0, 0, 0, 8, 33, 0, 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, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 17 - 0, -42, 0, 8, 33, 0, 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, 26, + 10, 0, 0, 0, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 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, 28, 0, + 10, 0, 0, 0, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 19 - 0, 0, 0, 8, 33, 0, 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, 26, + 10, 0, 0, 0, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 20 - 0, 0, 0, 8, 33, 0, 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, 26, + 10, 0, 0, 0, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 21 - 0, 0, 0, 8, 33, 0, 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, 26, + 10, 0, 0, 0, 0, 11, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, // State 22 - 0, 0, 0, 8, 33, 0, 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, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 24 - 0, 0, 0, 0, 0, 0, 0, 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, + -90, 0, 0, -90, -90, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, -90, // State 25 - 0, -71, -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, -71, 0, + -86, 0, 0, -86, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, // State 26 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -87, -87, 0, -87, 0, 0, 0, 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, -87, // State 27 - -32, 0, -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, + -88, 0, 0, -88, -88, 0, -88, 0, 0, 0, 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, -88, // State 28 - 0, -67, -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, 0, -67, 0, + -85, 0, 0, -85, -85, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, // State 29 - 0, -68, -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, 0, -68, 0, + -82, 0, 0, -82, -82, 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, -82, -82, // State 30 - 0, -65, -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, 0, -65, 0, + -83, 0, 0, -83, -83, 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, -83, -83, // State 31 - 0, -73, -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, 0, 0, 0, -73, 0, + -84, 0, 0, -84, -84, 0, -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, -84, -84, // State 32 - 0, -91, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, + -81, 0, 0, -81, -81, 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, -81, -81, // State 33 - 0, -92, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, + -89, 0, 0, -89, -89, 0, -89, 0, 0, 0, 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, -89, // State 34 - 0, 0, 0, -88, -88, 0, 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, -88, + -91, 0, 0, -91, -91, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, -91, // State 35 - 0, 0, 0, -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, -84, 0, -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, 0, 0, 0, 0, 0, // State 36 - 0, 0, 0, -85, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, 0, -85, + 0, 0, -51, -51, -51, 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, -51, -51, // State 37 - 0, 0, 0, -86, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, -86, + 0, -94, -94, -94, -94, 0, -94, 0, 0, -94, 0, -94, 0, 0, 0, 0, 0, 0, 0, -94, -94, -94, -94, 0, 0, 0, -94, -94, -94, -94, -94, 0, 0, 0, -94, -94, // State 38 - 0, 0, 0, -83, -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, -83, 0, -83, + 0, -95, -95, -95, -95, 0, -95, 0, 0, -95, 0, -95, 0, 0, 0, 0, 0, 0, 0, -95, -95, -95, -95, 0, 0, 0, -95, -95, -95, -95, -95, 0, 0, 0, -95, -95, // State 39 - 0, 0, 0, -80, -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, -80, 0, -80, + 0, 0, -52, -52, -52, 0, -52, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, -52, // State 40 - 0, 0, 0, -81, -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, -81, 0, -81, + 0, 0, 0, -70, -70, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -70, // State 41 - 0, 0, 0, -82, -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, -82, 0, -82, + 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75, -75, -75, -75, 0, 0, 0, -75, -75, -75, -75, -75, 0, 0, 0, 0, 0, // State 42 - 0, 0, 0, -79, -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, -79, 0, -79, + 0, 0, 0, -68, -68, 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, -68, // State 43 - 0, 0, 0, -87, -87, 0, 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, -87, + 0, 0, 0, -67, -67, 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, -67, // State 44 - 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 45 - 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 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, -72, -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, 0, -72, 0, + 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 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 47 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -66, 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, -66, // State 49 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, -33, -33, -33, -33, 0, 0, 0, -33, -33, -33, -33, -33, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -71, -71, 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, -71, // State 50 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, -34, -34, -34, -34, 0, 0, 0, -34, -34, -34, -34, -34, 0, 0, 0, 0, 0, 0, + 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74, -74, -74, -74, 0, 0, 0, -74, -74, -74, -74, -74, 0, 0, 0, 0, 0, // State 51 - 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, 56, 0, 0, 0, 0, 0, 0, 0, 0, 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, -39, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, // State 53 - 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 54 - 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, 0, 0, 0, 0, 0, + 0, 0, 0, -40, 63, 0, 0, 0, 0, 0, 0, 0, 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 55 - 0, -41, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 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, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -11, 0, 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, // State 57 - 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, // State 59 - 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, + -32, 0, 0, 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, // State 60 - 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, -12, + -33, 0, 0, 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, // State 61 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 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 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, + -12, 0, 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, // State 63 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 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 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, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 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, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 33 + integer] + __ACTION[(state as usize) * 36 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -15060,15 +15421,15 @@ mod __parse__InstructionInner { // State 3 0, // State 4 - 0, + -65, // State 5 - -75, - // State 6 0, + // State 6 + -77, // State 7 0, // State 8 - -64, + 0, // State 9 0, // State 10 @@ -15096,61 +15457,61 @@ mod __parse__InstructionInner { // State 21 0, // State 22 - 0, + -100, // State 23 - -97, - // State 24 0, + // State 24 + -90, // State 25 - -71, + -86, // State 26 - -62, + -87, // State 27 - -32, + -88, // State 28 - -67, + -85, // State 29 - -68, + -82, // State 30 - -65, + -83, // State 31 - -73, + -84, // State 32 - -91, + -81, // State 33 - -92, + -89, // State 34 - -88, + -91, // State 35 - -84, + -63, // State 36 - -85, + -51, // State 37 - -86, + -94, // State 38 - -83, + -95, // State 39 - -80, + -52, // State 40 - -81, + -70, // State 41 - -82, + 0, // State 42 - -79, + -68, // State 43 - -87, + -67, // State 44 - -74, + -64, // State 45 0, // State 46 - -72, + -76, // State 47 - -63, + 0, // State 48 - -59, + -66, // State 49 - 0, + -71, // State 50 0, // State 51 @@ -15158,75 +15519,82 @@ mod __parse__InstructionInner { // State 52 0, // State 53 - 0, + -60, // State 54 0, // State 55 - 0, + -78, // State 56 - -76, - // State 57 0, + // State 57 + -62, // State 58 - -61, + 0, // State 59 0, // State 60 0, // State 61 - -57, + 0, // State 62 - -58, + 0, // State 63 - -60, + 0, + // State 64 + -58, + // State 65 + -59, + // State 66 + -61, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 6 => 17, - 17 => 5, - 18 => 15, - 20 => 51, - 28 => 23, - 29 => 28, - 31 => match state { - 8 => 47, - 9 => 48, - 13 => 52, - 14 => 53, - 16 => 54, - 17 => 55, - 19 => 59, - 20 => 61, - 21 => 62, - 22 => 63, + 6 => 13, + 17 => 18, + 19 => 51, + 24 => match state { + 5 => 45, + 9 => 49, _ => 6, }, - 33 => match state { - 0 => 24, - _ => 29, + 28 => 22, + 29 => 40, + 31 => match state { + 4 => 44, + 11 => 52, + 12 => 53, + 13 => 54, + 15 => 58, + 17 => 61, + 18 => 63, + 19 => 64, + 20 => 65, + 21 => 66, + _ => 7, }, - 34 => 30, - 35 => match state { - 6 => 45, - 18 => 58, - _ => 26, + 33 => 8, + 34 => match state { + 7 => 47, + 14 => 57, + _ => 35, }, - 36 => 44, - 38 => match state { - 4 => 9, - 10 => 14, - 12 => 16, - 15 => 19, - _ => 8, + 35 => 46, + 37 => match state { + 1 => 34, + 8 => 48, + _ => 23, }, - 40 => match state { - 7 => 46, - _ => 31, + 39 => match state { + 3..=4 | 11..=13 | 15 | 17..=21 => 41, + 10 => 50, + _ => 36, }, _ => 0, } } const __TERMINAL: &[&str] = &[ + r###""%""###, + r###""&""###, r###""(""###, r###"")""###, r###"",""###, @@ -15238,17 +15606,19 @@ mod __parse__InstructionInner { r###""add""###, r###""bool""###, r###""br""###, + r###""cmp""###, r###""condbr""###, r###""eq""###, + r###""false""###, r###""fun""###, r###""gt""###, r###""i16""###, r###""i32""###, r###""i64""###, r###""i8""###, - r###""icmp""###, r###""ret""###, r###""sub""###, + r###""true""###, r###""u16""###, r###""u32""###, r###""u64""###, @@ -15258,8 +15628,7 @@ mod __parse__InstructionInner { r###""}""###, r###"r#"@[a-zA-Z_][a-zA-Z0-9_]*"#"###, r###"r#"[1-9][0-9]*"#"###, - r###"r#"bb(0|([1-9][0-9]*))"#"###, - r###"r#"v(0|([1-9][0-9]*))"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, ]; fn __expected_tokens(__state: i8) -> alloc::vec::Vec { __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { @@ -15328,7 +15697,7 @@ mod __parse__InstructionInner { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 33 - 1) + __action(state, 36 - 1) } #[inline] @@ -15395,39 +15764,42 @@ mod __parse__InstructionInner { ) -> Option { match *__token { - Token(4, _) if true => Some(0), - Token(5, _) if true => Some(1), - Token(6, _) if true => Some(2), - Token(7, _) if true => Some(3), - Token(8, _) if true => Some(4), - Token(9, _) if true => Some(5), - Token(10, _) if true => Some(6), - Token(11, _) if true => Some(7), - Token(12, _) if true => Some(8), - Token(13, _) if true => Some(9), - Token(14, _) if true => Some(10), - Token(15, _) if true => Some(11), - Token(16, _) if true => Some(12), - Token(17, _) if true => Some(13), - Token(18, _) if true => Some(14), - Token(19, _) if true => Some(15), - Token(20, _) if true => Some(16), - Token(21, _) if true => Some(17), - Token(22, _) if true => Some(18), - Token(23, _) if true => Some(19), - Token(24, _) if true => Some(20), - Token(25, _) if true => Some(21), - Token(26, _) if true => Some(22), - Token(27, _) if true => Some(23), - Token(28, _) if true => Some(24), - Token(29, _) if true => Some(25), - Token(30, _) if true => Some(26), - Token(31, _) if true => Some(27), - Token(32, _) if true => Some(28), - Token(0, _) if true => Some(29), - Token(1, _) if true => Some(30), - Token(2, _) if true => Some(31), - Token(3, _) if true => Some(32), + Token(3, _) if true => Some(0), + Token(4, _) if true => Some(1), + Token(5, _) if true => Some(2), + Token(6, _) if true => Some(3), + Token(7, _) if true => Some(4), + Token(8, _) if true => Some(5), + Token(9, _) if true => Some(6), + Token(10, _) if true => Some(7), + Token(11, _) if true => Some(8), + Token(12, _) if true => Some(9), + Token(13, _) if true => Some(10), + Token(14, _) if true => Some(11), + Token(15, _) if true => Some(12), + Token(16, _) if true => Some(13), + Token(17, _) if true => Some(14), + Token(18, _) if true => Some(15), + Token(19, _) if true => Some(16), + Token(20, _) if true => Some(17), + Token(21, _) if true => Some(18), + Token(22, _) if true => Some(19), + Token(23, _) if true => Some(20), + Token(24, _) if true => Some(21), + Token(25, _) if true => Some(22), + Token(26, _) if true => Some(23), + Token(27, _) if true => Some(24), + Token(28, _) if true => Some(25), + Token(29, _) if true => Some(26), + Token(30, _) if true => Some(27), + Token(31, _) if true => Some(28), + Token(32, _) if true => Some(29), + Token(33, _) if true => Some(30), + Token(34, _) if true => Some(31), + Token(35, _) if true => Some(32), + Token(0, _) if true => Some(33), + Token(1, _) if true => Some(34), + Token(2, _) if true => Some(35), _ => None, } } @@ -15440,8 +15812,8 @@ mod __parse__InstructionInner { ) -> __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 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 => 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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -15559,7 +15931,7 @@ mod __parse__InstructionInner { } 17 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 3, nonterminal_produced: 10, } } @@ -15650,7 +16022,7 @@ mod __parse__InstructionInner { 32 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 18, + nonterminal_produced: 17, } } 33 => { @@ -15661,20 +16033,20 @@ mod __parse__InstructionInner { } 34 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 19, + states_to_pop: 0, + nonterminal_produced: 18, } } 35 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 19, + states_to_pop: 2, + nonterminal_produced: 18, } } 36 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 19, + states_to_pop: 1, + nonterminal_produced: 18, } } 37 => { @@ -15685,20 +16057,20 @@ mod __parse__InstructionInner { } 38 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 20, + states_to_pop: 0, + nonterminal_produced: 19, } } 39 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 20, + states_to_pop: 2, + nonterminal_produced: 19, } } 40 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 20, + states_to_pop: 1, + nonterminal_produced: 19, } } 41 => { @@ -15709,20 +16081,20 @@ mod __parse__InstructionInner { } 42 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 21, + states_to_pop: 0, + nonterminal_produced: 20, } } 43 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 21, + states_to_pop: 2, + nonterminal_produced: 20, } } 44 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 21, + states_to_pop: 1, + nonterminal_produced: 20, } } 45 => { @@ -15733,103 +16105,103 @@ mod __parse__InstructionInner { } 46 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 8, nonterminal_produced: 22, } } 47 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, - nonterminal_produced: 23, + states_to_pop: 9, + nonterminal_produced: 22, } } 48 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 9, + states_to_pop: 1, nonterminal_produced: 23, } } 49 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 24, + states_to_pop: 2, + nonterminal_produced: 23, } } 50 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 24, } } 51 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 25, + states_to_pop: 1, + nonterminal_produced: 24, } } 52 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 26, + states_to_pop: 2, + nonterminal_produced: 25, } } 53 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 0, nonterminal_produced: 26, } } 54 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 27, + nonterminal_produced: 26, } } 55 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 27, } } 56 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, - nonterminal_produced: 28, + states_to_pop: 2, + nonterminal_produced: 27, } } 57 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, + states_to_pop: 8, nonterminal_produced: 28, } } 58 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 4, + states_to_pop: 8, nonterminal_produced: 28, } } 59 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, + states_to_pop: 5, nonterminal_produced: 28, } } 60 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 5, + states_to_pop: 9, nonterminal_produced: 28, } } 61 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 5, nonterminal_produced: 28, } } 62 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 2, nonterminal_produced: 28, } } @@ -15842,212 +16214,230 @@ mod __parse__InstructionInner { 64 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 29, + nonterminal_produced: 28, } } 65 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 30, + states_to_pop: 2, + nonterminal_produced: 29, } } 66 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 67 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 68 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 32, + nonterminal_produced: 30, } } 69 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 32, + states_to_pop: 1, + nonterminal_produced: 31, } } 70 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 33, + states_to_pop: 2, + nonterminal_produced: 31, } } 71 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 34, + states_to_pop: 1, + nonterminal_produced: 32, } } 72 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 34, + states_to_pop: 0, + nonterminal_produced: 32, } } 73 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 74 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 75 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 36, + states_to_pop: 2, + nonterminal_produced: 34, } } 76 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 37, + nonterminal_produced: 34, } } 77 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 37, + states_to_pop: 3, + nonterminal_produced: 35, } } 78 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 36, } } 79 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 38, + states_to_pop: 0, + nonterminal_produced: 36, } } 80 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 81 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 82 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 83 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 84 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 85 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 86 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 87 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 88 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 39, + nonterminal_produced: 37, } } 89 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 39, + states_to_pop: 1, + nonterminal_produced: 37, } } 90 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 40, + states_to_pop: 2, + nonterminal_produced: 37, } } 91 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 40, + nonterminal_produced: 38, } } 92 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 41, + states_to_pop: 0, + nonterminal_produced: 38, } } 93 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 42, + nonterminal_produced: 39, } } 94 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 43, + nonterminal_produced: 39, } } 95 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 44, + nonterminal_produced: 40, + } + } + 96 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 41, } } - 96 => __state_machine::SimulatedReduce::Accept, 97 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 46, + nonterminal_produced: 42, } } 98 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 47, + nonterminal_produced: 43, } } - 99 => { + 99 => __state_machine::SimulatedReduce::Accept, + 100 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 45, + } + } + 101 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 48, + nonterminal_produced: 46, + } + } + 102 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, } } _ => panic!("invalid reduction index {}", __reduce_index) @@ -16420,6 +16810,15 @@ mod __parse__InstructionInner { __reduce95(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 96 => { + __reduce96(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 97 => { + __reduce97(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 98 => { + __reduce98(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 99 => { // __InstructionInner = InstructionInner => ActionFn(4); let __sym0 = __pop_Variant20(__symbols); let __start = __sym0.0; @@ -16427,14 +16826,14 @@ mod __parse__InstructionInner { let __nt = super::__action4::<>(input, __sym0); return Some(Ok(__nt)); } - 97 => { - __reduce97(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + 100 => { + __reduce100(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } - 98 => { - __reduce98(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + 101 => { + __reduce101(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } - 99 => { - __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + 102 => { + __reduce102(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } _ => panic!("invalid action code {}", __action) }; @@ -16475,32 +16874,32 @@ mod __parse__InstructionInner { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, BasicBlockId, usize) + ) -> (usize, CmpOp, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant17< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, CmpOp, usize) + ) -> (usize, Function, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant18< + fn __pop_Variant19< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Function, usize) + ) -> (usize, Identifier, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -16548,36 +16947,25 @@ mod __parse__InstructionInner { _ => __symbol_type_mismatch() } } - fn __pop_Variant25< - 'input, - >( - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, RegId, usize) - { - match __symbols.pop() { - Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), - _ => __symbol_type_mismatch() - } - } - fn __pop_Variant17< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant27< + fn __pop_Variant26< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Target, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -16603,25 +16991,25 @@ mod __parse__InstructionInner { _ => __symbol_type_mismatch() } } - fn __pop_Variant15< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant16< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -16647,14 +17035,14 @@ mod __parse__InstructionInner { _ => __symbol_type_mismatch() } } - fn __pop_Variant19< + fn __pop_Variant18< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, alloc::vec::Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -16713,14 +17101,14 @@ mod __parse__InstructionInner { _ => __symbol_type_mismatch() } } - fn __pop_Variant29< + fn __pop_Variant28< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -16735,14 +17123,14 @@ mod __parse__InstructionInner { _ => __symbol_type_mismatch() } } - fn __pop_Variant28< + fn __pop_Variant27< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -16757,25 +17145,25 @@ mod __parse__InstructionInner { _ => __symbol_type_mismatch() } } - fn __pop_Variant26< + fn __pop_Variant25< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant30< + fn __pop_Variant29< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, u64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -16799,11 +17187,11 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = "-" => ActionFn(44); + // "-"? = "-" => ActionFn(47); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action47::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 0) } @@ -16816,10 +17204,10 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = => ActionFn(45); + // "-"? = => ActionFn(48); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action45::<>(input, &__start, &__end); + let __nt = super::__action48::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (0, 0) } @@ -16832,13 +17220,13 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Arg, "," => ActionFn(74); + // ( ",") = Arg, "," => ActionFn(77); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action74::<>(input, __sym0, __sym1); + let __nt = super::__action77::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 1) } @@ -16851,10 +17239,10 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(72); + // ( ",")* = => ActionFn(75); 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::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (0, 2) } @@ -16867,11 +17255,11 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(73); + // ( ",")* = ( ",")+ => ActionFn(76); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action73::<>(input, __sym0); + let __nt = super::__action76::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (1, 2) } @@ -16884,13 +17272,13 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Arg, "," => ActionFn(86); + // ( ",")+ = Arg, "," => ActionFn(89); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action86::<>(input, __sym0, __sym1); + let __nt = super::__action89::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -16903,14 +17291,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Arg, "," => ActionFn(87); + // ( ",")+ = ( ",")+, Arg, "," => ActionFn(90); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (3, 3) } @@ -16923,13 +17311,13 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Operand, "," => ActionFn(77); + // ( ",") = Operand, "," => ActionFn(80); 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::__action77::<>(input, __sym0, __sym1); + let __nt = super::__action80::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 4) } @@ -16942,10 +17330,10 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(75); + // ( ",")* = => ActionFn(78); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action75::<>(input, &__start, &__end); + let __nt = super::__action78::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 5) } @@ -16958,11 +17346,11 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(76); + // ( ",")* = ( ",")+ => ActionFn(79); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action76::<>(input, __sym0); + let __nt = super::__action79::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 5) } @@ -16975,13 +17363,13 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Operand, "," => ActionFn(90); + // ( ",")+ = Operand, "," => 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::__action90::<>(input, __sym0, __sym1); + let __nt = super::__action93::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 6) } @@ -16994,14 +17382,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Operand, "," => ActionFn(91); + // ( ",")+ = ( ",")+, Operand, "," => ActionFn(94); 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::__action91::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 6) } @@ -17014,13 +17402,13 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Type, "," => ActionFn(65); + // ( ",") = Type, "," => ActionFn(68); 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::__action65::<>(input, __sym0, __sym1); + let __nt = super::__action68::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 7) } @@ -17033,10 +17421,10 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(63); + // ( ",")* = => ActionFn(66); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action63::<>(input, &__start, &__end); + let __nt = super::__action66::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 8) } @@ -17049,11 +17437,11 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(64); + // ( ",")* = ( ",")+ => ActionFn(67); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action64::<>(input, __sym0); + let __nt = super::__action67::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 8) } @@ -17066,13 +17454,13 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Type, "," => ActionFn(94); + // ( ",")+ = Type, "," => ActionFn(97); 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::__action94::<>(input, __sym0, __sym1); + let __nt = super::__action97::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 9) } @@ -17085,14 +17473,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Type, "," => ActionFn(95); + // ( ",")+ = ( ",")+, Type, "," => ActionFn(98); 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::__action95::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (3, 9) } @@ -17105,15 +17493,16 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg = Type, RegId => ActionFn(12); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant25(__symbols); + // Arg = Type, "%", Identifier => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action12::<>(input, __sym0, __sym1); + let __end = __sym2.2; + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (2, 10) + (3, 10) } fn __reduce18< 'input, @@ -17124,11 +17513,11 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = Arg => ActionFn(70); + // Arg? = Arg => ActionFn(73); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action73::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -17141,10 +17530,10 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = => ActionFn(71); + // Arg? = => ActionFn(74); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action71::<>(input, &__start, &__end); + let __nt = super::__action74::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (0, 11) } @@ -17157,14 +17546,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":" => ActionFn(106); + // BasicBlock = Identifier, BasicBlockArgList, ":" => ActionFn(109); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -17177,15 +17566,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":", Instruction+ => ActionFn(107); + // BasicBlock = Identifier, BasicBlockArgList, ":", Instruction+ => ActionFn(110); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant21(__symbols); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action107::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action110::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (4, 12) } @@ -17198,13 +17587,13 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":" => ActionFn(108); + // BasicBlock = Identifier, ":" => ActionFn(111); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action108::<>(input, __sym0, __sym1); + let __nt = super::__action111::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (2, 12) } @@ -17217,14 +17606,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":", Instruction+ => ActionFn(109); + // BasicBlock = Identifier, ":", Instruction+ => ActionFn(112); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant21(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action112::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -17237,10 +17626,10 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = => ActionFn(56); + // BasicBlock* = => ActionFn(59); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action56::<>(input, &__start, &__end); + let __nt = super::__action59::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (0, 13) } @@ -17253,11 +17642,11 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = BasicBlock+ => ActionFn(57); + // BasicBlock* = BasicBlock+ => ActionFn(60); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action57::<>(input, __sym0); + let __nt = super::__action60::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 13) } @@ -17270,11 +17659,11 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock => ActionFn(66); + // BasicBlock+ = BasicBlock => ActionFn(69); let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action66::<>(input, __sym0); + let __nt = super::__action69::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 14) } @@ -17287,13 +17676,13 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(67); + // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(70); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant9(__symbols); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action67::<>(input, __sym0, __sym1); + let __nt = super::__action70::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 14) } @@ -17326,11 +17715,11 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = BasicBlockArgList => ActionFn(54); + // BasicBlockArgList? = BasicBlockArgList => ActionFn(57); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action54::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 16) } @@ -17343,10 +17732,10 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = => ActionFn(55); + // BasicBlockArgList? = => ActionFn(58); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action55::<>(input, &__start, &__end); + let __nt = super::__action58::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (0, 16) } @@ -17359,11 +17748,11 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockId = r#"bb(0|([1-9][0-9]*))"# => ActionFn(40); + // CmpOp = "eq" => ActionFn(21); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 17) } @@ -17375,33 +17764,16 @@ mod __parse__InstructionInner { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) - { - // CmpOp = "eq" => ActionFn(21); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action21::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) - } - fn __reduce33< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) { // CmpOp = "gt" => ActionFn(22); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } - fn __reduce34< + fn __reduce33< 'input, >( input: &'input str, @@ -17410,15 +17782,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Arg => ActionFn(98); + // Comma = Arg => ActionFn(101); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action98::<>(input, __sym0); + let __nt = super::__action101::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce35< + fn __reduce34< 'input, >( input: &'input str, @@ -17427,14 +17799,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(99); + // Comma = => ActionFn(102); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action99::<>(input, &__start, &__end); + let __nt = super::__action102::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (0, 19) + (0, 18) } - fn __reduce36< + fn __reduce35< 'input, >( input: &'input str, @@ -17443,17 +17815,17 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Arg => ActionFn(100); + // Comma = ( ",")+, Arg => ActionFn(103); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action100::<>(input, __sym0, __sym1); + let __nt = super::__action103::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (2, 19) + (2, 18) } - fn __reduce37< + fn __reduce36< 'input, >( input: &'input str, @@ -17462,15 +17834,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(101); + // Comma = ( ",")+ => ActionFn(104); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action101::<>(input, __sym0); + let __nt = super::__action104::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce38< + fn __reduce37< 'input, >( input: &'input str, @@ -17479,15 +17851,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Operand => ActionFn(110); + // Comma = Operand => ActionFn(113); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action110::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action113::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce39< + fn __reduce38< 'input, >( input: &'input str, @@ -17496,14 +17868,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(111); + // Comma = => ActionFn(114); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action111::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (0, 20) + let __nt = super::__action114::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 19) } - fn __reduce40< + fn __reduce39< 'input, >( input: &'input str, @@ -17512,17 +17884,17 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Operand => ActionFn(112); + // Comma = ( ",")+, Operand => ActionFn(115); 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::__action112::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (2, 20) + let __nt = super::__action115::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 19) } - fn __reduce41< + fn __reduce40< 'input, >( input: &'input str, @@ -17531,15 +17903,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(113); + // Comma = ( ",")+ => ActionFn(116); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action113::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action116::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce42< + fn __reduce41< 'input, >( input: &'input str, @@ -17548,15 +17920,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Type => ActionFn(118); + // Comma = Type => ActionFn(121); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action118::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action121::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce43< + fn __reduce42< 'input, >( input: &'input str, @@ -17565,14 +17937,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(119); + // Comma = => ActionFn(122); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action119::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (0, 21) + let __nt = super::__action122::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 20) } - fn __reduce44< + fn __reduce43< 'input, >( input: &'input str, @@ -17581,17 +17953,17 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Type => ActionFn(120); + // Comma = ( ",")+, Type => ActionFn(123); 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::__action120::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (2, 21) + let __nt = super::__action123::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 20) } - fn __reduce45< + fn __reduce44< 'input, >( input: &'input str, @@ -17600,15 +17972,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(121); + // Comma = ( ",")+ => ActionFn(124); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action121::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action124::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce46< + fn __reduce45< 'input, >( input: &'input str, @@ -17617,15 +17989,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(38); + // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action38::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant17(__nt), __end)); - (1, 22) + let __nt = super::__action41::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) } - fn __reduce47< + fn __reduce46< 'input, >( input: &'input str, @@ -17634,23 +18006,23 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(102); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(105); assert!(__symbols.len() >= 8); let __sym7 = __pop_Variant0(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym7.2; - let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (8, 23) + let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (8, 22) } - fn __reduce48< + fn __reduce47< 'input, >( input: &'input str, @@ -17659,22 +18031,39 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(103); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(106); assert!(__symbols.len() >= 9); let __sym8 = __pop_Variant0(__symbols); let __sym7 = __pop_Variant10(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym8.2; - let __nt = super::__action103::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (9, 22) + } + fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Function+ = Function => ActionFn(62); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action62::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (9, 23) + (1, 23) } fn __reduce49< 'input, @@ -17685,15 +18074,34 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function => ActionFn(59); + // Function+ = Function+, Function => ActionFn(63); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant17(__symbols); let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action63::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 23) + } + fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Identifier = UnsignedNum => ActionFn(42); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action59::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); (1, 24) } - fn __reduce50< + fn __reduce51< 'input, >( input: &'input str, @@ -17702,17 +18110,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function+, Function => ActionFn(60); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant18(__symbols); - let __sym0 = __pop_Variant19(__symbols); + // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(43); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action60::<>(input, __sym0, __sym1); + let __end = __sym0.2; + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); - (2, 24) + (1, 24) } - fn __reduce51< + fn __reduce52< 'input, >( input: &'input str, @@ -17731,7 +18137,7 @@ mod __parse__InstructionInner { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 25) } - fn __reduce52< + fn __reduce53< 'input, >( input: &'input str, @@ -17740,14 +18146,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = => ActionFn(52); + // Instruction* = => ActionFn(55); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action52::<>(input, &__start, &__end); + let __nt = super::__action55::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (0, 26) } - fn __reduce53< + fn __reduce54< 'input, >( input: &'input str, @@ -17756,15 +18162,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = Instruction+ => ActionFn(53); + // Instruction* = Instruction+ => ActionFn(56); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action53::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 26) } - fn __reduce54< + fn __reduce55< 'input, >( input: &'input str, @@ -17773,15 +18179,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction => ActionFn(68); + // Instruction+ = Instruction => ActionFn(71); let __sym0 = __pop_Variant20(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action68::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 27) } - fn __reduce55< + fn __reduce56< 'input, >( input: &'input str, @@ -17790,17 +18196,17 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction+, Instruction => ActionFn(69); + // Instruction+ = Instruction+, Instruction => ActionFn(72); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant20(__symbols); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action69::<>(input, __sym0, __sym1); + let __nt = super::__action72::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (2, 27) } - fn __reduce56< + fn __reduce57< 'input, >( input: &'input str, @@ -17809,22 +18215,23 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "add", Type, Operand, ",", Operand => ActionFn(14); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "add", Operand, ",", Operand => ActionFn(14); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce57< + fn __reduce58< 'input, >( input: &'input str, @@ -17833,22 +18240,23 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "sub", Type, Operand, ",", Operand => ActionFn(15); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "sub", Operand, ",", Operand => ActionFn(15); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce58< + fn __reduce59< 'input, >( input: &'input str, @@ -17857,19 +18265,20 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", Type, Operand => ActionFn(16); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant4(__symbols); - let __sym2 = __pop_Variant6(__symbols); + // InstructionInner = Type, "%", Identifier, "=", Operand => ActionFn(16); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant4(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym3.2; - let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym4.2; + let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (4, 28) + (5, 28) } - fn __reduce59< + fn __reduce60< 'input, >( input: &'input str, @@ -17878,23 +18287,24 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "icmp", CmpOp, Type, Operand, ",", Operand => ActionFn(17); - assert!(__symbols.len() >= 8); - let __sym7 = __pop_Variant4(__symbols); - let __sym6 = __pop_Variant0(__symbols); - let __sym5 = __pop_Variant4(__symbols); - let __sym4 = __pop_Variant6(__symbols); - let __sym3 = __pop_Variant14(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "cmp", CmpOp, Operand, ",", Operand => ActionFn(17); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant4(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant4(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym7.2; - let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __end = __sym8.2; + let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (8, 28) + (9, 28) } - fn __reduce60< + fn __reduce61< 'input, >( input: &'input str, @@ -17905,9 +18315,9 @@ mod __parse__InstructionInner { { // InstructionInner = "condbr", Operand, Target, ",", Target => ActionFn(18); assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant27(__symbols); + let __sym4 = __pop_Variant26(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant27(__symbols); + let __sym2 = __pop_Variant26(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; @@ -17916,7 +18326,7 @@ mod __parse__InstructionInner { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (5, 28) } - fn __reduce61< + fn __reduce62< 'input, >( input: &'input str, @@ -17927,7 +18337,7 @@ mod __parse__InstructionInner { { // InstructionInner = "br", Target => ActionFn(19); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant26(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; @@ -17935,7 +18345,7 @@ mod __parse__InstructionInner { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } - fn __reduce62< + fn __reduce63< 'input, >( input: &'input str, @@ -17944,18 +18354,17 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type, Operand => ActionFn(114); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant4(__symbols); - let __sym1 = __pop_Variant6(__symbols); + // InstructionInner = "ret", Operand => ActionFn(117); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action114::<>(input, __sym0, __sym1, __sym2); + let __end = __sym1.2; + let __nt = super::__action117::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (3, 28) + (2, 28) } - fn __reduce63< + fn __reduce64< 'input, >( input: &'input str, @@ -17964,17 +18373,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type => ActionFn(115); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant6(__symbols); + // InstructionInner = "ret" => ActionFn(118); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action115::<>(input, __sym0, __sym1); + let __end = __sym0.2; + let __nt = super::__action118::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (2, 28) + (1, 28) } - fn __reduce64< + fn __reduce65< 'input, >( input: &'input str, @@ -17983,15 +18390,17 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Literal = SignedNum => ActionFn(27); - let __sym0 = __pop_Variant26(__symbols); + // Literal = SignedNum, Type => ActionFn(27); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant25(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action27::<>(input, __sym0); + let __end = __sym1.2; + let __nt = super::__action27::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant22(__nt), __end)); - (1, 29) + (2, 29) } - fn __reduce65< + fn __reduce66< 'input, >( input: &'input str, @@ -18000,15 +18409,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Module = Function+ => ActionFn(8); - let __sym0 = __pop_Variant19(__symbols); + // Literal = "true" => ActionFn(28); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 30) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) } - fn __reduce66< + fn __reduce67< 'input, >( input: &'input str, @@ -18017,15 +18426,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = Literal => ActionFn(25); - let __sym0 = __pop_Variant22(__symbols); + // Literal = "false" => ActionFn(29); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action25::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) } - fn __reduce67< + fn __reduce68< 'input, >( input: &'input str, @@ -18034,15 +18443,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = RegId => ActionFn(26); - let __sym0 = __pop_Variant25(__symbols); + // Module = Function+ => ActionFn(8); + let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action26::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (1, 30) } - fn __reduce68< + fn __reduce69< 'input, >( input: &'input str, @@ -18051,15 +18460,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = Operand => ActionFn(49); - let __sym0 = __pop_Variant4(__symbols); + // Operand = Literal => ActionFn(25); + let __sym0 = __pop_Variant22(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action49::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant24(__nt), __end)); - (1, 32) + let __nt = super::__action25::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 31) } - fn __reduce69< + fn __reduce70< 'input, >( input: &'input str, @@ -18068,14 +18477,17 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = => ActionFn(50); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action50::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant24(__nt), __end)); - (0, 32) + // Operand = "%", Identifier => ActionFn(26); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action26::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (2, 31) } - fn __reduce70< + fn __reduce71< 'input, >( input: &'input str, @@ -18084,15 +18496,31 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // RegId = r#"v(0|([1-9][0-9]*))"# => ActionFn(39); - let __sym0 = __pop_Variant0(__symbols); + // Operand? = Operand => ActionFn(52); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action39::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant25(__nt), __end)); - (1, 33) + let __nt = super::__action52::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (1, 32) } - fn __reduce71< + fn __reduce72< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Operand? = => ActionFn(53); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action53::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (0, 32) + } + fn __reduce73< 'input, >( input: &'input str, @@ -18101,17 +18529,17 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = "-", UnsignedNum => ActionFn(84); + // SignedNum = "-", UnsignedNum => ActionFn(87); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant30(__symbols); + let __sym1 = __pop_Variant29(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action84::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (2, 34) + let __nt = super::__action87::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (2, 33) } - fn __reduce72< + fn __reduce74< 'input, >( input: &'input str, @@ -18120,15 +18548,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = UnsignedNum => ActionFn(85); - let __sym0 = __pop_Variant30(__symbols); + // SignedNum = UnsignedNum => ActionFn(88); + let __sym0 = __pop_Variant29(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action85::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (1, 34) + let __nt = super::__action88::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 33) } - fn __reduce73< + fn __reduce75< 'input, >( input: &'input str, @@ -18137,17 +18565,17 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId, TargetArgList => ActionFn(116); + // Target = Identifier, TargetArgList => ActionFn(119); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action116::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (2, 35) + let __nt = super::__action119::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 34) } - fn __reduce74< + fn __reduce76< 'input, >( input: &'input str, @@ -18156,15 +18584,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId => ActionFn(117); - let __sym0 = __pop_Variant13(__symbols); + // Target = Identifier => ActionFn(120); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action117::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 35) + let __nt = super::__action120::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 34) } - fn __reduce75< + fn __reduce77< 'input, >( input: &'input str, @@ -18176,15 +18604,15 @@ mod __parse__InstructionInner { // TargetArgList = "(", Comma, ")" => ActionFn(24); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant15(__symbols); + let __sym1 = __pop_Variant14(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym2.2; let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (3, 36) + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 35) } - fn __reduce76< + fn __reduce78< 'input, >( input: &'input str, @@ -18193,15 +18621,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = TargetArgList => ActionFn(47); - let __sym0 = __pop_Variant15(__symbols); + // TargetArgList? = TargetArgList => ActionFn(50); + let __sym0 = __pop_Variant14(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action47::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (1, 37) + let __nt = super::__action50::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (1, 36) } - fn __reduce77< + fn __reduce79< 'input, >( input: &'input str, @@ -18210,14 +18638,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = => ActionFn(48); + // TargetArgList? = => ActionFn(51); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action48::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (0, 37) + let __nt = super::__action51::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 36) } - fn __reduce78< + fn __reduce80< 'input, >( input: &'input str, @@ -18226,15 +18654,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u8" => ActionFn(28); + // Type = "u8" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action28::<>(input, __sym0); + let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce79< + fn __reduce81< 'input, >( input: &'input str, @@ -18243,15 +18671,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u16" => ActionFn(29); + // Type = "u16" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action29::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce80< + fn __reduce82< 'input, >( input: &'input str, @@ -18260,15 +18688,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u32" => ActionFn(30); + // Type = "u32" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action30::<>(input, __sym0); + let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce81< + fn __reduce83< 'input, >( input: &'input str, @@ -18277,15 +18705,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u64" => ActionFn(31); + // Type = "u64" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action31::<>(input, __sym0); + let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce82< + fn __reduce84< 'input, >( input: &'input str, @@ -18294,15 +18722,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i8" => ActionFn(32); + // Type = "i8" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action32::<>(input, __sym0); + let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce83< + fn __reduce85< 'input, >( input: &'input str, @@ -18311,15 +18739,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i16" => ActionFn(33); + // Type = "i16" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce84< + fn __reduce86< 'input, >( input: &'input str, @@ -18328,15 +18756,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i32" => ActionFn(34); + // Type = "i32" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action34::<>(input, __sym0); + let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce85< + fn __reduce87< 'input, >( input: &'input str, @@ -18345,15 +18773,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i64" => ActionFn(35); + // Type = "i64" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action35::<>(input, __sym0); + let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce86< + fn __reduce88< 'input, >( input: &'input str, @@ -18362,15 +18790,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "void" => ActionFn(36); + // Type = "void" => ActionFn(38); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action36::<>(input, __sym0); + let __nt = super::__action38::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce87< + fn __reduce89< 'input, >( input: &'input str, @@ -18379,15 +18807,34 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "bool" => ActionFn(37); + // Type = "bool" => ActionFn(39); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action37::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce88< + fn __reduce90< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Type = "&", Type => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 37) + } + fn __reduce91< 'input, >( input: &'input str, @@ -18396,15 +18843,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = Type => ActionFn(61); + // Type? = Type => ActionFn(64); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action61::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (1, 39) + let __nt = super::__action64::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (1, 38) } - fn __reduce89< + fn __reduce92< 'input, >( input: &'input str, @@ -18413,14 +18860,14 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = => ActionFn(62); + // Type? = => ActionFn(65); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action62::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (0, 39) + let __nt = super::__action65::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (0, 38) } - fn __reduce90< + fn __reduce93< 'input, >( input: &'input str, @@ -18429,15 +18876,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = "0" => ActionFn(42); + // UnsignedNum = "0" => ActionFn(45); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action42::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action45::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce91< + fn __reduce94< 'input, >( input: &'input str, @@ -18446,15 +18893,15 @@ mod __parse__InstructionInner { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(43); + // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(46); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action43::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action46::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce92< + fn __reduce95< 'input, >( input: &'input str, @@ -18469,9 +18916,9 @@ mod __parse__InstructionInner { let __end = __sym0.2; let __nt = super::__action2::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); - (1, 41) + (1, 40) } - fn __reduce93< + fn __reduce96< 'input, >( input: &'input str, @@ -18481,14 +18928,14 @@ mod __parse__InstructionInner { ) -> (usize, usize) { // __CmpOp = CmpOp => ActionFn(5); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action5::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 42) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 41) } - fn __reduce94< + fn __reduce97< 'input, >( input: &'input str, @@ -18498,14 +18945,14 @@ mod __parse__InstructionInner { ) -> (usize, usize) { // __Function = Function => ActionFn(1); - let __sym0 = __pop_Variant18(__symbols); + let __sym0 = __pop_Variant17(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action1::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (1, 43) + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 42) } - fn __reduce95< + fn __reduce98< 'input, >( input: &'input str, @@ -18520,9 +18967,9 @@ mod __parse__InstructionInner { let __end = __sym0.2; let __nt = super::__action3::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 44) + (1, 43) } - fn __reduce97< + fn __reduce100< 'input, >( input: &'input str, @@ -18537,9 +18984,9 @@ mod __parse__InstructionInner { let __end = __sym0.2; let __nt = super::__action0::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 46) + (1, 45) } - fn __reduce98< + fn __reduce101< 'input, >( input: &'input str, @@ -18554,9 +19001,9 @@ mod __parse__InstructionInner { let __end = __sym0.2; let __nt = super::__action7::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 47) + (1, 46) } - fn __reduce99< + fn __reduce102< 'input, >( input: &'input str, @@ -18566,12 +19013,12 @@ mod __parse__InstructionInner { ) -> (usize, usize) { // __Target = Target => ActionFn(6); - let __sym0 = __pop_Variant27(__symbols); + let __sym0 = __pop_Variant26(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 48) + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 47) } } #[allow(unused_imports)] @@ -18582,7 +19029,7 @@ pub use self::__parse__InstructionInner::InstructionInnerParser; mod __parse__Module { use std::str::FromStr; - use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; + use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -18606,245 +19053,252 @@ mod __parse__Module { Variant10(alloc::vec::Vec), Variant11(Vec), Variant12(core::option::Option>), - Variant13(BasicBlockId), - Variant14(CmpOp), - Variant15(Vec), - Variant16(Vec), - Variant17(String), - Variant18(Function), - Variant19(alloc::vec::Vec), + Variant13(CmpOp), + Variant14(Vec), + Variant15(Vec), + Variant16(String), + Variant17(Function), + Variant18(alloc::vec::Vec), + Variant19(Identifier), Variant20(Instruction), Variant21(alloc::vec::Vec), Variant22(Literal), Variant23(Module), Variant24(core::option::Option), - Variant25(RegId), - Variant26(i64), - Variant27(Target), - Variant28(core::option::Option>), - Variant29(core::option::Option), - Variant30(u64), + Variant25(i64), + Variant26(Target), + Variant27(core::option::Option>), + Variant28(core::option::Option), + Variant29(u64), } const __ACTION: &[i8] = &[ // State 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, 3, 0, 0, 0, 0, 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, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 2 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, // State 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, // State 4 - 0, -44, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, // State 5 - 0, -46, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 0, 5, 0, -43, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 62, 0, + 0, 5, 0, -45, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, // State 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 0, 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, 63, 0, 64, 65, // State 8 - 10, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 67, 0, 64, 65, // State 9 - 0, -36, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 0, 0, 11, 0, 0, 0, 0, 12, 0, 0, 0, 0, 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 10 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, -23, 71, + 0, 5, 0, -35, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, // State 11 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, -21, 71, + 0, 5, 0, 0, 0, 0, -23, 0, 0, 0, 0, 41, 16, 0, 17, 0, 0, 0, 0, 42, 43, 44, 45, 18, 0, 0, 46, 47, 48, 49, 50, 0, -23, 0, -23, -23, // State 12 - 0, -38, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 0, -21, 0, 0, 0, 0, 41, 16, 0, 17, 0, 0, 0, 0, 42, 43, 44, 45, 18, 0, 0, 46, 47, 48, 49, 50, 0, -21, 0, -21, -21, // State 13 - 0, 0, 0, 0, 0, 0, 0, 0, 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, 5, 0, -37, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, // State 14 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, -24, 71, + 0, 5, 0, 0, 0, 0, -24, 0, 0, 0, 0, 41, 16, 0, 17, 0, 0, 0, 0, 42, 43, 44, 45, 18, 0, 0, 46, 47, 48, 49, 50, 0, -24, 0, -24, -24, // State 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, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 0, 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, 64, 65, // State 16 - 0, 0, 0, 23, 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, 84, 0, 71, + 25, 0, 0, 0, 0, 26, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 17 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 26, 62, 0, -65, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 18 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, -22, 71, + 0, 5, 0, 0, 0, 0, -22, 0, 0, 0, 0, 41, 16, 0, 17, 0, 0, 0, 0, 42, 43, 44, 45, 18, 0, 0, 46, 47, 48, 49, 50, 0, -22, 0, -22, -22, // State 19 - 0, 0, 0, 0, 0, 0, 0, 0, 26, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 27, 0, 28, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 64, 65, // State 20 - 29, 0, -75, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 64, 65, // State 21 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, + 0, 0, 27, 0, -77, 0, 0, 0, -77, 0, 0, 0, 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 22 - 0, 0, 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, 84, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 64, 65, // State 23 - 0, 0, 0, 23, 83, 0, -64, 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, 71, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 46, 47, 48, 49, 50, 0, 0, 0, 0, 0, // State 24 - 0, 0, 0, 23, 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, 84, 0, 71, + 0, 0, 0, 0, 0, 0, 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, 64, 65, // State 25 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 64, 0, // State 26 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, -39, 0, 26, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 27 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 26, 62, 0, 0, 0, 31, 0, 0, 32, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 33, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 28 - 0, -40, 0, 23, 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, 84, 0, 71, + 25, 0, 0, -41, 0, 26, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 29 - 0, 0, 0, 23, 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, 84, 0, 71, + 0, 0, 0, 0, 0, 0, 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, 64, 65, // State 30 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 44, 45, 46, 0, 0, 0, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 26, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 31 - 0, 0, 0, 23, 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, 84, 0, 71, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 32 - 0, -42, 0, 23, 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, 84, 0, 71, + 25, 0, 0, 0, 0, 26, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 33 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, + 25, 0, 0, 0, 0, 26, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 34 - 0, 0, 0, 23, 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, 84, 0, 71, + 25, 0, 0, 0, 0, 26, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 35 - 0, 0, 0, 23, 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, 84, 0, 71, + 25, 0, 0, 0, 0, 26, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 36 - 0, 0, 0, 23, 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, 84, 0, 71, + 25, 0, 0, 0, 0, 26, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, // State 37 - 0, 0, 0, 23, 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, 84, 0, 71, + 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, // State 38 - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 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, 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, // State 40 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -90, 0, 0, -90, -90, 0, -90, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, -90, -90, // State 41 - 0, -88, -88, -88, -88, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, -88, 0, -88, + -86, 0, 0, -86, -86, 0, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, -86, // State 42 - 0, -84, -84, -84, -84, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, -84, 0, -84, + -87, 0, 0, -87, -87, 0, -87, 0, -87, 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, -87, -87, // State 43 - 0, -85, -85, -85, -85, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, 0, -85, + -88, 0, 0, -88, -88, 0, -88, 0, -88, 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, -88, -88, // State 44 - 0, -86, -86, -86, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -86, 0, -86, + -85, 0, 0, -85, -85, 0, -85, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, -85, // State 45 - 0, -83, -83, -83, -83, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, -83, 0, -83, + -82, 0, 0, -82, -82, 0, -82, 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, -82, -82, -82, // State 46 - 0, -80, -80, -80, -80, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, -80, 0, -80, + -83, 0, 0, -83, -83, 0, -83, 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, -83, -83, -83, // State 47 - 0, -81, -81, -81, -81, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, -81, 0, -81, + -84, 0, 0, -84, -84, 0, -84, 0, -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, -84, -84, -84, // State 48 - 0, -82, -82, -82, -82, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82, -82, 0, -82, + -81, 0, 0, -81, -81, 0, -81, 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, -81, -81, -81, // State 49 - 0, -79, -79, -79, -79, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, -79, 0, -79, + -89, 0, 0, -89, -89, 0, -89, 0, -89, 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, -89, -89, // State 50 - 0, -87, -87, -87, -87, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, -87, 0, -87, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 - 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, -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, // State 52 - -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -91, 0, 0, -91, -91, 0, -91, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, -91, -91, // State 53 - 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, 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, // State 54 - 0, -43, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -42, 58, 0, 0, 0, 0, 0, 0, 0, 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 55 - 0, -45, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -44, 59, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, // State 57 - 0, -16, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, -16, -16, -16, -16, 0, 0, 0, -16, -16, -16, -16, -16, 0, 0, 0, 0, 0, 0, + 0, -16, 0, -16, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 0, -16, -16, -16, -16, 0, 0, 0, -16, -16, -16, -16, -16, 0, 0, 0, 0, 0, // State 58 - 0, -17, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, -17, -17, -17, -17, 0, 0, 0, -17, -17, -17, -17, -17, 0, 0, 0, 0, 0, 0, + 0, -17, 0, -17, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, -17, -17, -17, -17, 0, 0, 0, -17, -17, -17, -17, -17, 0, 0, 0, 0, 0, // State 59 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, + 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, -27, -27, // State 60 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -51, -51, -51, 0, -51, -51, -51, -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, -51, -51, // State 61 - -32, 0, -32, 0, 0, -32, -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, -94, -94, -94, -94, 0, -94, -94, -94, -94, 0, -94, 0, 0, 0, 0, 0, 0, 0, -94, -94, -94, -94, 0, 0, 0, -94, -94, -94, -94, -94, 0, 0, 0, -94, -94, // 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, -28, 0, 0, -28, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 63 - 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, -95, -95, -95, -95, 0, -95, -95, -95, -95, 0, -95, 0, 0, 0, 0, 0, 0, 0, -95, -95, -95, -95, 0, 0, 0, -95, -95, -95, -95, -95, 0, 0, 0, -95, -95, // State 64 - 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -52, -52, -52, 0, -52, -52, -52, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, -52, // State 65 - 0, -35, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -28, 0, 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, -28, // State 66 - 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 67 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, -55, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, -55, -55, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 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 68 - 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 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, 76, 0, 0, 0, 0, 0, 0, 0, 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 69 - 0, 0, 0, 0, 0, 0, 0, 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, 77, 0, 0, 0, 0, 0, 0, 0, 0, 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 70 - 0, -71, -71, 0, 0, 0, -71, -71, 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, + 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, 0, 0, 0, // State 71 - 0, -37, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -56, 0, 0, 0, 0, -56, 0, 0, 0, 0, -56, -56, 0, -56, 0, 0, 0, 0, -56, -56, -56, -56, -56, 0, 0, -56, -56, -56, -56, -56, 0, -56, 0, -56, -56, // State 72 - 0, -6, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, -6, -6, -6, -6, -6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, // State 73 - 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 74 - 0, -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, -36, 86, 0, 0, 0, 0, 0, 0, 0, 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 75 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, -56, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, -56, -56, + 0, -6, 0, -6, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, -6, -6, -6, -6, -6, 0, 0, 0, 0, 0, // State 76 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, -52, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, -52, -52, + 0, 0, 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 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 77 - 0, 0, 0, 0, 0, 0, -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, -57, 0, 0, 0, 0, -57, 0, 0, 0, 0, -57, -57, 0, -57, 0, 0, 0, 0, -57, -57, -57, -57, -57, 0, 0, -57, -57, -57, -57, -57, 0, -57, 0, -57, -57, // State 78 - 0, -67, -67, 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, -67, 0, + 0, -53, 0, 0, 0, 0, -53, 0, 0, 0, 0, -53, -53, 0, -53, 0, 0, 0, 0, -53, -53, -53, -53, -53, 0, 0, -53, -53, -53, -53, -53, 0, -53, 0, -53, -53, // State 79 - 0, -68, -68, 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, -68, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 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 80 - 0, -65, -65, 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, -65, 0, + 0, 0, 0, -70, -70, 0, -70, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -70, // State 81 - 0, -73, -73, 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, 0, + 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75, -75, -75, -75, 0, 0, 0, -75, -75, -75, -75, -75, 0, 0, 0, 0, 0, // State 82 - 0, -91, -91, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, + 0, 0, 0, -68, -68, 0, -68, 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, -68, -68, // State 83 - 0, -92, -92, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, + 0, 0, 0, -67, -67, 0, -67, 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, -67, -67, // State 84 - 0, -7, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, -7, -7, -7, -7, 0, 0, 0, -7, -7, -7, -7, -7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -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, // State 85 - 0, 0, -74, 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, 0, + 0, -7, 0, -7, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, -7, -7, -7, -7, 0, 0, 0, -7, -7, -7, -7, -7, 0, 0, 0, 0, 0, // State 86 - 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -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, // State 87 - 0, -72, -72, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 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 88 - 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -76, 0, 0, 0, -76, 0, 0, 0, 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 - 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 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 90 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, -33, -33, -33, -33, 0, 0, 0, -33, -33, -33, -33, -33, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -66, -66, 0, -66, 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, -66, -66, // State 91 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, -34, -34, -34, -34, 0, 0, 0, -34, -34, -34, -34, -34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -71, -71, 0, -71, 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, -71, -71, // State 92 - 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, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74, -74, -74, -74, 0, 0, 0, -74, -74, -74, -74, -74, 0, 0, 0, 0, 0, // State 93 - 0, -39, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 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 94 - 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 99, 0, 0, 0, 0, 0, 0, 0, 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 95 - 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 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 96 - 0, -41, 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, 0, + 0, 0, 0, -40, 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, 0, // State 97 - 0, 0, -76, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, 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 98 - 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -11, + -11, 0, 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, // State 99 - 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -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, // State 100 - 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, 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, // State 101 - 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, -12, + -32, 0, 0, 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, // State 102 - 0, 0, 0, 0, 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, + -33, 0, 0, 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, // State 103 - 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 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 104 - 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -12, 0, 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, + // State 105 + 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, 0, 0, 0, 0, + // State 106 + 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 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, -59, 0, 0, 0, 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 108 + 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 33 + integer] + __ACTION[(state as usize) * 36 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 0, // State 1 - -66, + -69, // State 2 0, // State 3 @@ -18916,13 +19370,13 @@ mod __parse__Module { // State 36 0, // State 37 - 0, + -49, // State 38 - -50, + -101, // State 39 - -98, + -50, // State 40 - -51, + 0, // State 41 0, // State 42 @@ -18962,19 +19416,19 @@ mod __parse__Module { // State 59 0, // State 60 - -48, + 0, // State 61 0, // State 62 - 0, + -47, // State 63 - -49, + 0, // State 64 0, // State 65 0, // State 66 - 0, + -48, // State 67 0, // State 68 @@ -19051,91 +19505,98 @@ mod __parse__Module { 0, // State 104 0, + // State 105 + 0, + // State 106 + 0, + // State 107 + 0, + // State 108 + 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 3 => 12, - 6 => 32, - 9 => 5, + 3 => 13, + 6 => 28, + 9 => 6, 10 => match state { - 12 => 71, - _ => 65, + 13 => 74, + _ => 68, }, 12 => match state { - 7 => 62, + 8 => 65, _ => 59, }, - 14 => 7, - 15 => 64, - 17 => match state { - 6..=7 => 8, - _ => 20, + 14 => 8, + 15 => 67, + 17 => 33, + 18 => 69, + 19 => 93, + 20 => 53, + 21 => 50, + 22 => match state { + 1 => 39, + _ => 37, }, - 18 => 30, - 19 => 66, - 20 => 92, - 21 => 53, - 22 => 51, - 23 => match state { - 1 => 40, - _ => 38, + 23 => 1, + 24 => match state { + 7..=8 => 9, + 19 => 86, + 20 => 87, + 24 => 91, + _ => 21, }, - 24 => 1, 25 => match state { - 10..=11 => 67, - _ => 75, + 11..=12 => 71, + _ => 77, }, 27 => match state { - 11 => 18, + 12 => 18, _ => 14, }, - 28 => 68, - 29 => 78, - 30 => 39, + 28 => 72, + 29 => 80, + 30 => 38, 31 => match state { - 23 => 88, - 24 => 89, - 28 => 93, - 29 => 94, - 31 => 95, - 32 => 96, - 34 => 100, - 35 => 102, - 36 => 103, - 37 => 104, - _ => 21, + 17 => 84, + 26 => 94, + 27 => 95, + 28 => 96, + 30 => 100, + 32 => 103, + 33 => 105, + 34 => 106, + 35 => 107, + 36 => 108, + _ => 22, }, - 33 => match state { - 10..=11 | 14 | 18 => 69, - 13 => 74, + 33 => 23, + 34 => match state { + 22 => 89, + 29 => 99, _ => 79, }, - 34 => 80, - 35 => match state { - 21 => 86, - 33 => 99, - _ => 77, - }, - 36 => 85, - 38 => match state { + 35 => 88, + 37 => match state { 2 => 3, - 17 => 23, - 19 => 24, - 25 => 29, - 27 => 31, - 30 => 34, - 4 => 54, - 5 => 55, - _ => 13, + 4 => 52, + 5 => 54, + 6 => 55, + 10 | 13 => 70, + 23 => 90, + _ => 73, }, - 40 => match state { - 22 => 87, - _ => 81, + 39 => match state { + 16..=17 | 26..=28 | 30 | 32..=36 => 81, + 25 => 92, + _ => 60, }, _ => 0, } } const __TERMINAL: &[&str] = &[ + r###""%""###, + r###""&""###, r###""(""###, r###"")""###, r###"",""###, @@ -19147,17 +19608,19 @@ mod __parse__Module { r###""add""###, r###""bool""###, r###""br""###, + r###""cmp""###, r###""condbr""###, r###""eq""###, + r###""false""###, r###""fun""###, r###""gt""###, r###""i16""###, r###""i32""###, r###""i64""###, r###""i8""###, - r###""icmp""###, r###""ret""###, r###""sub""###, + r###""true""###, r###""u16""###, r###""u32""###, r###""u64""###, @@ -19167,8 +19630,7 @@ mod __parse__Module { r###""}""###, r###"r#"@[a-zA-Z_][a-zA-Z0-9_]*"#"###, r###"r#"[1-9][0-9]*"#"###, - r###"r#"bb(0|([1-9][0-9]*))"#"###, - r###"r#"v(0|([1-9][0-9]*))"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, ]; fn __expected_tokens(__state: i8) -> alloc::vec::Vec { __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { @@ -19237,7 +19699,7 @@ mod __parse__Module { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 33 - 1) + __action(state, 36 - 1) } #[inline] @@ -19304,39 +19766,42 @@ mod __parse__Module { ) -> Option { match *__token { - Token(4, _) if true => Some(0), - Token(5, _) if true => Some(1), - Token(6, _) if true => Some(2), - Token(7, _) if true => Some(3), - Token(8, _) if true => Some(4), - Token(9, _) if true => Some(5), - Token(10, _) if true => Some(6), - Token(11, _) if true => Some(7), - Token(12, _) if true => Some(8), - Token(13, _) if true => Some(9), - Token(14, _) if true => Some(10), - Token(15, _) if true => Some(11), - Token(16, _) if true => Some(12), - Token(17, _) if true => Some(13), - Token(18, _) if true => Some(14), - Token(19, _) if true => Some(15), - Token(20, _) if true => Some(16), - Token(21, _) if true => Some(17), - Token(22, _) if true => Some(18), - Token(23, _) if true => Some(19), - Token(24, _) if true => Some(20), - Token(25, _) if true => Some(21), - Token(26, _) if true => Some(22), - Token(27, _) if true => Some(23), - Token(28, _) if true => Some(24), - Token(29, _) if true => Some(25), - Token(30, _) if true => Some(26), - Token(31, _) if true => Some(27), - Token(32, _) if true => Some(28), - Token(0, _) if true => Some(29), - Token(1, _) if true => Some(30), - Token(2, _) if true => Some(31), - Token(3, _) if true => Some(32), + Token(3, _) if true => Some(0), + Token(4, _) if true => Some(1), + Token(5, _) if true => Some(2), + Token(6, _) if true => Some(3), + Token(7, _) if true => Some(4), + Token(8, _) if true => Some(5), + Token(9, _) if true => Some(6), + Token(10, _) if true => Some(7), + Token(11, _) if true => Some(8), + Token(12, _) if true => Some(9), + Token(13, _) if true => Some(10), + Token(14, _) if true => Some(11), + Token(15, _) if true => Some(12), + Token(16, _) if true => Some(13), + Token(17, _) if true => Some(14), + Token(18, _) if true => Some(15), + Token(19, _) if true => Some(16), + Token(20, _) if true => Some(17), + Token(21, _) if true => Some(18), + Token(22, _) if true => Some(19), + Token(23, _) if true => Some(20), + Token(24, _) if true => Some(21), + Token(25, _) if true => Some(22), + Token(26, _) if true => Some(23), + Token(27, _) if true => Some(24), + Token(28, _) if true => Some(25), + Token(29, _) if true => Some(26), + Token(30, _) if true => Some(27), + Token(31, _) if true => Some(28), + Token(32, _) if true => Some(29), + Token(33, _) if true => Some(30), + Token(34, _) if true => Some(31), + Token(35, _) if true => Some(32), + Token(0, _) if true => Some(33), + Token(1, _) if true => Some(34), + Token(2, _) if true => Some(35), _ => None, } } @@ -19349,8 +19814,8 @@ mod __parse__Module { ) -> __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 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 => 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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -19468,7 +19933,7 @@ mod __parse__Module { } 17 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 3, nonterminal_produced: 10, } } @@ -19559,7 +20024,7 @@ mod __parse__Module { 32 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 18, + nonterminal_produced: 17, } } 33 => { @@ -19570,20 +20035,20 @@ mod __parse__Module { } 34 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 19, + states_to_pop: 0, + nonterminal_produced: 18, } } 35 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 19, + states_to_pop: 2, + nonterminal_produced: 18, } } 36 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 19, + states_to_pop: 1, + nonterminal_produced: 18, } } 37 => { @@ -19594,20 +20059,20 @@ mod __parse__Module { } 38 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 20, + states_to_pop: 0, + nonterminal_produced: 19, } } 39 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 20, + states_to_pop: 2, + nonterminal_produced: 19, } } 40 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 20, + states_to_pop: 1, + nonterminal_produced: 19, } } 41 => { @@ -19618,20 +20083,20 @@ mod __parse__Module { } 42 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 21, + states_to_pop: 0, + nonterminal_produced: 20, } } 43 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 21, + states_to_pop: 2, + nonterminal_produced: 20, } } 44 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 21, + states_to_pop: 1, + nonterminal_produced: 20, } } 45 => { @@ -19642,103 +20107,103 @@ mod __parse__Module { } 46 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 8, nonterminal_produced: 22, } } 47 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, - nonterminal_produced: 23, + states_to_pop: 9, + nonterminal_produced: 22, } } 48 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 9, + states_to_pop: 1, nonterminal_produced: 23, } } 49 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 24, + states_to_pop: 2, + nonterminal_produced: 23, } } 50 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 24, } } 51 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 25, + states_to_pop: 1, + nonterminal_produced: 24, } } 52 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 26, + states_to_pop: 2, + nonterminal_produced: 25, } } 53 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 0, nonterminal_produced: 26, } } 54 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 27, + nonterminal_produced: 26, } } 55 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 27, } } 56 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, - nonterminal_produced: 28, + states_to_pop: 2, + nonterminal_produced: 27, } } 57 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, + states_to_pop: 8, nonterminal_produced: 28, } } 58 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 4, + states_to_pop: 8, nonterminal_produced: 28, } } 59 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, + states_to_pop: 5, nonterminal_produced: 28, } } 60 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 5, + states_to_pop: 9, nonterminal_produced: 28, } } 61 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 5, nonterminal_produced: 28, } } 62 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 2, nonterminal_produced: 28, } } @@ -19751,212 +20216,230 @@ mod __parse__Module { 64 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 29, + nonterminal_produced: 28, } } 65 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 30, + states_to_pop: 2, + nonterminal_produced: 29, } } 66 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 67 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 68 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 32, + nonterminal_produced: 30, } } 69 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 32, + states_to_pop: 1, + nonterminal_produced: 31, } } 70 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 33, + states_to_pop: 2, + nonterminal_produced: 31, } } 71 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 34, + states_to_pop: 1, + nonterminal_produced: 32, } } 72 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 34, + states_to_pop: 0, + nonterminal_produced: 32, } } 73 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 74 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 75 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 36, + states_to_pop: 2, + nonterminal_produced: 34, } } 76 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 37, + nonterminal_produced: 34, } } 77 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 37, + states_to_pop: 3, + nonterminal_produced: 35, } } 78 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 36, } } 79 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 38, + states_to_pop: 0, + nonterminal_produced: 36, } } 80 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 81 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 82 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 83 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 84 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 85 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 86 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 87 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 88 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 39, + nonterminal_produced: 37, } } 89 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 39, + states_to_pop: 1, + nonterminal_produced: 37, } } 90 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 40, + states_to_pop: 2, + nonterminal_produced: 37, } } 91 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 40, + nonterminal_produced: 38, } } 92 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 41, + states_to_pop: 0, + nonterminal_produced: 38, } } 93 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 42, + nonterminal_produced: 39, } } 94 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 43, + nonterminal_produced: 39, } } 95 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 44, + nonterminal_produced: 40, } } 96 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 45, + nonterminal_produced: 41, + } + } + 97 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 42, } } - 97 => __state_machine::SimulatedReduce::Accept, 98 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 47, + nonterminal_produced: 43, } } 99 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 48, + nonterminal_produced: 44, + } + } + 100 => __state_machine::SimulatedReduce::Accept, + 101 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 46, + } + } + 102 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, } } _ => panic!("invalid reduction index {}", __reduce_index) @@ -20332,6 +20815,15 @@ mod __parse__Module { __reduce96(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 97 => { + __reduce97(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 98 => { + __reduce98(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 99 => { + __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 100 => { // __Module = Module => ActionFn(0); let __sym0 = __pop_Variant23(__symbols); let __start = __sym0.0; @@ -20339,11 +20831,11 @@ mod __parse__Module { let __nt = super::__action0::<>(input, __sym0); return Some(Ok(__nt)); } - 98 => { - __reduce98(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + 101 => { + __reduce101(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } - 99 => { - __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + 102 => { + __reduce102(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } _ => panic!("invalid action code {}", __action) }; @@ -20384,32 +20876,32 @@ mod __parse__Module { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, BasicBlockId, usize) + ) -> (usize, CmpOp, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant17< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, CmpOp, usize) + ) -> (usize, Function, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant18< + fn __pop_Variant19< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Function, usize) + ) -> (usize, Identifier, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -20457,36 +20949,25 @@ mod __parse__Module { _ => __symbol_type_mismatch() } } - fn __pop_Variant25< - 'input, - >( - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, RegId, usize) - { - match __symbols.pop() { - Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), - _ => __symbol_type_mismatch() - } - } - fn __pop_Variant17< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant27< + fn __pop_Variant26< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Target, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -20512,25 +20993,25 @@ mod __parse__Module { _ => __symbol_type_mismatch() } } - fn __pop_Variant15< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant16< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -20556,14 +21037,14 @@ mod __parse__Module { _ => __symbol_type_mismatch() } } - fn __pop_Variant19< + fn __pop_Variant18< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, alloc::vec::Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -20622,14 +21103,14 @@ mod __parse__Module { _ => __symbol_type_mismatch() } } - fn __pop_Variant29< + fn __pop_Variant28< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -20644,14 +21125,14 @@ mod __parse__Module { _ => __symbol_type_mismatch() } } - fn __pop_Variant28< + fn __pop_Variant27< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -20666,25 +21147,25 @@ mod __parse__Module { _ => __symbol_type_mismatch() } } - fn __pop_Variant26< + fn __pop_Variant25< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant30< + fn __pop_Variant29< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, u64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -20708,11 +21189,11 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = "-" => ActionFn(44); + // "-"? = "-" => ActionFn(47); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action47::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 0) } @@ -20725,10 +21206,10 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = => ActionFn(45); + // "-"? = => ActionFn(48); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action45::<>(input, &__start, &__end); + let __nt = super::__action48::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (0, 0) } @@ -20741,13 +21222,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Arg, "," => ActionFn(74); + // ( ",") = Arg, "," => ActionFn(77); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action74::<>(input, __sym0, __sym1); + let __nt = super::__action77::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 1) } @@ -20760,10 +21241,10 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(72); + // ( ",")* = => ActionFn(75); 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::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (0, 2) } @@ -20776,11 +21257,11 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(73); + // ( ",")* = ( ",")+ => ActionFn(76); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action73::<>(input, __sym0); + let __nt = super::__action76::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (1, 2) } @@ -20793,13 +21274,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Arg, "," => ActionFn(86); + // ( ",")+ = Arg, "," => ActionFn(89); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action86::<>(input, __sym0, __sym1); + let __nt = super::__action89::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -20812,14 +21293,14 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Arg, "," => ActionFn(87); + // ( ",")+ = ( ",")+, Arg, "," => ActionFn(90); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (3, 3) } @@ -20832,13 +21313,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Operand, "," => ActionFn(77); + // ( ",") = Operand, "," => ActionFn(80); 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::__action77::<>(input, __sym0, __sym1); + let __nt = super::__action80::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 4) } @@ -20851,10 +21332,10 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(75); + // ( ",")* = => ActionFn(78); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action75::<>(input, &__start, &__end); + let __nt = super::__action78::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 5) } @@ -20867,11 +21348,11 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(76); + // ( ",")* = ( ",")+ => ActionFn(79); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action76::<>(input, __sym0); + let __nt = super::__action79::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 5) } @@ -20884,13 +21365,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Operand, "," => ActionFn(90); + // ( ",")+ = Operand, "," => 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::__action90::<>(input, __sym0, __sym1); + let __nt = super::__action93::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 6) } @@ -20903,14 +21384,14 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Operand, "," => ActionFn(91); + // ( ",")+ = ( ",")+, Operand, "," => ActionFn(94); 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::__action91::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 6) } @@ -20923,13 +21404,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Type, "," => ActionFn(65); + // ( ",") = Type, "," => ActionFn(68); 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::__action65::<>(input, __sym0, __sym1); + let __nt = super::__action68::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 7) } @@ -20942,10 +21423,10 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(63); + // ( ",")* = => ActionFn(66); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action63::<>(input, &__start, &__end); + let __nt = super::__action66::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 8) } @@ -20958,11 +21439,11 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(64); + // ( ",")* = ( ",")+ => ActionFn(67); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action64::<>(input, __sym0); + let __nt = super::__action67::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 8) } @@ -20975,13 +21456,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Type, "," => ActionFn(94); + // ( ",")+ = Type, "," => ActionFn(97); 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::__action94::<>(input, __sym0, __sym1); + let __nt = super::__action97::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 9) } @@ -20994,14 +21475,14 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Type, "," => ActionFn(95); + // ( ",")+ = ( ",")+, Type, "," => ActionFn(98); 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::__action95::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (3, 9) } @@ -21014,15 +21495,16 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg = Type, RegId => ActionFn(12); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant25(__symbols); + // Arg = Type, "%", Identifier => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action12::<>(input, __sym0, __sym1); + let __end = __sym2.2; + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (2, 10) + (3, 10) } fn __reduce18< 'input, @@ -21033,11 +21515,11 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = Arg => ActionFn(70); + // Arg? = Arg => ActionFn(73); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action73::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -21050,10 +21532,10 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = => ActionFn(71); + // Arg? = => ActionFn(74); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action71::<>(input, &__start, &__end); + let __nt = super::__action74::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (0, 11) } @@ -21066,14 +21548,14 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":" => ActionFn(106); + // BasicBlock = Identifier, BasicBlockArgList, ":" => ActionFn(109); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -21086,15 +21568,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":", Instruction+ => ActionFn(107); + // BasicBlock = Identifier, BasicBlockArgList, ":", Instruction+ => ActionFn(110); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant21(__symbols); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action107::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action110::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (4, 12) } @@ -21107,13 +21589,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":" => ActionFn(108); + // BasicBlock = Identifier, ":" => ActionFn(111); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action108::<>(input, __sym0, __sym1); + let __nt = super::__action111::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (2, 12) } @@ -21126,14 +21608,14 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":", Instruction+ => ActionFn(109); + // BasicBlock = Identifier, ":", Instruction+ => ActionFn(112); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant21(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action112::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -21146,10 +21628,10 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = => ActionFn(56); + // BasicBlock* = => ActionFn(59); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action56::<>(input, &__start, &__end); + let __nt = super::__action59::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (0, 13) } @@ -21162,11 +21644,11 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = BasicBlock+ => ActionFn(57); + // BasicBlock* = BasicBlock+ => ActionFn(60); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action57::<>(input, __sym0); + let __nt = super::__action60::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 13) } @@ -21179,11 +21661,11 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock => ActionFn(66); + // BasicBlock+ = BasicBlock => ActionFn(69); let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action66::<>(input, __sym0); + let __nt = super::__action69::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 14) } @@ -21196,13 +21678,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(67); + // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(70); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant9(__symbols); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action67::<>(input, __sym0, __sym1); + let __nt = super::__action70::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 14) } @@ -21235,11 +21717,11 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = BasicBlockArgList => ActionFn(54); + // BasicBlockArgList? = BasicBlockArgList => ActionFn(57); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action54::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 16) } @@ -21252,10 +21734,10 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = => ActionFn(55); + // BasicBlockArgList? = => ActionFn(58); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action55::<>(input, &__start, &__end); + let __nt = super::__action58::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (0, 16) } @@ -21268,11 +21750,11 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockId = r#"bb(0|([1-9][0-9]*))"# => ActionFn(40); + // CmpOp = "eq" => ActionFn(21); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 17) } @@ -21284,33 +21766,16 @@ mod __parse__Module { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) - { - // CmpOp = "eq" => ActionFn(21); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action21::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) - } - fn __reduce33< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) { // CmpOp = "gt" => ActionFn(22); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } - fn __reduce34< + fn __reduce33< 'input, >( input: &'input str, @@ -21319,15 +21784,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Arg => ActionFn(98); + // Comma = Arg => ActionFn(101); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action98::<>(input, __sym0); + let __nt = super::__action101::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce35< + fn __reduce34< 'input, >( input: &'input str, @@ -21336,14 +21801,14 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(99); + // Comma = => ActionFn(102); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action99::<>(input, &__start, &__end); + let __nt = super::__action102::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (0, 19) + (0, 18) } - fn __reduce36< + fn __reduce35< 'input, >( input: &'input str, @@ -21352,17 +21817,17 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Arg => ActionFn(100); + // Comma = ( ",")+, Arg => ActionFn(103); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action100::<>(input, __sym0, __sym1); + let __nt = super::__action103::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (2, 19) + (2, 18) } - fn __reduce37< + fn __reduce36< 'input, >( input: &'input str, @@ -21371,15 +21836,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(101); + // Comma = ( ",")+ => ActionFn(104); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action101::<>(input, __sym0); + let __nt = super::__action104::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce38< + fn __reduce37< 'input, >( input: &'input str, @@ -21388,15 +21853,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Operand => ActionFn(110); + // Comma = Operand => ActionFn(113); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action110::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action113::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce39< + fn __reduce38< 'input, >( input: &'input str, @@ -21405,14 +21870,14 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(111); + // Comma = => ActionFn(114); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action111::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (0, 20) + let __nt = super::__action114::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 19) } - fn __reduce40< + fn __reduce39< 'input, >( input: &'input str, @@ -21421,17 +21886,17 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Operand => ActionFn(112); + // Comma = ( ",")+, Operand => ActionFn(115); 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::__action112::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (2, 20) + let __nt = super::__action115::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 19) } - fn __reduce41< + fn __reduce40< 'input, >( input: &'input str, @@ -21440,15 +21905,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(113); + // Comma = ( ",")+ => ActionFn(116); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action113::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action116::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce42< + fn __reduce41< 'input, >( input: &'input str, @@ -21457,15 +21922,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Type => ActionFn(118); + // Comma = Type => ActionFn(121); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action118::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action121::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce43< + fn __reduce42< 'input, >( input: &'input str, @@ -21474,14 +21939,14 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(119); + // Comma = => ActionFn(122); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action119::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (0, 21) + let __nt = super::__action122::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 20) } - fn __reduce44< + fn __reduce43< 'input, >( input: &'input str, @@ -21490,17 +21955,17 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Type => ActionFn(120); + // Comma = ( ",")+, Type => ActionFn(123); 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::__action120::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (2, 21) + let __nt = super::__action123::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 20) } - fn __reduce45< + fn __reduce44< 'input, >( input: &'input str, @@ -21509,15 +21974,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(121); + // Comma = ( ",")+ => ActionFn(124); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action121::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action124::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce46< + fn __reduce45< 'input, >( input: &'input str, @@ -21526,15 +21991,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(38); + // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action38::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant17(__nt), __end)); - (1, 22) + let __nt = super::__action41::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) } - fn __reduce47< + fn __reduce46< 'input, >( input: &'input str, @@ -21543,23 +22008,23 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(102); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(105); assert!(__symbols.len() >= 8); let __sym7 = __pop_Variant0(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym7.2; - let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (8, 23) + let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (8, 22) } - fn __reduce48< + fn __reduce47< 'input, >( input: &'input str, @@ -21568,22 +22033,39 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(103); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(106); assert!(__symbols.len() >= 9); let __sym8 = __pop_Variant0(__symbols); let __sym7 = __pop_Variant10(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym8.2; - let __nt = super::__action103::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (9, 22) + } + fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Function+ = Function => ActionFn(62); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action62::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (9, 23) + (1, 23) } fn __reduce49< 'input, @@ -21594,15 +22076,34 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function => ActionFn(59); + // Function+ = Function+, Function => ActionFn(63); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant17(__symbols); let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action63::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 23) + } + fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Identifier = UnsignedNum => ActionFn(42); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action59::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); (1, 24) } - fn __reduce50< + fn __reduce51< 'input, >( input: &'input str, @@ -21611,17 +22112,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function+, Function => ActionFn(60); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant18(__symbols); - let __sym0 = __pop_Variant19(__symbols); + // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(43); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action60::<>(input, __sym0, __sym1); + let __end = __sym0.2; + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); - (2, 24) + (1, 24) } - fn __reduce51< + fn __reduce52< 'input, >( input: &'input str, @@ -21640,7 +22139,7 @@ mod __parse__Module { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 25) } - fn __reduce52< + fn __reduce53< 'input, >( input: &'input str, @@ -21649,14 +22148,14 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = => ActionFn(52); + // Instruction* = => ActionFn(55); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action52::<>(input, &__start, &__end); + let __nt = super::__action55::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (0, 26) } - fn __reduce53< + fn __reduce54< 'input, >( input: &'input str, @@ -21665,15 +22164,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = Instruction+ => ActionFn(53); + // Instruction* = Instruction+ => ActionFn(56); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action53::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 26) } - fn __reduce54< + fn __reduce55< 'input, >( input: &'input str, @@ -21682,15 +22181,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction => ActionFn(68); + // Instruction+ = Instruction => ActionFn(71); let __sym0 = __pop_Variant20(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action68::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 27) } - fn __reduce55< + fn __reduce56< 'input, >( input: &'input str, @@ -21699,17 +22198,17 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction+, Instruction => ActionFn(69); + // Instruction+ = Instruction+, Instruction => ActionFn(72); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant20(__symbols); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action69::<>(input, __sym0, __sym1); + let __nt = super::__action72::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (2, 27) } - fn __reduce56< + fn __reduce57< 'input, >( input: &'input str, @@ -21718,22 +22217,23 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "add", Type, Operand, ",", Operand => ActionFn(14); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "add", Operand, ",", Operand => ActionFn(14); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce57< + fn __reduce58< 'input, >( input: &'input str, @@ -21742,22 +22242,23 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "sub", Type, Operand, ",", Operand => ActionFn(15); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "sub", Operand, ",", Operand => ActionFn(15); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce58< + fn __reduce59< 'input, >( input: &'input str, @@ -21766,19 +22267,20 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", Type, Operand => ActionFn(16); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant4(__symbols); - let __sym2 = __pop_Variant6(__symbols); + // InstructionInner = Type, "%", Identifier, "=", Operand => ActionFn(16); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant4(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym3.2; - let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym4.2; + let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (4, 28) + (5, 28) } - fn __reduce59< + fn __reduce60< 'input, >( input: &'input str, @@ -21787,23 +22289,24 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "icmp", CmpOp, Type, Operand, ",", Operand => ActionFn(17); - assert!(__symbols.len() >= 8); - let __sym7 = __pop_Variant4(__symbols); - let __sym6 = __pop_Variant0(__symbols); - let __sym5 = __pop_Variant4(__symbols); - let __sym4 = __pop_Variant6(__symbols); - let __sym3 = __pop_Variant14(__symbols); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "cmp", CmpOp, Operand, ",", Operand => ActionFn(17); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant4(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant4(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym7.2; - let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __end = __sym8.2; + let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (8, 28) + (9, 28) } - fn __reduce60< + fn __reduce61< 'input, >( input: &'input str, @@ -21814,9 +22317,9 @@ mod __parse__Module { { // InstructionInner = "condbr", Operand, Target, ",", Target => ActionFn(18); assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant27(__symbols); + let __sym4 = __pop_Variant26(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant27(__symbols); + let __sym2 = __pop_Variant26(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; @@ -21825,7 +22328,7 @@ mod __parse__Module { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (5, 28) } - fn __reduce61< + fn __reduce62< 'input, >( input: &'input str, @@ -21836,7 +22339,7 @@ mod __parse__Module { { // InstructionInner = "br", Target => ActionFn(19); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant26(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; @@ -21844,26 +22347,6 @@ mod __parse__Module { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } - fn __reduce62< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // InstructionInner = "ret", Type, Operand => ActionFn(114); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant4(__symbols); - let __sym1 = __pop_Variant6(__symbols); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action114::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (3, 28) - } fn __reduce63< 'input, >( @@ -21873,13 +22356,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type => ActionFn(115); + // InstructionInner = "ret", Operand => ActionFn(117); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant6(__symbols); + let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action115::<>(input, __sym0, __sym1); + let __nt = super::__action117::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } @@ -21892,13 +22375,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Literal = SignedNum => ActionFn(27); - let __sym0 = __pop_Variant26(__symbols); + // InstructionInner = "ret" => ActionFn(118); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action27::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant22(__nt), __end)); - (1, 29) + let __nt = super::__action118::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) } fn __reduce65< 'input, @@ -21909,13 +22392,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Module = Function+ => ActionFn(8); - let __sym0 = __pop_Variant19(__symbols); + // Literal = SignedNum, Type => ActionFn(27); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant25(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action8::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 30) + let __end = __sym1.2; + let __nt = super::__action27::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (2, 29) } fn __reduce66< 'input, @@ -21926,13 +22411,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = Literal => ActionFn(25); - let __sym0 = __pop_Variant22(__symbols); + // Literal = "true" => ActionFn(28); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action25::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + let __nt = super::__action28::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) } fn __reduce67< 'input, @@ -21943,13 +22428,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = RegId => ActionFn(26); - let __sym0 = __pop_Variant25(__symbols); + // Literal = "false" => ActionFn(29); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action26::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) } fn __reduce68< 'input, @@ -21960,13 +22445,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = Operand => ActionFn(49); - let __sym0 = __pop_Variant4(__symbols); + // Module = Function+ => ActionFn(8); + let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action49::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant24(__nt), __end)); - (1, 32) + let __nt = super::__action8::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (1, 30) } fn __reduce69< 'input, @@ -21977,12 +22462,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = => ActionFn(50); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action50::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant24(__nt), __end)); - (0, 32) + // Operand = Literal => ActionFn(25); + let __sym0 = __pop_Variant22(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action25::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (1, 31) } fn __reduce70< 'input, @@ -21993,13 +22479,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // RegId = r#"v(0|([1-9][0-9]*))"# => ActionFn(39); + // Operand = "%", Identifier => ActionFn(26); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action39::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant25(__nt), __end)); - (1, 33) + let __end = __sym1.2; + let __nt = super::__action26::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (2, 31) } fn __reduce71< 'input, @@ -22010,15 +22498,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = "-", UnsignedNum => ActionFn(84); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant30(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Operand? = Operand => ActionFn(52); + let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action84::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (2, 34) + let __end = __sym0.2; + let __nt = super::__action52::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (1, 32) } fn __reduce72< 'input, @@ -22029,13 +22515,12 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = UnsignedNum => ActionFn(85); - let __sym0 = __pop_Variant30(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action85::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (1, 34) + // Operand? = => ActionFn(53); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action53::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (0, 32) } fn __reduce73< 'input, @@ -22046,15 +22531,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId, TargetArgList => ActionFn(116); + // SignedNum = "-", UnsignedNum => ActionFn(87); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant29(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action116::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (2, 35) + let __nt = super::__action87::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (2, 33) } fn __reduce74< 'input, @@ -22065,13 +22550,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId => ActionFn(117); - let __sym0 = __pop_Variant13(__symbols); + // SignedNum = UnsignedNum => ActionFn(88); + let __sym0 = __pop_Variant29(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action117::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 35) + let __nt = super::__action88::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 33) } fn __reduce75< 'input, @@ -22082,16 +22567,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList = "(", Comma, ")" => ActionFn(24); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant0(__symbols); + // Target = Identifier, TargetArgList => ActionFn(119); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (3, 36) + let __end = __sym1.2; + let __nt = super::__action119::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 34) } fn __reduce76< 'input, @@ -22102,13 +22586,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = TargetArgList => ActionFn(47); - let __sym0 = __pop_Variant15(__symbols); + // Target = Identifier => ActionFn(120); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action47::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (1, 37) + let __nt = super::__action120::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 34) } fn __reduce77< 'input, @@ -22119,12 +22603,16 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = => ActionFn(48); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action48::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (0, 37) + // TargetArgList = "(", Comma, ")" => ActionFn(24); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 35) } fn __reduce78< 'input, @@ -22135,13 +22623,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u8" => ActionFn(28); - let __sym0 = __pop_Variant0(__symbols); + // TargetArgList? = TargetArgList => ActionFn(50); + let __sym0 = __pop_Variant14(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action28::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + let __nt = super::__action50::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (1, 36) } fn __reduce79< 'input, @@ -22152,13 +22640,12 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u16" => ActionFn(29); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action29::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + // TargetArgList? = => ActionFn(51); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action51::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 36) } fn __reduce80< 'input, @@ -22169,13 +22656,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u32" => ActionFn(30); + // Type = "u8" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce81< 'input, @@ -22186,13 +22673,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u64" => ActionFn(31); + // Type = "u16" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce82< 'input, @@ -22203,13 +22690,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i8" => ActionFn(32); + // Type = "u32" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce83< 'input, @@ -22220,13 +22707,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i16" => ActionFn(33); + // Type = "u64" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce84< 'input, @@ -22237,13 +22724,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i32" => ActionFn(34); + // Type = "i8" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce85< 'input, @@ -22254,13 +22741,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i64" => ActionFn(35); + // Type = "i16" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce86< 'input, @@ -22271,13 +22758,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "void" => ActionFn(36); + // Type = "i32" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce87< 'input, @@ -22288,13 +22775,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "bool" => ActionFn(37); + // Type = "i64" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } fn __reduce88< 'input, @@ -22305,13 +22792,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = Type => ActionFn(61); - let __sym0 = __pop_Variant6(__symbols); + // Type = "void" => ActionFn(38); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action61::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (1, 39) + let __nt = super::__action38::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 37) } fn __reduce89< 'input, @@ -22322,12 +22809,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = => ActionFn(62); - let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); - let __end = __start; - let __nt = super::__action62::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (0, 39) + // Type = "bool" => ActionFn(39); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action39::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 37) } fn __reduce90< 'input, @@ -22338,13 +22826,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = "0" => ActionFn(42); + // Type = "&", Type => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action42::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __end = __sym1.2; + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 37) } fn __reduce91< 'input, @@ -22355,13 +22845,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(43); - let __sym0 = __pop_Variant0(__symbols); + // Type? = Type => ActionFn(64); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action43::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action64::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (1, 38) } fn __reduce92< 'input, @@ -22372,13 +22862,12 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __BasicBlock = BasicBlock => ActionFn(2); - let __sym0 = __pop_Variant9(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action2::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant9(__nt), __end)); - (1, 41) + // Type? = => ActionFn(65); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action65::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (0, 38) } fn __reduce93< 'input, @@ -22389,13 +22878,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __CmpOp = CmpOp => ActionFn(5); - let __sym0 = __pop_Variant14(__symbols); + // UnsignedNum = "0" => ActionFn(45); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action5::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 42) + let __nt = super::__action45::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } fn __reduce94< 'input, @@ -22406,13 +22895,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Function = Function => ActionFn(1); - let __sym0 = __pop_Variant18(__symbols); + // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(46); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action1::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (1, 43) + let __nt = super::__action46::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } fn __reduce95< 'input, @@ -22423,13 +22912,13 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Instruction = Instruction => ActionFn(3); - let __sym0 = __pop_Variant20(__symbols); + // __BasicBlock = BasicBlock => ActionFn(2); + let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action3::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 44) + let __nt = super::__action2::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 40) } fn __reduce96< 'input, @@ -22440,15 +22929,15 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __InstructionInner = InstructionInner => ActionFn(4); - let __sym0 = __pop_Variant20(__symbols); + // __CmpOp = CmpOp => ActionFn(5); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action4::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 45) + let __nt = super::__action5::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 41) } - fn __reduce98< + fn __reduce97< 'input, >( input: &'input str, @@ -22457,15 +22946,66 @@ mod __parse__Module { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // __Operand = Operand => ActionFn(7); + // __Function = Function => ActionFn(1); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 42) + } + fn __reduce98< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Instruction = Instruction => ActionFn(3); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action3::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 43) + } + fn __reduce99< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __InstructionInner = InstructionInner => ActionFn(4); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action4::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 44) + } + fn __reduce101< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // __Operand = Operand => ActionFn(7); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action7::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 47) + (1, 46) } - fn __reduce99< + fn __reduce102< 'input, >( input: &'input str, @@ -22475,12 +23015,12 @@ mod __parse__Module { ) -> (usize, usize) { // __Target = Target => ActionFn(6); - let __sym0 = __pop_Variant27(__symbols); + let __sym0 = __pop_Variant26(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 48) + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 47) } } #[allow(unused_imports)] @@ -22491,7 +23031,7 @@ pub use self::__parse__Module::ModuleParser; mod __parse__Operand { use std::str::FromStr; - use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; + use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -22515,51 +23055,84 @@ mod __parse__Operand { Variant10(alloc::vec::Vec), Variant11(Vec), Variant12(core::option::Option>), - Variant13(BasicBlockId), - Variant14(CmpOp), - Variant15(Vec), - Variant16(Vec), - Variant17(String), - Variant18(Function), - Variant19(alloc::vec::Vec), + Variant13(CmpOp), + Variant14(Vec), + Variant15(Vec), + Variant16(String), + Variant17(Function), + Variant18(alloc::vec::Vec), + Variant19(Identifier), Variant20(Instruction), Variant21(alloc::vec::Vec), Variant22(Literal), Variant23(Module), Variant24(core::option::Option), - Variant25(RegId), - Variant26(i64), - Variant27(Target), - Variant28(core::option::Option>), - Variant29(core::option::Option), - Variant30(u64), + Variant25(i64), + Variant26(Target), + Variant27(core::option::Option>), + Variant28(core::option::Option), + Variant29(u64), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 2, 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, 9, 0, 10, + 3, 0, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, // State 1 - 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, 9, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 0, 0, 0, 19, 20, 21, 22, 23, 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, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 26, // State 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, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, // State 4 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 0, 0, 0, 19, 20, 21, 22, 23, 0, 0, 0, 0, 0, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75, -75, -75, -75, 0, 0, 0, -75, -75, -75, -75, -75, 0, 0, 0, 0, 0, // State 8 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, -94, -94, -94, -94, 0, 0, 0, -94, -94, -94, -94, -94, 0, 0, 0, 0, 0, // State 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, 0, 0, 0, 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 11 + 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, -95, -95, -95, -95, 0, 0, 0, -95, -95, -95, -95, -95, 0, 0, 0, 0, 0, + // State 12 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 13 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 16 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 17 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, + // State 19 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, 0, 0, 0, 0, + // State 21 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 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, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 26 + 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74, -74, -74, -74, 0, 0, 0, -74, -74, -74, -74, -74, 0, 0, 0, 0, 0, + // State 27 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 33 + integer] + __ACTION[(state as usize) * 36 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -22567,38 +23140,79 @@ mod __parse__Operand { // State 1 0, // State 2 - -67, + 0, // State 3 - -99, + 0, // State 4 - -68, + 0, // State 5 - -65, + -70, // State 6 - -73, + -102, // State 7 - -91, + 0, // State 8 - -92, + -94, // State 9 - -71, + -68, // State 10 - -72, + -67, + // State 11 + -95, + // State 12 + -66, + // State 13 + -90, + // State 14 + -86, + // State 15 + -87, + // State 16 + -88, + // State 17 + -85, + // State 18 + -82, + // State 19 + -83, + // State 20 + -84, + // State 21 + -81, + // State 22 + -89, + // State 23 + -71, + // State 24 + -51, + // State 25 + -52, + // State 26 + 0, + // State 27 + -91, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 29 => 2, - 31 => 3, - 33 => 4, - 34 => 5, - 40 => match state { - 1 => 10, - _ => 6, + 24 => 23, + 29 => 5, + 31 => 6, + 33 => 1, + 37 => match state { + 4 => 27, + _ => 12, + }, + 39 => match state { + 2 => 24, + 3 => 26, + _ => 7, }, _ => 0, } } const __TERMINAL: &[&str] = &[ + r###""%""###, + r###""&""###, r###""(""###, r###"")""###, r###"",""###, @@ -22610,17 +23224,19 @@ mod __parse__Operand { r###""add""###, r###""bool""###, r###""br""###, + r###""cmp""###, r###""condbr""###, r###""eq""###, + r###""false""###, r###""fun""###, r###""gt""###, r###""i16""###, r###""i32""###, r###""i64""###, r###""i8""###, - r###""icmp""###, r###""ret""###, r###""sub""###, + r###""true""###, r###""u16""###, r###""u32""###, r###""u64""###, @@ -22630,8 +23246,7 @@ mod __parse__Operand { r###""}""###, r###"r#"@[a-zA-Z_][a-zA-Z0-9_]*"#"###, r###"r#"[1-9][0-9]*"#"###, - r###"r#"bb(0|([1-9][0-9]*))"#"###, - r###"r#"v(0|([1-9][0-9]*))"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, ]; fn __expected_tokens(__state: i8) -> alloc::vec::Vec { __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { @@ -22700,7 +23315,7 @@ mod __parse__Operand { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 33 - 1) + __action(state, 36 - 1) } #[inline] @@ -22767,39 +23382,42 @@ mod __parse__Operand { ) -> Option { match *__token { - Token(4, _) if true => Some(0), - Token(5, _) if true => Some(1), - Token(6, _) if true => Some(2), - Token(7, _) if true => Some(3), - Token(8, _) if true => Some(4), - Token(9, _) if true => Some(5), - Token(10, _) if true => Some(6), - Token(11, _) if true => Some(7), - Token(12, _) if true => Some(8), - Token(13, _) if true => Some(9), - Token(14, _) if true => Some(10), - Token(15, _) if true => Some(11), - Token(16, _) if true => Some(12), - Token(17, _) if true => Some(13), - Token(18, _) if true => Some(14), - Token(19, _) if true => Some(15), - Token(20, _) if true => Some(16), - Token(21, _) if true => Some(17), - Token(22, _) if true => Some(18), - Token(23, _) if true => Some(19), - Token(24, _) if true => Some(20), - Token(25, _) if true => Some(21), - Token(26, _) if true => Some(22), - Token(27, _) if true => Some(23), - Token(28, _) if true => Some(24), - Token(29, _) if true => Some(25), - Token(30, _) if true => Some(26), - Token(31, _) if true => Some(27), - Token(32, _) if true => Some(28), - Token(0, _) if true => Some(29), - Token(1, _) if true => Some(30), - Token(2, _) if true => Some(31), - Token(3, _) if true => Some(32), + Token(3, _) if true => Some(0), + Token(4, _) if true => Some(1), + Token(5, _) if true => Some(2), + Token(6, _) if true => Some(3), + Token(7, _) if true => Some(4), + Token(8, _) if true => Some(5), + Token(9, _) if true => Some(6), + Token(10, _) if true => Some(7), + Token(11, _) if true => Some(8), + Token(12, _) if true => Some(9), + Token(13, _) if true => Some(10), + Token(14, _) if true => Some(11), + Token(15, _) if true => Some(12), + Token(16, _) if true => Some(13), + Token(17, _) if true => Some(14), + Token(18, _) if true => Some(15), + Token(19, _) if true => Some(16), + Token(20, _) if true => Some(17), + Token(21, _) if true => Some(18), + Token(22, _) if true => Some(19), + Token(23, _) if true => Some(20), + Token(24, _) if true => Some(21), + Token(25, _) if true => Some(22), + Token(26, _) if true => Some(23), + Token(27, _) if true => Some(24), + Token(28, _) if true => Some(25), + Token(29, _) if true => Some(26), + Token(30, _) if true => Some(27), + Token(31, _) if true => Some(28), + Token(32, _) if true => Some(29), + Token(33, _) if true => Some(30), + Token(34, _) if true => Some(31), + Token(35, _) if true => Some(32), + Token(0, _) if true => Some(33), + Token(1, _) if true => Some(34), + Token(2, _) if true => Some(35), _ => None, } } @@ -22812,8 +23430,8 @@ mod __parse__Operand { ) -> __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 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 => 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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -22931,7 +23549,7 @@ mod __parse__Operand { } 17 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 3, nonterminal_produced: 10, } } @@ -23022,7 +23640,7 @@ mod __parse__Operand { 32 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 18, + nonterminal_produced: 17, } } 33 => { @@ -23033,20 +23651,20 @@ mod __parse__Operand { } 34 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 19, + states_to_pop: 0, + nonterminal_produced: 18, } } 35 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 19, + states_to_pop: 2, + nonterminal_produced: 18, } } 36 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 19, + states_to_pop: 1, + nonterminal_produced: 18, } } 37 => { @@ -23057,20 +23675,20 @@ mod __parse__Operand { } 38 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 20, + states_to_pop: 0, + nonterminal_produced: 19, } } 39 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 20, + states_to_pop: 2, + nonterminal_produced: 19, } } 40 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 20, + states_to_pop: 1, + nonterminal_produced: 19, } } 41 => { @@ -23081,20 +23699,20 @@ mod __parse__Operand { } 42 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 21, + states_to_pop: 0, + nonterminal_produced: 20, } } 43 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 21, + states_to_pop: 2, + nonterminal_produced: 20, } } 44 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 21, + states_to_pop: 1, + nonterminal_produced: 20, } } 45 => { @@ -23105,103 +23723,103 @@ mod __parse__Operand { } 46 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 8, nonterminal_produced: 22, } } 47 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, - nonterminal_produced: 23, + states_to_pop: 9, + nonterminal_produced: 22, } } 48 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 9, + states_to_pop: 1, nonterminal_produced: 23, } } 49 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 24, + states_to_pop: 2, + nonterminal_produced: 23, } } 50 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 24, } } 51 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 25, + states_to_pop: 1, + nonterminal_produced: 24, } } 52 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 26, + states_to_pop: 2, + nonterminal_produced: 25, } } 53 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 0, nonterminal_produced: 26, } } 54 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 27, + nonterminal_produced: 26, } } 55 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 27, } } 56 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, - nonterminal_produced: 28, + states_to_pop: 2, + nonterminal_produced: 27, } } 57 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, + states_to_pop: 8, nonterminal_produced: 28, } } 58 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 4, + states_to_pop: 8, nonterminal_produced: 28, } } 59 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, + states_to_pop: 5, nonterminal_produced: 28, } } 60 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 5, + states_to_pop: 9, nonterminal_produced: 28, } } 61 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 5, nonterminal_produced: 28, } } 62 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 2, nonterminal_produced: 28, } } @@ -23214,212 +23832,230 @@ mod __parse__Operand { 64 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 29, + nonterminal_produced: 28, } } 65 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 30, + states_to_pop: 2, + nonterminal_produced: 29, } } 66 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 67 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 68 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 32, + nonterminal_produced: 30, } } 69 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 32, + states_to_pop: 1, + nonterminal_produced: 31, } } 70 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 33, + states_to_pop: 2, + nonterminal_produced: 31, } } 71 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 34, + states_to_pop: 1, + nonterminal_produced: 32, } } 72 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 34, + states_to_pop: 0, + nonterminal_produced: 32, } } 73 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 74 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 75 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 36, + states_to_pop: 2, + nonterminal_produced: 34, } } 76 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 37, + nonterminal_produced: 34, } } 77 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 37, + states_to_pop: 3, + nonterminal_produced: 35, } } 78 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 36, } } 79 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 38, + states_to_pop: 0, + nonterminal_produced: 36, } } 80 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 81 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 82 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 83 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 84 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 85 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 86 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 87 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 88 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 39, + nonterminal_produced: 37, } } 89 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 39, + states_to_pop: 1, + nonterminal_produced: 37, } } 90 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 40, + states_to_pop: 2, + nonterminal_produced: 37, } } 91 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 40, + nonterminal_produced: 38, } } 92 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 41, + states_to_pop: 0, + nonterminal_produced: 38, } } 93 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 42, + nonterminal_produced: 39, } } 94 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 43, + nonterminal_produced: 39, } } 95 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 44, + nonterminal_produced: 40, } } 96 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 45, + nonterminal_produced: 41, } } 97 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 46, + nonterminal_produced: 42, + } + } + 98 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 43, } } - 98 => __state_machine::SimulatedReduce::Accept, 99 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 48, + nonterminal_produced: 44, + } + } + 100 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 45, + } + } + 101 => __state_machine::SimulatedReduce::Accept, + 102 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, } } _ => panic!("invalid reduction index {}", __reduce_index) @@ -23798,6 +24434,15 @@ mod __parse__Operand { __reduce97(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 98 => { + __reduce98(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 99 => { + __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 100 => { + __reduce100(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 101 => { // __Operand = Operand => ActionFn(7); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; @@ -23805,8 +24450,8 @@ mod __parse__Operand { let __nt = super::__action7::<>(input, __sym0); return Some(Ok(__nt)); } - 99 => { - __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + 102 => { + __reduce102(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } _ => panic!("invalid action code {}", __action) }; @@ -23847,32 +24492,32 @@ mod __parse__Operand { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, BasicBlockId, usize) + ) -> (usize, CmpOp, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant17< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, CmpOp, usize) + ) -> (usize, Function, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant18< + fn __pop_Variant19< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Function, usize) + ) -> (usize, Identifier, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -23920,36 +24565,25 @@ mod __parse__Operand { _ => __symbol_type_mismatch() } } - fn __pop_Variant25< - 'input, - >( - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, RegId, usize) - { - match __symbols.pop() { - Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), - _ => __symbol_type_mismatch() - } - } - fn __pop_Variant17< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant27< + fn __pop_Variant26< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Target, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -23975,25 +24609,25 @@ mod __parse__Operand { _ => __symbol_type_mismatch() } } - fn __pop_Variant15< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant16< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -24019,14 +24653,14 @@ mod __parse__Operand { _ => __symbol_type_mismatch() } } - fn __pop_Variant19< + fn __pop_Variant18< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, alloc::vec::Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -24085,14 +24719,14 @@ mod __parse__Operand { _ => __symbol_type_mismatch() } } - fn __pop_Variant29< + fn __pop_Variant28< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -24107,14 +24741,14 @@ mod __parse__Operand { _ => __symbol_type_mismatch() } } - fn __pop_Variant28< + fn __pop_Variant27< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -24129,25 +24763,25 @@ mod __parse__Operand { _ => __symbol_type_mismatch() } } - fn __pop_Variant26< + fn __pop_Variant25< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant30< + fn __pop_Variant29< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, u64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -24171,11 +24805,11 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = "-" => ActionFn(44); + // "-"? = "-" => ActionFn(47); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action47::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 0) } @@ -24188,10 +24822,10 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = => ActionFn(45); + // "-"? = => ActionFn(48); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action45::<>(input, &__start, &__end); + let __nt = super::__action48::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (0, 0) } @@ -24204,13 +24838,13 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Arg, "," => ActionFn(74); + // ( ",") = Arg, "," => ActionFn(77); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action74::<>(input, __sym0, __sym1); + let __nt = super::__action77::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 1) } @@ -24223,10 +24857,10 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(72); + // ( ",")* = => ActionFn(75); 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::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (0, 2) } @@ -24239,11 +24873,11 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(73); + // ( ",")* = ( ",")+ => ActionFn(76); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action73::<>(input, __sym0); + let __nt = super::__action76::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (1, 2) } @@ -24256,13 +24890,13 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Arg, "," => ActionFn(86); + // ( ",")+ = Arg, "," => ActionFn(89); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action86::<>(input, __sym0, __sym1); + let __nt = super::__action89::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -24275,14 +24909,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Arg, "," => ActionFn(87); + // ( ",")+ = ( ",")+, Arg, "," => ActionFn(90); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (3, 3) } @@ -24295,13 +24929,13 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Operand, "," => ActionFn(77); + // ( ",") = Operand, "," => ActionFn(80); 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::__action77::<>(input, __sym0, __sym1); + let __nt = super::__action80::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 4) } @@ -24314,10 +24948,10 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(75); + // ( ",")* = => ActionFn(78); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action75::<>(input, &__start, &__end); + let __nt = super::__action78::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 5) } @@ -24330,11 +24964,11 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(76); + // ( ",")* = ( ",")+ => ActionFn(79); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action76::<>(input, __sym0); + let __nt = super::__action79::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 5) } @@ -24347,13 +24981,13 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Operand, "," => ActionFn(90); + // ( ",")+ = Operand, "," => 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::__action90::<>(input, __sym0, __sym1); + let __nt = super::__action93::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 6) } @@ -24366,14 +25000,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Operand, "," => ActionFn(91); + // ( ",")+ = ( ",")+, Operand, "," => ActionFn(94); 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::__action91::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 6) } @@ -24386,13 +25020,13 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Type, "," => ActionFn(65); + // ( ",") = Type, "," => ActionFn(68); 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::__action65::<>(input, __sym0, __sym1); + let __nt = super::__action68::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 7) } @@ -24405,10 +25039,10 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(63); + // ( ",")* = => ActionFn(66); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action63::<>(input, &__start, &__end); + let __nt = super::__action66::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 8) } @@ -24421,11 +25055,11 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(64); + // ( ",")* = ( ",")+ => ActionFn(67); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action64::<>(input, __sym0); + let __nt = super::__action67::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 8) } @@ -24438,13 +25072,13 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Type, "," => ActionFn(94); + // ( ",")+ = Type, "," => ActionFn(97); 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::__action94::<>(input, __sym0, __sym1); + let __nt = super::__action97::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 9) } @@ -24457,14 +25091,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Type, "," => ActionFn(95); + // ( ",")+ = ( ",")+, Type, "," => ActionFn(98); 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::__action95::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (3, 9) } @@ -24477,15 +25111,16 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg = Type, RegId => ActionFn(12); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant25(__symbols); + // Arg = Type, "%", Identifier => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action12::<>(input, __sym0, __sym1); + let __end = __sym2.2; + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (2, 10) + (3, 10) } fn __reduce18< 'input, @@ -24496,11 +25131,11 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = Arg => ActionFn(70); + // Arg? = Arg => ActionFn(73); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action73::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -24513,10 +25148,10 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = => ActionFn(71); + // Arg? = => ActionFn(74); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action71::<>(input, &__start, &__end); + let __nt = super::__action74::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (0, 11) } @@ -24529,14 +25164,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":" => ActionFn(106); + // BasicBlock = Identifier, BasicBlockArgList, ":" => ActionFn(109); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -24549,15 +25184,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":", Instruction+ => ActionFn(107); + // BasicBlock = Identifier, BasicBlockArgList, ":", Instruction+ => ActionFn(110); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant21(__symbols); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action107::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action110::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (4, 12) } @@ -24570,13 +25205,13 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":" => ActionFn(108); + // BasicBlock = Identifier, ":" => ActionFn(111); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action108::<>(input, __sym0, __sym1); + let __nt = super::__action111::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (2, 12) } @@ -24589,14 +25224,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":", Instruction+ => ActionFn(109); + // BasicBlock = Identifier, ":", Instruction+ => ActionFn(112); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant21(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action112::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -24609,10 +25244,10 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = => ActionFn(56); + // BasicBlock* = => ActionFn(59); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action56::<>(input, &__start, &__end); + let __nt = super::__action59::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (0, 13) } @@ -24625,11 +25260,11 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = BasicBlock+ => ActionFn(57); + // BasicBlock* = BasicBlock+ => ActionFn(60); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action57::<>(input, __sym0); + let __nt = super::__action60::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 13) } @@ -24642,11 +25277,11 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock => ActionFn(66); + // BasicBlock+ = BasicBlock => ActionFn(69); let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action66::<>(input, __sym0); + let __nt = super::__action69::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 14) } @@ -24659,13 +25294,13 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(67); + // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(70); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant9(__symbols); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action67::<>(input, __sym0, __sym1); + let __nt = super::__action70::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 14) } @@ -24698,11 +25333,11 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = BasicBlockArgList => ActionFn(54); + // BasicBlockArgList? = BasicBlockArgList => ActionFn(57); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action54::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 16) } @@ -24715,10 +25350,10 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = => ActionFn(55); + // BasicBlockArgList? = => ActionFn(58); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action55::<>(input, &__start, &__end); + let __nt = super::__action58::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (0, 16) } @@ -24731,11 +25366,11 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockId = r#"bb(0|([1-9][0-9]*))"# => ActionFn(40); + // CmpOp = "eq" => ActionFn(21); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 17) } @@ -24747,33 +25382,16 @@ mod __parse__Operand { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) - { - // CmpOp = "eq" => ActionFn(21); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action21::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) - } - fn __reduce33< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) { // CmpOp = "gt" => ActionFn(22); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } - fn __reduce34< + fn __reduce33< 'input, >( input: &'input str, @@ -24782,15 +25400,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Arg => ActionFn(98); + // Comma = Arg => ActionFn(101); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action98::<>(input, __sym0); + let __nt = super::__action101::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce35< + fn __reduce34< 'input, >( input: &'input str, @@ -24799,14 +25417,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(99); + // Comma = => ActionFn(102); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action99::<>(input, &__start, &__end); + let __nt = super::__action102::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (0, 19) + (0, 18) } - fn __reduce36< + fn __reduce35< 'input, >( input: &'input str, @@ -24815,17 +25433,17 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Arg => ActionFn(100); + // Comma = ( ",")+, Arg => ActionFn(103); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action100::<>(input, __sym0, __sym1); + let __nt = super::__action103::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (2, 19) + (2, 18) } - fn __reduce37< + fn __reduce36< 'input, >( input: &'input str, @@ -24834,15 +25452,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(101); + // Comma = ( ",")+ => ActionFn(104); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action101::<>(input, __sym0); + let __nt = super::__action104::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce38< + fn __reduce37< 'input, >( input: &'input str, @@ -24851,15 +25469,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Operand => ActionFn(110); + // Comma = Operand => ActionFn(113); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action110::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action113::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce39< + fn __reduce38< 'input, >( input: &'input str, @@ -24868,14 +25486,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(111); + // Comma = => ActionFn(114); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action111::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (0, 20) + let __nt = super::__action114::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 19) } - fn __reduce40< + fn __reduce39< 'input, >( input: &'input str, @@ -24884,17 +25502,17 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Operand => ActionFn(112); + // Comma = ( ",")+, Operand => ActionFn(115); 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::__action112::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (2, 20) + let __nt = super::__action115::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 19) } - fn __reduce41< + fn __reduce40< 'input, >( input: &'input str, @@ -24903,15 +25521,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(113); + // Comma = ( ",")+ => ActionFn(116); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action113::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action116::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce42< + fn __reduce41< 'input, >( input: &'input str, @@ -24920,15 +25538,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Type => ActionFn(118); + // Comma = Type => ActionFn(121); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action118::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action121::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce43< + fn __reduce42< 'input, >( input: &'input str, @@ -24937,14 +25555,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(119); + // Comma = => ActionFn(122); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action119::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (0, 21) + let __nt = super::__action122::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 20) } - fn __reduce44< + fn __reduce43< 'input, >( input: &'input str, @@ -24953,17 +25571,17 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Type => ActionFn(120); + // Comma = ( ",")+, Type => ActionFn(123); 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::__action120::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (2, 21) + let __nt = super::__action123::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 20) } - fn __reduce45< + fn __reduce44< 'input, >( input: &'input str, @@ -24972,15 +25590,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(121); + // Comma = ( ",")+ => ActionFn(124); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action121::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action124::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce46< + fn __reduce45< 'input, >( input: &'input str, @@ -24989,15 +25607,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(38); + // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action38::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant17(__nt), __end)); - (1, 22) + let __nt = super::__action41::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) } - fn __reduce47< + fn __reduce46< 'input, >( input: &'input str, @@ -25006,23 +25624,23 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(102); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(105); assert!(__symbols.len() >= 8); let __sym7 = __pop_Variant0(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym7.2; - let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (8, 23) + let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (8, 22) } - fn __reduce48< + fn __reduce47< 'input, >( input: &'input str, @@ -25031,22 +25649,39 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(103); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(106); assert!(__symbols.len() >= 9); let __sym8 = __pop_Variant0(__symbols); let __sym7 = __pop_Variant10(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym8.2; - let __nt = super::__action103::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (9, 23) + let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (9, 22) + } + fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Function+ = Function => ActionFn(62); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action62::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 23) } fn __reduce49< 'input, @@ -25057,15 +25692,34 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function => ActionFn(59); + // Function+ = Function+, Function => ActionFn(63); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant17(__symbols); let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action63::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 23) + } + fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Identifier = UnsignedNum => ActionFn(42); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action59::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); (1, 24) } - fn __reduce50< + fn __reduce51< 'input, >( input: &'input str, @@ -25074,17 +25728,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function+, Function => ActionFn(60); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant18(__symbols); - let __sym0 = __pop_Variant19(__symbols); + // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(43); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action60::<>(input, __sym0, __sym1); + let __end = __sym0.2; + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); - (2, 24) + (1, 24) } - fn __reduce51< + fn __reduce52< 'input, >( input: &'input str, @@ -25103,7 +25755,7 @@ mod __parse__Operand { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 25) } - fn __reduce52< + fn __reduce53< 'input, >( input: &'input str, @@ -25112,14 +25764,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = => ActionFn(52); + // Instruction* = => ActionFn(55); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action52::<>(input, &__start, &__end); + let __nt = super::__action55::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (0, 26) } - fn __reduce53< + fn __reduce54< 'input, >( input: &'input str, @@ -25128,15 +25780,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = Instruction+ => ActionFn(53); + // Instruction* = Instruction+ => ActionFn(56); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action53::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 26) } - fn __reduce54< + fn __reduce55< 'input, >( input: &'input str, @@ -25145,15 +25797,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction => ActionFn(68); + // Instruction+ = Instruction => ActionFn(71); let __sym0 = __pop_Variant20(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action68::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 27) } - fn __reduce55< + fn __reduce56< 'input, >( input: &'input str, @@ -25162,17 +25814,17 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction+, Instruction => ActionFn(69); + // Instruction+ = Instruction+, Instruction => ActionFn(72); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant20(__symbols); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action69::<>(input, __sym0, __sym1); + let __nt = super::__action72::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (2, 27) } - fn __reduce56< + fn __reduce57< 'input, >( input: &'input str, @@ -25181,22 +25833,23 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "add", Type, Operand, ",", Operand => ActionFn(14); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "add", Operand, ",", Operand => ActionFn(14); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce57< + fn __reduce58< 'input, >( input: &'input str, @@ -25205,22 +25858,23 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "sub", Type, Operand, ",", Operand => ActionFn(15); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "sub", Operand, ",", Operand => ActionFn(15); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce58< + fn __reduce59< 'input, >( input: &'input str, @@ -25229,19 +25883,20 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", Type, Operand => ActionFn(16); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant4(__symbols); - let __sym2 = __pop_Variant6(__symbols); + // InstructionInner = Type, "%", Identifier, "=", Operand => ActionFn(16); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant4(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym3.2; - let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym4.2; + let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (4, 28) + (5, 28) } - fn __reduce59< + fn __reduce60< 'input, >( input: &'input str, @@ -25250,23 +25905,24 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "icmp", CmpOp, Type, Operand, ",", Operand => ActionFn(17); - assert!(__symbols.len() >= 8); - let __sym7 = __pop_Variant4(__symbols); - let __sym6 = __pop_Variant0(__symbols); - let __sym5 = __pop_Variant4(__symbols); - let __sym4 = __pop_Variant6(__symbols); - let __sym3 = __pop_Variant14(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "cmp", CmpOp, Operand, ",", Operand => ActionFn(17); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant4(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant4(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym7.2; - let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __end = __sym8.2; + let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (8, 28) + (9, 28) } - fn __reduce60< + fn __reduce61< 'input, >( input: &'input str, @@ -25277,9 +25933,9 @@ mod __parse__Operand { { // InstructionInner = "condbr", Operand, Target, ",", Target => ActionFn(18); assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant27(__symbols); + let __sym4 = __pop_Variant26(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant27(__symbols); + let __sym2 = __pop_Variant26(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; @@ -25288,7 +25944,7 @@ mod __parse__Operand { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (5, 28) } - fn __reduce61< + fn __reduce62< 'input, >( input: &'input str, @@ -25299,7 +25955,7 @@ mod __parse__Operand { { // InstructionInner = "br", Target => ActionFn(19); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant26(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; @@ -25307,7 +25963,7 @@ mod __parse__Operand { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } - fn __reduce62< + fn __reduce63< 'input, >( input: &'input str, @@ -25316,18 +25972,17 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type, Operand => ActionFn(114); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant4(__symbols); - let __sym1 = __pop_Variant6(__symbols); + // InstructionInner = "ret", Operand => ActionFn(117); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action114::<>(input, __sym0, __sym1, __sym2); + let __end = __sym1.2; + let __nt = super::__action117::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (3, 28) + (2, 28) } - fn __reduce63< + fn __reduce64< 'input, >( input: &'input str, @@ -25336,17 +25991,34 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type => ActionFn(115); + // InstructionInner = "ret" => ActionFn(118); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action118::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) + } + fn __reduce65< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Literal = SignedNum, Type => ActionFn(27); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant6(__symbols); - let __sym0 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant25(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action115::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (2, 28) + let __nt = super::__action27::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (2, 29) } - fn __reduce64< + fn __reduce66< 'input, >( input: &'input str, @@ -25355,15 +26027,32 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Literal = SignedNum => ActionFn(27); - let __sym0 = __pop_Variant26(__symbols); + // Literal = "true" => 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::Variant22(__nt), __end)); (1, 29) } - fn __reduce65< + fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Literal = "false" => ActionFn(29); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) + } + fn __reduce68< 'input, >( input: &'input str, @@ -25373,14 +26062,14 @@ mod __parse__Operand { ) -> (usize, usize) { // Module = Function+ => ActionFn(8); - let __sym0 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action8::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); (1, 30) } - fn __reduce66< + fn __reduce69< 'input, >( input: &'input str, @@ -25397,7 +26086,7 @@ mod __parse__Operand { __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 31) } - fn __reduce67< + fn __reduce70< 'input, >( input: &'input str, @@ -25406,15 +26095,17 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = RegId => ActionFn(26); - let __sym0 = __pop_Variant25(__symbols); + // Operand = "%", Identifier => ActionFn(26); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action26::<>(input, __sym0); + let __end = __sym1.2; + let __nt = super::__action26::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + (2, 31) } - fn __reduce68< + fn __reduce71< 'input, >( input: &'input str, @@ -25423,15 +26114,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = Operand => ActionFn(49); + // Operand? = Operand => ActionFn(52); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action49::<>(input, __sym0); + let __nt = super::__action52::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant24(__nt), __end)); (1, 32) } - fn __reduce69< + fn __reduce72< 'input, >( input: &'input str, @@ -25440,31 +26131,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = => ActionFn(50); + // Operand? = => ActionFn(53); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action50::<>(input, &__start, &__end); + let __nt = super::__action53::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant24(__nt), __end)); (0, 32) } - fn __reduce70< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // RegId = r#"v(0|([1-9][0-9]*))"# => ActionFn(39); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action39::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant25(__nt), __end)); - (1, 33) - } - fn __reduce71< + fn __reduce73< 'input, >( input: &'input str, @@ -25473,17 +26147,17 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = "-", UnsignedNum => ActionFn(84); + // SignedNum = "-", UnsignedNum => ActionFn(87); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant30(__symbols); + let __sym1 = __pop_Variant29(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action84::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (2, 34) + let __nt = super::__action87::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (2, 33) } - fn __reduce72< + fn __reduce74< 'input, >( input: &'input str, @@ -25492,15 +26166,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = UnsignedNum => ActionFn(85); - let __sym0 = __pop_Variant30(__symbols); + // SignedNum = UnsignedNum => ActionFn(88); + let __sym0 = __pop_Variant29(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action85::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (1, 34) + let __nt = super::__action88::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 33) } - fn __reduce73< + fn __reduce75< 'input, >( input: &'input str, @@ -25509,17 +26183,17 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId, TargetArgList => ActionFn(116); + // Target = Identifier, TargetArgList => ActionFn(119); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action116::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (2, 35) + let __nt = super::__action119::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 34) } - fn __reduce74< + fn __reduce76< 'input, >( input: &'input str, @@ -25528,15 +26202,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId => ActionFn(117); - let __sym0 = __pop_Variant13(__symbols); + // Target = Identifier => ActionFn(120); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action117::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 35) + let __nt = super::__action120::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 34) } - fn __reduce75< + fn __reduce77< 'input, >( input: &'input str, @@ -25548,15 +26222,15 @@ mod __parse__Operand { // TargetArgList = "(", Comma, ")" => ActionFn(24); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant15(__symbols); + let __sym1 = __pop_Variant14(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym2.2; let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (3, 36) + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 35) } - fn __reduce76< + fn __reduce78< 'input, >( input: &'input str, @@ -25565,15 +26239,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = TargetArgList => ActionFn(47); - let __sym0 = __pop_Variant15(__symbols); + // TargetArgList? = TargetArgList => ActionFn(50); + let __sym0 = __pop_Variant14(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action47::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (1, 37) + let __nt = super::__action50::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (1, 36) } - fn __reduce77< + fn __reduce79< 'input, >( input: &'input str, @@ -25582,14 +26256,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = => ActionFn(48); + // TargetArgList? = => ActionFn(51); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action48::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (0, 37) + let __nt = super::__action51::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 36) } - fn __reduce78< + fn __reduce80< 'input, >( input: &'input str, @@ -25598,15 +26272,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u8" => ActionFn(28); + // Type = "u8" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action28::<>(input, __sym0); + let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce79< + fn __reduce81< 'input, >( input: &'input str, @@ -25615,15 +26289,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u16" => ActionFn(29); + // Type = "u16" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action29::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce80< + fn __reduce82< 'input, >( input: &'input str, @@ -25632,15 +26306,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u32" => ActionFn(30); + // Type = "u32" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action30::<>(input, __sym0); + let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce81< + fn __reduce83< 'input, >( input: &'input str, @@ -25649,15 +26323,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u64" => ActionFn(31); + // Type = "u64" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action31::<>(input, __sym0); + let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce82< + fn __reduce84< 'input, >( input: &'input str, @@ -25666,15 +26340,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i8" => ActionFn(32); + // Type = "i8" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action32::<>(input, __sym0); + let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce83< + fn __reduce85< 'input, >( input: &'input str, @@ -25683,15 +26357,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i16" => ActionFn(33); + // Type = "i16" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce84< + fn __reduce86< 'input, >( input: &'input str, @@ -25700,15 +26374,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i32" => ActionFn(34); + // Type = "i32" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action34::<>(input, __sym0); + let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce85< + fn __reduce87< 'input, >( input: &'input str, @@ -25717,15 +26391,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i64" => ActionFn(35); + // Type = "i64" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action35::<>(input, __sym0); + let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce86< + fn __reduce88< 'input, >( input: &'input str, @@ -25734,15 +26408,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "void" => ActionFn(36); + // Type = "void" => ActionFn(38); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action36::<>(input, __sym0); + let __nt = super::__action38::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce87< + fn __reduce89< 'input, >( input: &'input str, @@ -25751,15 +26425,34 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "bool" => ActionFn(37); + // Type = "bool" => ActionFn(39); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action37::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce88< + fn __reduce90< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Type = "&", Type => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 37) + } + fn __reduce91< 'input, >( input: &'input str, @@ -25768,15 +26461,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = Type => ActionFn(61); + // Type? = Type => ActionFn(64); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action61::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (1, 39) + let __nt = super::__action64::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (1, 38) } - fn __reduce89< + fn __reduce92< 'input, >( input: &'input str, @@ -25785,14 +26478,14 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = => ActionFn(62); + // Type? = => ActionFn(65); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action62::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (0, 39) + let __nt = super::__action65::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (0, 38) } - fn __reduce90< + fn __reduce93< 'input, >( input: &'input str, @@ -25801,15 +26494,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = "0" => ActionFn(42); + // UnsignedNum = "0" => ActionFn(45); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action42::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action45::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce91< + fn __reduce94< 'input, >( input: &'input str, @@ -25818,15 +26511,15 @@ mod __parse__Operand { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(43); + // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(46); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action43::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action46::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce92< + fn __reduce95< 'input, >( input: &'input str, @@ -25841,9 +26534,9 @@ mod __parse__Operand { let __end = __sym0.2; let __nt = super::__action2::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); - (1, 41) + (1, 40) } - fn __reduce93< + fn __reduce96< 'input, >( input: &'input str, @@ -25853,14 +26546,14 @@ mod __parse__Operand { ) -> (usize, usize) { // __CmpOp = CmpOp => ActionFn(5); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action5::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 42) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 41) } - fn __reduce94< + fn __reduce97< 'input, >( input: &'input str, @@ -25870,14 +26563,14 @@ mod __parse__Operand { ) -> (usize, usize) { // __Function = Function => ActionFn(1); - let __sym0 = __pop_Variant18(__symbols); + let __sym0 = __pop_Variant17(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action1::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (1, 43) + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 42) } - fn __reduce95< + fn __reduce98< 'input, >( input: &'input str, @@ -25892,9 +26585,9 @@ mod __parse__Operand { let __end = __sym0.2; let __nt = super::__action3::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 44) + (1, 43) } - fn __reduce96< + fn __reduce99< 'input, >( input: &'input str, @@ -25909,9 +26602,9 @@ mod __parse__Operand { let __end = __sym0.2; let __nt = super::__action4::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 45) + (1, 44) } - fn __reduce97< + fn __reduce100< 'input, >( input: &'input str, @@ -25926,9 +26619,9 @@ mod __parse__Operand { let __end = __sym0.2; let __nt = super::__action0::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 46) + (1, 45) } - fn __reduce99< + fn __reduce102< 'input, >( input: &'input str, @@ -25938,12 +26631,12 @@ mod __parse__Operand { ) -> (usize, usize) { // __Target = Target => ActionFn(6); - let __sym0 = __pop_Variant27(__symbols); + let __sym0 = __pop_Variant26(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action6::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 48) + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 47) } } #[allow(unused_imports)] @@ -25954,7 +26647,7 @@ pub use self::__parse__Operand::OperandParser; mod __parse__Target { use std::str::FromStr; - use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; + use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -25978,79 +26671,110 @@ mod __parse__Target { Variant10(alloc::vec::Vec), Variant11(Vec), Variant12(core::option::Option>), - Variant13(BasicBlockId), - Variant14(CmpOp), - Variant15(Vec), - Variant16(Vec), - Variant17(String), - Variant18(Function), - Variant19(alloc::vec::Vec), + Variant13(CmpOp), + Variant14(Vec), + Variant15(Vec), + Variant16(String), + Variant17(Function), + Variant18(alloc::vec::Vec), + Variant19(Identifier), Variant20(Instruction), Variant21(alloc::vec::Vec), Variant22(Literal), Variant23(Module), Variant24(core::option::Option), - Variant25(RegId), - Variant26(i64), - Variant27(Target), - Variant28(core::option::Option>), - Variant29(core::option::Option), - Variant30(u64), + Variant25(i64), + Variant26(Target), + Variant27(core::option::Option>), + Variant28(core::option::Option), + Variant29(u64), } const __ACTION: &[i8] = &[ // 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, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, // State 1 - 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, 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, // State 2 - 0, -40, 0, 5, 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, 16, 0, 17, + 6, 0, 0, -39, 0, 7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, // State 3 - 0, -42, 0, 5, 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, 16, 0, 17, + 6, 0, 0, -41, 0, 7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, // State 4 - 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, 16, 0, 0, + 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 0, 0, 0, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, // State 6 - -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, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, // State 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 0, 0, 0, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, // State 8 - 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 9 - 0, -67, -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, 0, 0, 0, + 0, 0, -51, -51, -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, // State 10 - 0, -39, 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, -94, -94, -94, -94, 0, 0, 0, 0, 0, 0, -94, 0, 0, 0, 0, 0, 0, 0, -94, -94, -94, -94, 0, 0, 0, -94, -94, -94, -94, -94, 0, 0, 0, 0, 0, // State 11 - 0, -68, -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, 0, 0, 0, + 0, -95, -95, -95, -95, 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, -95, -95, -95, -95, 0, 0, 0, -95, -95, -95, -95, -95, 0, 0, 0, 0, 0, // State 12 - 0, -65, -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, 0, 0, 0, + 0, 0, -52, -52, -52, 0, 0, 0, 0, 0, 0, 0, 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 13 - 0, -73, -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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 14 - 0, -91, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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 15 - 0, -92, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -70, -70, 0, 0, 0, 0, 0, 0, 0, 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 16 - 0, -71, -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, 0, 0, 0, + 0, 0, 0, -38, 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, // State 17 - 0, -41, 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, 0, 0, 0, 0, 0, + 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75, -75, -75, -75, 0, 0, 0, -75, -75, -75, -75, -75, 0, 0, 0, 0, 0, // State 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, -68, -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, 0, 0, 0, 0, // State 19 - 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -11, + 0, 0, 0, -67, -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, 0, 0, 0, 0, // State 20 - 0, -72, -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, 0, 0, 0, + 0, 0, 0, -40, 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, 0, 0, 0, 0, // State 21 - 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, -12, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 22 + -11, 0, 0, -11, 0, -11, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, + // State 23 + 0, 0, 0, -66, -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, + // State 24 + 0, 0, 0, -90, -90, 0, 0, 0, 0, 0, 0, 0, 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 25 + 0, 0, 0, -86, -86, 0, 0, 0, 0, 0, 0, 0, 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 26 + 0, 0, 0, -87, -87, 0, 0, 0, 0, 0, 0, 0, 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 27 + 0, 0, 0, -88, -88, 0, 0, 0, 0, 0, 0, 0, 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 28 + 0, 0, 0, -85, -85, 0, 0, 0, 0, 0, 0, 0, 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 29 + 0, 0, 0, -82, -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, + // State 30 + 0, 0, 0, -83, -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, + // State 31 + 0, 0, 0, -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, + // State 32 + 0, 0, 0, -81, -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, + // State 33 + 0, 0, 0, -89, -89, 0, 0, 0, 0, 0, 0, 0, 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 34 + 0, 0, 0, -71, -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, 0, 0, 0, 0, + // State 35 + 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74, -74, -74, -74, 0, 0, 0, -74, -74, -74, -74, -74, 0, 0, 0, 0, 0, + // State 36 + -12, 0, 0, -12, 0, -12, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, + // State 37 + 0, 0, 0, -91, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 33 + integer] + __ACTION[(state as usize) * 36 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 0, // State 1 - -75, + -77, // State 2 0, // State 3 @@ -26058,23 +26782,23 @@ mod __parse__Target { // State 4 0, // State 5 - -100, + 0, // State 6 - -32, + 0, // State 7 - -74, - // State 8 0, + // State 8 + -103, // State 9 - 0, + -51, // State 10 - 0, + -94, // State 11 - 0, + -95, // State 12 - 0, + -52, // State 13 - 0, + -76, // State 14 0, // State 15 @@ -26084,36 +26808,77 @@ mod __parse__Target { // State 17 0, // State 18 - -76, + 0, // State 19 0, // State 20 0, // State 21 + -78, + // State 22 + 0, + // State 23 + 0, + // State 24 + 0, + // State 25 + 0, + // State 26 + 0, + // State 27 + 0, + // State 28 + 0, + // State 29 + 0, + // State 30 + 0, + // State 31 + 0, + // State 32 + 0, + // State 33 + 0, + // State 34 + 0, + // State 35 + 0, + // State 36 + 0, + // State 37 0, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { 6 => 3, - 17 => 1, - 20 => 8, - 29 => 9, + 19 => 14, + 24 => match state { + 5 => 34, + _ => 1, + }, + 29 => 15, 31 => match state { - 3 => 17, - _ => 10, + 3 => 20, + _ => 16, }, - 33 => 11, - 34 => 12, - 35 => 5, - 36 => 7, - 40 => match state { - 4 => 20, - _ => 13, + 33 => 4, + 34 => 8, + 35 => 13, + 37 => match state { + 7 => 37, + _ => 23, + }, + 39 => match state { + 2..=3 => 17, + 6 => 35, + _ => 9, }, _ => 0, } } const __TERMINAL: &[&str] = &[ + r###""%""###, + r###""&""###, r###""(""###, r###"")""###, r###"",""###, @@ -26125,17 +26890,19 @@ mod __parse__Target { r###""add""###, r###""bool""###, r###""br""###, + r###""cmp""###, r###""condbr""###, r###""eq""###, + r###""false""###, r###""fun""###, r###""gt""###, r###""i16""###, r###""i32""###, r###""i64""###, r###""i8""###, - r###""icmp""###, r###""ret""###, r###""sub""###, + r###""true""###, r###""u16""###, r###""u32""###, r###""u64""###, @@ -26145,8 +26912,7 @@ mod __parse__Target { r###""}""###, r###"r#"@[a-zA-Z_][a-zA-Z0-9_]*"#"###, r###"r#"[1-9][0-9]*"#"###, - r###"r#"bb(0|([1-9][0-9]*))"#"###, - r###"r#"v(0|([1-9][0-9]*))"#"###, + r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###, ]; fn __expected_tokens(__state: i8) -> alloc::vec::Vec { __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { @@ -26215,7 +26981,7 @@ mod __parse__Target { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 33 - 1) + __action(state, 36 - 1) } #[inline] @@ -26282,39 +27048,42 @@ mod __parse__Target { ) -> Option { match *__token { - Token(4, _) if true => Some(0), - Token(5, _) if true => Some(1), - Token(6, _) if true => Some(2), - Token(7, _) if true => Some(3), - Token(8, _) if true => Some(4), - Token(9, _) if true => Some(5), - Token(10, _) if true => Some(6), - Token(11, _) if true => Some(7), - Token(12, _) if true => Some(8), - Token(13, _) if true => Some(9), - Token(14, _) if true => Some(10), - Token(15, _) if true => Some(11), - Token(16, _) if true => Some(12), - Token(17, _) if true => Some(13), - Token(18, _) if true => Some(14), - Token(19, _) if true => Some(15), - Token(20, _) if true => Some(16), - Token(21, _) if true => Some(17), - Token(22, _) if true => Some(18), - Token(23, _) if true => Some(19), - Token(24, _) if true => Some(20), - Token(25, _) if true => Some(21), - Token(26, _) if true => Some(22), - Token(27, _) if true => Some(23), - Token(28, _) if true => Some(24), - Token(29, _) if true => Some(25), - Token(30, _) if true => Some(26), - Token(31, _) if true => Some(27), - Token(32, _) if true => Some(28), - Token(0, _) if true => Some(29), - Token(1, _) if true => Some(30), - Token(2, _) if true => Some(31), - Token(3, _) if true => Some(32), + Token(3, _) if true => Some(0), + Token(4, _) if true => Some(1), + Token(5, _) if true => Some(2), + Token(6, _) if true => Some(3), + Token(7, _) if true => Some(4), + Token(8, _) if true => Some(5), + Token(9, _) if true => Some(6), + Token(10, _) if true => Some(7), + Token(11, _) if true => Some(8), + Token(12, _) if true => Some(9), + Token(13, _) if true => Some(10), + Token(14, _) if true => Some(11), + Token(15, _) if true => Some(12), + Token(16, _) if true => Some(13), + Token(17, _) if true => Some(14), + Token(18, _) if true => Some(15), + Token(19, _) if true => Some(16), + Token(20, _) if true => Some(17), + Token(21, _) if true => Some(18), + Token(22, _) if true => Some(19), + Token(23, _) if true => Some(20), + Token(24, _) if true => Some(21), + Token(25, _) if true => Some(22), + Token(26, _) if true => Some(23), + Token(27, _) if true => Some(24), + Token(28, _) if true => Some(25), + Token(29, _) if true => Some(26), + Token(30, _) if true => Some(27), + Token(31, _) if true => Some(28), + Token(32, _) if true => Some(29), + Token(33, _) if true => Some(30), + Token(34, _) if true => Some(31), + Token(35, _) if true => Some(32), + Token(0, _) if true => Some(33), + Token(1, _) if true => Some(34), + Token(2, _) if true => Some(35), _ => None, } } @@ -26327,8 +27096,8 @@ mod __parse__Target { ) -> __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 => match __token { - Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 => 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(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -26446,7 +27215,7 @@ mod __parse__Target { } 17 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 3, nonterminal_produced: 10, } } @@ -26537,7 +27306,7 @@ mod __parse__Target { 32 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 18, + nonterminal_produced: 17, } } 33 => { @@ -26548,20 +27317,20 @@ mod __parse__Target { } 34 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 19, + states_to_pop: 0, + nonterminal_produced: 18, } } 35 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 19, + states_to_pop: 2, + nonterminal_produced: 18, } } 36 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 19, + states_to_pop: 1, + nonterminal_produced: 18, } } 37 => { @@ -26572,20 +27341,20 @@ mod __parse__Target { } 38 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 20, + states_to_pop: 0, + nonterminal_produced: 19, } } 39 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 20, + states_to_pop: 2, + nonterminal_produced: 19, } } 40 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 20, + states_to_pop: 1, + nonterminal_produced: 19, } } 41 => { @@ -26596,20 +27365,20 @@ mod __parse__Target { } 42 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 21, + states_to_pop: 0, + nonterminal_produced: 20, } } 43 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 21, + states_to_pop: 2, + nonterminal_produced: 20, } } 44 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 21, + states_to_pop: 1, + nonterminal_produced: 20, } } 45 => { @@ -26620,103 +27389,103 @@ mod __parse__Target { } 46 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 8, nonterminal_produced: 22, } } 47 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, - nonterminal_produced: 23, + states_to_pop: 9, + nonterminal_produced: 22, } } 48 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 9, + states_to_pop: 1, nonterminal_produced: 23, } } 49 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 24, + states_to_pop: 2, + nonterminal_produced: 23, } } 50 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 24, } } 51 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 25, + states_to_pop: 1, + nonterminal_produced: 24, } } 52 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 26, + states_to_pop: 2, + nonterminal_produced: 25, } } 53 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 0, nonterminal_produced: 26, } } 54 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 27, + nonterminal_produced: 26, } } 55 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 27, } } 56 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, - nonterminal_produced: 28, + states_to_pop: 2, + nonterminal_produced: 27, } } 57 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 7, + states_to_pop: 8, nonterminal_produced: 28, } } 58 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 4, + states_to_pop: 8, nonterminal_produced: 28, } } 59 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 8, + states_to_pop: 5, nonterminal_produced: 28, } } 60 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 5, + states_to_pop: 9, nonterminal_produced: 28, } } 61 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 5, nonterminal_produced: 28, } } 62 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 2, nonterminal_produced: 28, } } @@ -26729,214 +27498,232 @@ mod __parse__Target { 64 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 29, + nonterminal_produced: 28, } } 65 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 30, + states_to_pop: 2, + nonterminal_produced: 29, } } 66 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 67 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 31, + nonterminal_produced: 29, } } 68 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 32, + nonterminal_produced: 30, } } 69 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 32, + states_to_pop: 1, + nonterminal_produced: 31, } } 70 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 33, + states_to_pop: 2, + nonterminal_produced: 31, } } 71 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 34, + states_to_pop: 1, + nonterminal_produced: 32, } } 72 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 34, + states_to_pop: 0, + nonterminal_produced: 32, } } 73 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 2, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 74 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 35, + nonterminal_produced: 33, } } 75 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 36, + states_to_pop: 2, + nonterminal_produced: 34, } } 76 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 37, + nonterminal_produced: 34, } } 77 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 37, + states_to_pop: 3, + nonterminal_produced: 35, } } 78 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 36, } } 79 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 38, + states_to_pop: 0, + nonterminal_produced: 36, } } 80 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 81 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 82 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 83 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 84 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 85 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 86 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 87 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 38, + nonterminal_produced: 37, } } 88 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 39, + nonterminal_produced: 37, } } 89 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, - nonterminal_produced: 39, + states_to_pop: 1, + nonterminal_produced: 37, } } 90 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 40, + states_to_pop: 2, + nonterminal_produced: 37, } } 91 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 40, + nonterminal_produced: 38, } } 92 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 41, + states_to_pop: 0, + nonterminal_produced: 38, } } 93 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 42, + nonterminal_produced: 39, } } 94 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 43, + nonterminal_produced: 39, } } 95 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 44, + nonterminal_produced: 40, } } 96 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 45, + nonterminal_produced: 41, } } 97 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 46, + nonterminal_produced: 42, } } 98 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 47, + nonterminal_produced: 43, } } - 99 => __state_machine::SimulatedReduce::Accept, + 99 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 44, + } + } + 100 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 45, + } + } + 101 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 46, + } + } + 102 => __state_machine::SimulatedReduce::Accept, _ => panic!("invalid reduction index {}", __reduce_index) } } @@ -27316,8 +28103,17 @@ mod __parse__Target { __reduce98(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 99 => { + __reduce99(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 100 => { + __reduce100(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 101 => { + __reduce101(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 102 => { // __Target = Target => ActionFn(6); - let __sym0 = __pop_Variant27(__symbols); + let __sym0 = __pop_Variant26(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action6::<>(input, __sym0); @@ -27362,32 +28158,32 @@ mod __parse__Target { 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, BasicBlockId, usize) + ) -> (usize, CmpOp, usize) { match __symbols.pop() { Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant14< + fn __pop_Variant17< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, CmpOp, usize) + ) -> (usize, Function, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant18< + fn __pop_Variant19< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Function, usize) + ) -> (usize, Identifier, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -27435,36 +28231,25 @@ mod __parse__Target { _ => __symbol_type_mismatch() } } - fn __pop_Variant25< - 'input, - >( - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, RegId, usize) - { - match __symbols.pop() { - Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), - _ => __symbol_type_mismatch() - } - } - fn __pop_Variant17< + fn __pop_Variant16< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, String, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant27< + fn __pop_Variant26< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Target, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -27490,25 +28275,25 @@ mod __parse__Target { _ => __symbol_type_mismatch() } } - fn __pop_Variant15< + fn __pop_Variant14< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant16< + fn __pop_Variant15< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -27534,14 +28319,14 @@ mod __parse__Target { _ => __symbol_type_mismatch() } } - fn __pop_Variant19< + fn __pop_Variant18< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, alloc::vec::Vec, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -27600,14 +28385,14 @@ mod __parse__Target { _ => __symbol_type_mismatch() } } - fn __pop_Variant29< + fn __pop_Variant28< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -27622,14 +28407,14 @@ mod __parse__Target { _ => __symbol_type_mismatch() } } - fn __pop_Variant28< + fn __pop_Variant27< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, core::option::Option>, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -27644,25 +28429,25 @@ mod __parse__Target { _ => __symbol_type_mismatch() } } - fn __pop_Variant26< + fn __pop_Variant25< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, i64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } - fn __pop_Variant30< + fn __pop_Variant29< 'input, >( __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> ) -> (usize, u64, usize) { match __symbols.pop() { - Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), _ => __symbol_type_mismatch() } } @@ -27686,11 +28471,11 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = "-" => ActionFn(44); + // "-"? = "-" => ActionFn(47); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action47::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 0) } @@ -27703,10 +28488,10 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // "-"? = => ActionFn(45); + // "-"? = => ActionFn(48); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action45::<>(input, &__start, &__end); + let __nt = super::__action48::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (0, 0) } @@ -27719,13 +28504,13 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Arg, "," => ActionFn(74); + // ( ",") = Arg, "," => ActionFn(77); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action74::<>(input, __sym0, __sym1); + let __nt = super::__action77::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (2, 1) } @@ -27738,10 +28523,10 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(72); + // ( ",")* = => ActionFn(75); 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::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (0, 2) } @@ -27754,11 +28539,11 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(73); + // ( ",")* = ( ",")+ => ActionFn(76); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action73::<>(input, __sym0); + let __nt = super::__action76::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (1, 2) } @@ -27771,13 +28556,13 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Arg, "," => ActionFn(86); + // ( ",")+ = Arg, "," => ActionFn(89); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action86::<>(input, __sym0, __sym1); + let __nt = super::__action89::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -27790,14 +28575,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Arg, "," => ActionFn(87); + // ( ",")+ = ( ",")+, Arg, "," => ActionFn(90); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (3, 3) } @@ -27810,13 +28595,13 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Operand, "," => ActionFn(77); + // ( ",") = Operand, "," => ActionFn(80); 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::__action77::<>(input, __sym0, __sym1); + let __nt = super::__action80::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 4) } @@ -27829,10 +28614,10 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(75); + // ( ",")* = => ActionFn(78); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action75::<>(input, &__start, &__end); + let __nt = super::__action78::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 5) } @@ -27845,11 +28630,11 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(76); + // ( ",")* = ( ",")+ => ActionFn(79); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action76::<>(input, __sym0); + let __nt = super::__action79::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 5) } @@ -27862,13 +28647,13 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Operand, "," => ActionFn(90); + // ( ",")+ = Operand, "," => 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::__action90::<>(input, __sym0, __sym1); + let __nt = super::__action93::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 6) } @@ -27881,14 +28666,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Operand, "," => ActionFn(91); + // ( ",")+ = ( ",")+, Operand, "," => ActionFn(94); 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::__action91::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 6) } @@ -27901,13 +28686,13 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Type, "," => ActionFn(65); + // ( ",") = Type, "," => ActionFn(68); 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::__action65::<>(input, __sym0, __sym1); + let __nt = super::__action68::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 7) } @@ -27920,10 +28705,10 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(63); + // ( ",")* = => ActionFn(66); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action63::<>(input, &__start, &__end); + let __nt = super::__action66::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 8) } @@ -27936,11 +28721,11 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(64); + // ( ",")* = ( ",")+ => ActionFn(67); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action64::<>(input, __sym0); + let __nt = super::__action67::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 8) } @@ -27953,13 +28738,13 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Type, "," => ActionFn(94); + // ( ",")+ = Type, "," => ActionFn(97); 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::__action94::<>(input, __sym0, __sym1); + let __nt = super::__action97::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 9) } @@ -27972,14 +28757,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Type, "," => ActionFn(95); + // ( ",")+ = ( ",")+, Type, "," => ActionFn(98); 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::__action95::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (3, 9) } @@ -27992,15 +28777,16 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg = Type, RegId => ActionFn(12); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant25(__symbols); + // Arg = Type, "%", Identifier => ActionFn(12); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action12::<>(input, __sym0, __sym1); + let __end = __sym2.2; + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (2, 10) + (3, 10) } fn __reduce18< 'input, @@ -28011,11 +28797,11 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = Arg => ActionFn(70); + // Arg? = Arg => ActionFn(73); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action73::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -28028,10 +28814,10 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Arg? = => ActionFn(71); + // Arg? = => ActionFn(74); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action71::<>(input, &__start, &__end); + let __nt = super::__action74::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (0, 11) } @@ -28044,14 +28830,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":" => ActionFn(106); + // BasicBlock = Identifier, BasicBlockArgList, ":" => ActionFn(109); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -28064,15 +28850,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, BasicBlockArgList, ":", Instruction+ => ActionFn(107); + // BasicBlock = Identifier, BasicBlockArgList, ":", Instruction+ => ActionFn(110); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant21(__symbols); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant11(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym3.2; - let __nt = super::__action107::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action110::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (4, 12) } @@ -28085,13 +28871,13 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":" => ActionFn(108); + // BasicBlock = Identifier, ":" => ActionFn(111); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action108::<>(input, __sym0, __sym1); + let __nt = super::__action111::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (2, 12) } @@ -28104,14 +28890,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock = BasicBlockId, ":", Instruction+ => ActionFn(109); + // BasicBlock = Identifier, ":", Instruction+ => ActionFn(112); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant21(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym2.2; - let __nt = super::__action109::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action112::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -28124,10 +28910,10 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = => ActionFn(56); + // BasicBlock* = => ActionFn(59); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action56::<>(input, &__start, &__end); + let __nt = super::__action59::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (0, 13) } @@ -28140,11 +28926,11 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock* = BasicBlock+ => ActionFn(57); + // BasicBlock* = BasicBlock+ => ActionFn(60); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action57::<>(input, __sym0); + let __nt = super::__action60::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 13) } @@ -28157,11 +28943,11 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock => ActionFn(66); + // BasicBlock+ = BasicBlock => ActionFn(69); let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action66::<>(input, __sym0); + let __nt = super::__action69::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 14) } @@ -28174,13 +28960,13 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(67); + // BasicBlock+ = BasicBlock+, BasicBlock => ActionFn(70); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant9(__symbols); let __sym0 = __pop_Variant10(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action67::<>(input, __sym0, __sym1); + let __nt = super::__action70::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 14) } @@ -28213,11 +28999,11 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = BasicBlockArgList => ActionFn(54); + // BasicBlockArgList? = BasicBlockArgList => ActionFn(57); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action54::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (1, 16) } @@ -28230,10 +29016,10 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockArgList? = => ActionFn(55); + // BasicBlockArgList? = => ActionFn(58); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action55::<>(input, &__start, &__end); + let __nt = super::__action58::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); (0, 16) } @@ -28246,11 +29032,11 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // BasicBlockId = r#"bb(0|([1-9][0-9]*))"# => ActionFn(40); + // CmpOp = "eq" => ActionFn(21); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); (1, 17) } @@ -28262,33 +29048,16 @@ mod __parse__Target { __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) - { - // CmpOp = "eq" => ActionFn(21); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action21::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) - } - fn __reduce33< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) { // CmpOp = "gt" => ActionFn(22); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action22::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 18) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 17) } - fn __reduce34< + fn __reduce33< 'input, >( input: &'input str, @@ -28297,15 +29066,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Arg => ActionFn(98); + // Comma = Arg => ActionFn(101); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action98::<>(input, __sym0); + let __nt = super::__action101::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce35< + fn __reduce34< 'input, >( input: &'input str, @@ -28314,14 +29083,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(99); + // Comma = => ActionFn(102); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action99::<>(input, &__start, &__end); + let __nt = super::__action102::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (0, 19) + (0, 18) } - fn __reduce36< + fn __reduce35< 'input, >( input: &'input str, @@ -28330,17 +29099,17 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Arg => ActionFn(100); + // Comma = ( ",")+, Arg => ActionFn(103); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action100::<>(input, __sym0, __sym1); + let __nt = super::__action103::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (2, 19) + (2, 18) } - fn __reduce37< + fn __reduce36< 'input, >( input: &'input str, @@ -28349,15 +29118,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(101); + // Comma = ( ",")+ => ActionFn(104); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action101::<>(input, __sym0); + let __nt = super::__action104::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 19) + (1, 18) } - fn __reduce38< + fn __reduce37< 'input, >( input: &'input str, @@ -28366,15 +29135,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Operand => ActionFn(110); + // Comma = Operand => ActionFn(113); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action110::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action113::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce39< + fn __reduce38< 'input, >( input: &'input str, @@ -28383,14 +29152,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(111); + // Comma = => ActionFn(114); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action111::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (0, 20) + let __nt = super::__action114::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (0, 19) } - fn __reduce40< + fn __reduce39< 'input, >( input: &'input str, @@ -28399,17 +29168,17 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Operand => ActionFn(112); + // Comma = ( ",")+, Operand => ActionFn(115); 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::__action112::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (2, 20) + let __nt = super::__action115::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 19) } - fn __reduce41< + fn __reduce40< 'input, >( input: &'input str, @@ -28418,15 +29187,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(113); + // Comma = ( ",")+ => ActionFn(116); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action113::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (1, 20) + let __nt = super::__action116::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 19) } - fn __reduce42< + fn __reduce41< 'input, >( input: &'input str, @@ -28435,15 +29204,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Type => ActionFn(118); + // Comma = Type => ActionFn(121); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action118::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action121::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce43< + fn __reduce42< 'input, >( input: &'input str, @@ -28452,14 +29221,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(119); + // Comma = => ActionFn(122); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action119::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (0, 21) + let __nt = super::__action122::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 20) } - fn __reduce44< + fn __reduce43< 'input, >( input: &'input str, @@ -28468,17 +29237,17 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Type => ActionFn(120); + // Comma = ( ",")+, Type => ActionFn(123); 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::__action120::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (2, 21) + let __nt = super::__action123::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 20) } - fn __reduce45< + fn __reduce44< 'input, >( input: &'input str, @@ -28487,15 +29256,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(121); + // Comma = ( ",")+ => ActionFn(124); let __sym0 = __pop_Variant7(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action121::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant16(__nt), __end)); - (1, 21) + let __nt = super::__action124::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 20) } - fn __reduce46< + fn __reduce45< 'input, >( input: &'input str, @@ -28504,15 +29273,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(38); + // FunId = r#"@[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action38::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant17(__nt), __end)); - (1, 22) + let __nt = super::__action41::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 21) } - fn __reduce47< + fn __reduce46< 'input, >( input: &'input str, @@ -28521,23 +29290,23 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(102); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", "}" => ActionFn(105); assert!(__symbols.len() >= 8); let __sym7 = __pop_Variant0(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym7.2; - let __nt = super::__action102::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (8, 23) + let __nt = super::__action105::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (8, 22) } - fn __reduce48< + fn __reduce47< 'input, >( input: &'input str, @@ -28546,22 +29315,39 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(103); + // Function = "fun", Type, FunId, "(", Comma, ")", "{", BasicBlock+, "}" => ActionFn(106); assert!(__symbols.len() >= 9); let __sym8 = __pop_Variant0(__symbols); let __sym7 = __pop_Variant10(__symbols); let __sym6 = __pop_Variant0(__symbols); let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant15(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant17(__symbols); + let __sym2 = __pop_Variant16(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym8.2; - let __nt = super::__action103::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __nt = super::__action106::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (9, 22) + } + fn __reduce48< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Function+ = Function => ActionFn(62); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action62::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (9, 23) + (1, 23) } fn __reduce49< 'input, @@ -28572,15 +29358,34 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function => ActionFn(59); + // Function+ = Function+, Function => ActionFn(63); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant17(__symbols); let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action63::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 23) + } + fn __reduce50< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Identifier = UnsignedNum => ActionFn(42); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action59::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); (1, 24) } - fn __reduce50< + fn __reduce51< 'input, >( input: &'input str, @@ -28589,17 +29394,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Function+ = Function+, Function => ActionFn(60); - assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant18(__symbols); - let __sym0 = __pop_Variant19(__symbols); + // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(43); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym1.2; - let __nt = super::__action60::<>(input, __sym0, __sym1); + let __end = __sym0.2; + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant19(__nt), __end)); - (2, 24) + (1, 24) } - fn __reduce51< + fn __reduce52< 'input, >( input: &'input str, @@ -28618,7 +29421,7 @@ mod __parse__Target { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 25) } - fn __reduce52< + fn __reduce53< 'input, >( input: &'input str, @@ -28627,14 +29430,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = => ActionFn(52); + // Instruction* = => ActionFn(55); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action52::<>(input, &__start, &__end); + let __nt = super::__action55::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (0, 26) } - fn __reduce53< + fn __reduce54< 'input, >( input: &'input str, @@ -28643,15 +29446,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction* = Instruction+ => ActionFn(53); + // Instruction* = Instruction+ => ActionFn(56); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action53::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 26) } - fn __reduce54< + fn __reduce55< 'input, >( input: &'input str, @@ -28660,15 +29463,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction => ActionFn(68); + // Instruction+ = Instruction => ActionFn(71); let __sym0 = __pop_Variant20(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action68::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (1, 27) } - fn __reduce55< + fn __reduce56< 'input, >( input: &'input str, @@ -28677,17 +29480,17 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Instruction+ = Instruction+, Instruction => ActionFn(69); + // Instruction+ = Instruction+, Instruction => ActionFn(72); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant20(__symbols); let __sym0 = __pop_Variant21(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action69::<>(input, __sym0, __sym1); + let __nt = super::__action72::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant21(__nt), __end)); (2, 27) } - fn __reduce56< + fn __reduce57< 'input, >( input: &'input str, @@ -28696,22 +29499,23 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "add", Type, Operand, ",", Operand => ActionFn(14); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "add", Operand, ",", Operand => ActionFn(14); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action14::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce57< + fn __reduce58< 'input, >( input: &'input str, @@ -28720,22 +29524,23 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "sub", Type, Operand, ",", Operand => ActionFn(15); - assert!(__symbols.len() >= 7); - let __sym6 = __pop_Variant4(__symbols); - let __sym5 = __pop_Variant0(__symbols); - let __sym4 = __pop_Variant4(__symbols); - let __sym3 = __pop_Variant6(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "sub", Operand, ",", Operand => ActionFn(15); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant4(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant4(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym6.2; - let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __end = __sym7.2; + let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (7, 28) + (8, 28) } - fn __reduce58< + fn __reduce59< 'input, >( input: &'input str, @@ -28744,19 +29549,20 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", Type, Operand => ActionFn(16); - assert!(__symbols.len() >= 4); - let __sym3 = __pop_Variant4(__symbols); - let __sym2 = __pop_Variant6(__symbols); + // InstructionInner = Type, "%", Identifier, "=", Operand => ActionFn(16); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant4(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym3.2; - let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3); + let __end = __sym4.2; + let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (4, 28) + (5, 28) } - fn __reduce59< + fn __reduce60< 'input, >( input: &'input str, @@ -28765,23 +29571,24 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = RegId, "=", "icmp", CmpOp, Type, Operand, ",", Operand => ActionFn(17); - assert!(__symbols.len() >= 8); - let __sym7 = __pop_Variant4(__symbols); - let __sym6 = __pop_Variant0(__symbols); - let __sym5 = __pop_Variant4(__symbols); - let __sym4 = __pop_Variant6(__symbols); - let __sym3 = __pop_Variant14(__symbols); - let __sym2 = __pop_Variant0(__symbols); + // InstructionInner = Type, "%", Identifier, "=", "cmp", CmpOp, Operand, ",", Operand => ActionFn(17); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant4(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant4(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant19(__symbols); let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant25(__symbols); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; - let __end = __sym7.2; - let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __end = __sym8.2; + let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (8, 28) + (9, 28) } - fn __reduce60< + fn __reduce61< 'input, >( input: &'input str, @@ -28792,9 +29599,9 @@ mod __parse__Target { { // InstructionInner = "condbr", Operand, Target, ",", Target => ActionFn(18); assert!(__symbols.len() >= 5); - let __sym4 = __pop_Variant27(__symbols); + let __sym4 = __pop_Variant26(__symbols); let __sym3 = __pop_Variant0(__symbols); - let __sym2 = __pop_Variant27(__symbols); + let __sym2 = __pop_Variant26(__symbols); let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; @@ -28803,7 +29610,7 @@ mod __parse__Target { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (5, 28) } - fn __reduce61< + fn __reduce62< 'input, >( input: &'input str, @@ -28814,7 +29621,7 @@ mod __parse__Target { { // InstructionInner = "br", Target => ActionFn(19); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant26(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; @@ -28822,7 +29629,7 @@ mod __parse__Target { __symbols.push((__start, __Symbol::Variant20(__nt), __end)); (2, 28) } - fn __reduce62< + fn __reduce63< 'input, >( input: &'input str, @@ -28831,18 +29638,34 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type, Operand => ActionFn(114); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant4(__symbols); - let __sym1 = __pop_Variant6(__symbols); + // InstructionInner = "ret", Operand => ActionFn(117); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant4(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym2.2; - let __nt = super::__action114::<>(input, __sym0, __sym1, __sym2); + let __end = __sym1.2; + let __nt = super::__action117::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (3, 28) + (2, 28) } - fn __reduce63< + fn __reduce64< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // InstructionInner = "ret" => ActionFn(118); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action118::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 28) + } + fn __reduce65< 'input, >( input: &'input str, @@ -28851,17 +29674,17 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // InstructionInner = "ret", Type => ActionFn(115); + // Literal = SignedNum, Type => ActionFn(27); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant6(__symbols); - let __sym0 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant25(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action115::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (2, 28) + let __nt = super::__action27::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (2, 29) } - fn __reduce64< + fn __reduce66< 'input, >( input: &'input str, @@ -28870,15 +29693,32 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Literal = SignedNum => ActionFn(27); - let __sym0 = __pop_Variant26(__symbols); + // Literal = "true" => 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::Variant22(__nt), __end)); (1, 29) } - fn __reduce65< + fn __reduce67< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Literal = "false" => ActionFn(29); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action29::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 29) + } + fn __reduce68< 'input, >( input: &'input str, @@ -28888,14 +29728,14 @@ mod __parse__Target { ) -> (usize, usize) { // Module = Function+ => ActionFn(8); - let __sym0 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant18(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action8::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); (1, 30) } - fn __reduce66< + fn __reduce69< 'input, >( input: &'input str, @@ -28912,7 +29752,7 @@ mod __parse__Target { __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 31) } - fn __reduce67< + fn __reduce70< 'input, >( input: &'input str, @@ -28921,15 +29761,17 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand = RegId => ActionFn(26); - let __sym0 = __pop_Variant25(__symbols); + // Operand = "%", Identifier => ActionFn(26); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action26::<>(input, __sym0); + let __end = __sym1.2; + let __nt = super::__action26::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 31) + (2, 31) } - fn __reduce68< + fn __reduce71< 'input, >( input: &'input str, @@ -28938,15 +29780,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = Operand => ActionFn(49); + // Operand? = Operand => ActionFn(52); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action49::<>(input, __sym0); + let __nt = super::__action52::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant24(__nt), __end)); (1, 32) } - fn __reduce69< + fn __reduce72< 'input, >( input: &'input str, @@ -28955,31 +29797,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operand? = => ActionFn(50); + // Operand? = => ActionFn(53); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action50::<>(input, &__start, &__end); + let __nt = super::__action53::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant24(__nt), __end)); (0, 32) } - fn __reduce70< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // RegId = r#"v(0|([1-9][0-9]*))"# => ActionFn(39); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0; - let __end = __sym0.2; - let __nt = super::__action39::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant25(__nt), __end)); - (1, 33) - } - fn __reduce71< + fn __reduce73< 'input, >( input: &'input str, @@ -28988,17 +29813,17 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = "-", UnsignedNum => ActionFn(84); + // SignedNum = "-", UnsignedNum => ActionFn(87); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant30(__symbols); + let __sym1 = __pop_Variant29(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action84::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (2, 34) + let __nt = super::__action87::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (2, 33) } - fn __reduce72< + fn __reduce74< 'input, >( input: &'input str, @@ -29007,15 +29832,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SignedNum = UnsignedNum => ActionFn(85); - let __sym0 = __pop_Variant30(__symbols); + // SignedNum = UnsignedNum => ActionFn(88); + let __sym0 = __pop_Variant29(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action85::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant26(__nt), __end)); - (1, 34) + let __nt = super::__action88::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 33) } - fn __reduce73< + fn __reduce75< 'input, >( input: &'input str, @@ -29024,17 +29849,17 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId, TargetArgList => ActionFn(116); + // Target = Identifier, TargetArgList => ActionFn(119); assert!(__symbols.len() >= 2); - let __sym1 = __pop_Variant15(__symbols); - let __sym0 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym1.2; - let __nt = super::__action116::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (2, 35) + let __nt = super::__action119::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 34) } - fn __reduce74< + fn __reduce76< 'input, >( input: &'input str, @@ -29043,15 +29868,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Target = BasicBlockId => ActionFn(117); - let __sym0 = __pop_Variant13(__symbols); + // Target = Identifier => ActionFn(120); + let __sym0 = __pop_Variant19(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action117::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant27(__nt), __end)); - (1, 35) + let __nt = super::__action120::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (1, 34) } - fn __reduce75< + fn __reduce77< 'input, >( input: &'input str, @@ -29063,15 +29888,15 @@ mod __parse__Target { // TargetArgList = "(", Comma, ")" => ActionFn(24); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant15(__symbols); + let __sym1 = __pop_Variant14(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym2.2; let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant15(__nt), __end)); - (3, 36) + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 35) } - fn __reduce76< + fn __reduce78< 'input, >( input: &'input str, @@ -29080,15 +29905,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = TargetArgList => ActionFn(47); - let __sym0 = __pop_Variant15(__symbols); + // TargetArgList? = TargetArgList => ActionFn(50); + let __sym0 = __pop_Variant14(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action47::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (1, 37) + let __nt = super::__action50::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (1, 36) } - fn __reduce77< + fn __reduce79< 'input, >( input: &'input str, @@ -29097,14 +29922,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // TargetArgList? = => ActionFn(48); + // TargetArgList? = => ActionFn(51); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action48::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant28(__nt), __end)); - (0, 37) + let __nt = super::__action51::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 36) } - fn __reduce78< + fn __reduce80< 'input, >( input: &'input str, @@ -29113,15 +29938,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u8" => ActionFn(28); + // Type = "u8" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action28::<>(input, __sym0); + let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce79< + fn __reduce81< 'input, >( input: &'input str, @@ -29130,15 +29955,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u16" => ActionFn(29); + // Type = "u16" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action29::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce80< + fn __reduce82< 'input, >( input: &'input str, @@ -29147,15 +29972,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u32" => ActionFn(30); + // Type = "u32" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action30::<>(input, __sym0); + let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce81< + fn __reduce83< 'input, >( input: &'input str, @@ -29164,15 +29989,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "u64" => ActionFn(31); + // Type = "u64" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action31::<>(input, __sym0); + let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce82< + fn __reduce84< 'input, >( input: &'input str, @@ -29181,15 +30006,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i8" => ActionFn(32); + // Type = "i8" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action32::<>(input, __sym0); + let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce83< + fn __reduce85< 'input, >( input: &'input str, @@ -29198,15 +30023,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i16" => ActionFn(33); + // Type = "i16" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce84< + fn __reduce86< 'input, >( input: &'input str, @@ -29215,15 +30040,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i32" => ActionFn(34); + // Type = "i32" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action34::<>(input, __sym0); + let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce85< + fn __reduce87< 'input, >( input: &'input str, @@ -29232,15 +30057,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "i64" => ActionFn(35); + // Type = "i64" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action35::<>(input, __sym0); + let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce86< + fn __reduce88< 'input, >( input: &'input str, @@ -29249,15 +30074,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "void" => ActionFn(36); + // Type = "void" => ActionFn(38); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action36::<>(input, __sym0); + let __nt = super::__action38::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce87< + fn __reduce89< 'input, >( input: &'input str, @@ -29266,15 +30091,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type = "bool" => ActionFn(37); + // Type = "bool" => ActionFn(39); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action37::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); - (1, 38) + (1, 37) } - fn __reduce88< + fn __reduce90< 'input, >( input: &'input str, @@ -29283,15 +30108,34 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = Type => ActionFn(61); + // Type = "&", Type => ActionFn(40); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action40::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (2, 37) + } + fn __reduce91< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Type? = Type => ActionFn(64); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action61::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (1, 39) + let __nt = super::__action64::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (1, 38) } - fn __reduce89< + fn __reduce92< 'input, >( input: &'input str, @@ -29300,14 +30144,14 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Type? = => ActionFn(62); + // Type? = => ActionFn(65); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); let __end = __start; - let __nt = super::__action62::<>(input, &__start, &__end); - __symbols.push((__start, __Symbol::Variant29(__nt), __end)); - (0, 39) + let __nt = super::__action65::<>(input, &__start, &__end); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (0, 38) } - fn __reduce90< + fn __reduce93< 'input, >( input: &'input str, @@ -29316,15 +30160,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = "0" => ActionFn(42); + // UnsignedNum = "0" => ActionFn(45); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action42::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action45::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce91< + fn __reduce94< 'input, >( input: &'input str, @@ -29333,15 +30177,15 @@ mod __parse__Target { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(43); + // UnsignedNum = r#"[1-9][0-9]*"# => ActionFn(46); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0; let __end = __sym0.2; - let __nt = super::__action43::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant30(__nt), __end)); - (1, 40) + let __nt = super::__action46::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 39) } - fn __reduce92< + fn __reduce95< 'input, >( input: &'input str, @@ -29356,9 +30200,9 @@ mod __parse__Target { let __end = __sym0.2; let __nt = super::__action2::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); - (1, 41) + (1, 40) } - fn __reduce93< + fn __reduce96< 'input, >( input: &'input str, @@ -29368,14 +30212,14 @@ mod __parse__Target { ) -> (usize, usize) { // __CmpOp = CmpOp => ActionFn(5); - let __sym0 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action5::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 42) + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 41) } - fn __reduce94< + fn __reduce97< 'input, >( input: &'input str, @@ -29385,14 +30229,14 @@ mod __parse__Target { ) -> (usize, usize) { // __Function = Function => ActionFn(1); - let __sym0 = __pop_Variant18(__symbols); + let __sym0 = __pop_Variant17(__symbols); let __start = __sym0.0; let __end = __sym0.2; let __nt = super::__action1::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant18(__nt), __end)); - (1, 43) + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 42) } - fn __reduce95< + fn __reduce98< 'input, >( input: &'input str, @@ -29407,9 +30251,9 @@ mod __parse__Target { let __end = __sym0.2; let __nt = super::__action3::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 44) + (1, 43) } - fn __reduce96< + fn __reduce99< 'input, >( input: &'input str, @@ -29424,9 +30268,9 @@ mod __parse__Target { let __end = __sym0.2; let __nt = super::__action4::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant20(__nt), __end)); - (1, 45) + (1, 44) } - fn __reduce97< + fn __reduce100< 'input, >( input: &'input str, @@ -29441,9 +30285,9 @@ mod __parse__Target { let __end = __sym0.2; let __nt = super::__action0::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant23(__nt), __end)); - (1, 46) + (1, 45) } - fn __reduce98< + fn __reduce101< 'input, >( input: &'input str, @@ -29458,7 +30302,7 @@ mod __parse__Target { let __end = __sym0.2; let __nt = super::__action7::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (1, 47) + (1, 46) } } #[allow(unused_imports)] @@ -29467,7 +30311,7 @@ pub use self::__parse__Target::TargetParser; mod __intern_token { #![allow(unused_imports)] use std::str::FromStr; - use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, RegId, Target, BasicBlockId, CmpOp}; + use crate::module::{Instruction, Operand, Literal, BasicBlock, Function, Type, Arg, Module, Target, CmpOp, Identifier}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -29478,8 +30322,9 @@ mod __intern_token { let __strs: &[(&str, bool)] = &[ ("(?:@[A-Z_a-z][0-9A-Z_a-z]*)", false), ("(?:[1-9][0-9]*)", false), - ("(?:(?:bb)((?:0|((?:[1-9][0-9]*)))))", false), - ("(?:v((?:0|((?:[1-9][0-9]*)))))", false), + ("(?:[A-Z_a-z][0-9A-Z_a-z]*)", false), + ("%", false), + ("\\&", false), ("\\(", false), ("\\)", false), (",", false), @@ -29491,17 +30336,19 @@ mod __intern_token { ("(?:add)", false), ("(?:bool)", false), ("(?:br)", false), + ("(?:cmp)", false), ("(?:condbr)", false), ("(?:eq)", false), + ("(?:false)", false), ("(?:fun)", false), ("(?:gt)", false), ("(?:i16)", false), ("(?:i32)", false), ("(?:i64)", false), ("(?:i8)", false), - ("(?:icmp)", false), ("(?:ret)", false), ("(?:sub)", false), + ("(?:true)", false), ("(?:u16)", false), ("(?:u32)", false), ("(?:u64)", false), @@ -29643,7 +30490,7 @@ fn __action9<'input>( )] fn __action10<'input>( input: &'input str, - (_, id, _): (usize, BasicBlockId, usize), + (_, id, _): (usize, Identifier, usize), (_, args, _): (usize, core::option::Option>, usize), (_, _, _): (usize, &'input str, usize), (_, instructions, _): (usize, alloc::vec::Vec, usize), @@ -29679,7 +30526,8 @@ fn __action11<'input>( fn __action12<'input>( input: &'input str, (_, ty, _): (usize, Type, usize), - (_, id, _): (usize, RegId, usize), + (_, _, _): (usize, &'input str, usize), + (_, id, _): (usize, Identifier, usize), ) -> Arg { Arg { ty, id } } @@ -29706,10 +30554,11 @@ fn __action13<'input>( )] fn __action14<'input>( input: &'input str, - (_, decl, _): (usize, RegId, usize), + (_, ty, _): (usize, Type, usize), + (_, _, _): (usize, &'input str, usize), + (_, decl, _): (usize, Identifier, usize), (_, _, _): (usize, &'input str, usize), (_, _, _): (usize, &'input str, usize), - (_, ty, _): (usize, Type, usize), (_, op1, _): (usize, Operand, usize), (_, _, _): (usize, &'input str, usize), (_, op2, _): (usize, Operand, usize), @@ -29725,10 +30574,11 @@ fn __action14<'input>( )] fn __action15<'input>( input: &'input str, - (_, decl, _): (usize, RegId, usize), + (_, ty, _): (usize, Type, usize), + (_, _, _): (usize, &'input str, usize), + (_, decl, _): (usize, Identifier, usize), (_, _, _): (usize, &'input str, usize), (_, _, _): (usize, &'input str, usize), - (_, ty, _): (usize, Type, usize), (_, op1, _): (usize, Operand, usize), (_, _, _): (usize, &'input str, usize), (_, op2, _): (usize, Operand, usize), @@ -29744,9 +30594,10 @@ fn __action15<'input>( )] fn __action16<'input>( input: &'input str, - (_, decl, _): (usize, RegId, usize), - (_, _, _): (usize, &'input str, usize), (_, ty, _): (usize, Type, usize), + (_, _, _): (usize, &'input str, usize), + (_, decl, _): (usize, Identifier, usize), + (_, _, _): (usize, &'input str, usize), (_, op, _): (usize, Operand, usize), ) -> Instruction { Instruction::Op(decl, ty, op) @@ -29760,16 +30611,17 @@ fn __action16<'input>( )] fn __action17<'input>( input: &'input str, - (_, decl, _): (usize, RegId, usize), + (_, ty, _): (usize, Type, usize), + (_, _, _): (usize, &'input str, usize), + (_, decl, _): (usize, Identifier, usize), (_, _, _): (usize, &'input str, usize), (_, _, _): (usize, &'input str, usize), (_, op, _): (usize, CmpOp, usize), - (_, ty, _): (usize, Type, usize), (_, op1, _): (usize, Operand, usize), (_, _, _): (usize, &'input str, usize), (_, op2, _): (usize, Operand, usize), ) -> Instruction { - Instruction::ICmp(decl, op, ty, op1, op2) + Instruction::Cmp(decl, op, ty, op1, op2) } #[allow(unused_variables)] @@ -29812,10 +30664,9 @@ fn __action19<'input>( fn __action20<'input>( input: &'input str, (_, _, _): (usize, &'input str, usize), - (_, ty, _): (usize, Type, usize), (_, op, _): (usize, core::option::Option, usize), ) -> Instruction { - Instruction::Ret(ty, op) + Instruction::Ret(op) } #[allow(unused_variables)] @@ -29846,7 +30697,7 @@ fn __action22<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz )] fn __action23<'input>( input: &'input str, - (_, id, _): (usize, BasicBlockId, usize), + (_, id, _): (usize, Identifier, usize), (_, args, _): (usize, core::option::Option>, usize), ) -> Target { Target(id, args) @@ -29883,8 +30734,36 @@ fn __action25<'input>(input: &'input str, (_, __0, _): (usize, Literal, usize)) clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action26<'input>(input: &'input str, (_, __0, _): (usize, RegId, usize)) -> Operand { - Operand::Register(__0) +fn __action26<'input>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, id, _): (usize, Identifier, usize), +) -> Operand { + Operand::Value(id) +} + +#[allow(unused_variables)] +#[allow( + clippy::too_many_arguments, + clippy::needless_lifetimes, + clippy::just_underscores_and_digits +)] +fn __action27<'input>( + input: &'input str, + (_, n, _): (usize, i64, usize), + (_, ty, _): (usize, Type, usize), +) -> Literal { + Literal::Int(n, ty) +} + +#[allow(unused_variables)] +#[allow( + clippy::too_many_arguments, + clippy::needless_lifetimes, + clippy::just_underscores_and_digits +)] +fn __action28<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Literal { + Literal::Bool(true) } #[allow(unused_variables)] @@ -29893,8 +30772,8 @@ fn __action26<'input>(input: &'input str, (_, __0, _): (usize, RegId, usize)) -> clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action27<'input>(input: &'input str, (_, __0, _): (usize, i64, usize)) -> Literal { - Literal::Int(__0) +fn __action29<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Literal { + Literal::Bool(false) } #[allow(unused_variables)] @@ -29903,7 +30782,7 @@ fn __action27<'input>(input: &'input str, (_, __0, _): (usize, i64, usize)) -> L clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action28<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action30<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::U8 } @@ -29913,7 +30792,7 @@ fn __action28<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action29<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action31<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::U16 } @@ -29923,7 +30802,7 @@ fn __action29<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action30<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action32<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::U32 } @@ -29933,7 +30812,7 @@ fn __action30<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action31<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action33<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::U64 } @@ -29943,7 +30822,7 @@ fn __action31<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action32<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action34<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::I8 } @@ -29953,7 +30832,7 @@ fn __action32<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action33<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action35<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::I16 } @@ -29963,7 +30842,7 @@ fn __action33<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action34<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action36<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::I32 } @@ -29973,7 +30852,7 @@ fn __action34<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action35<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action37<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::I64 } @@ -29983,7 +30862,7 @@ fn __action35<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action36<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action38<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::Void } @@ -29993,7 +30872,7 @@ fn __action36<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action37<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { +fn __action39<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> Type { Type::Bool } @@ -30003,7 +30882,21 @@ fn __action37<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action38<'input>(input: &'input str, (_, id, _): (usize, &'input str, usize)) -> String { +fn __action40<'input>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, ty, _): (usize, Type, usize), +) -> Type { + Type::Ptr(Box::new(ty)) +} + +#[allow(unused_variables)] +#[allow( + clippy::too_many_arguments, + clippy::needless_lifetimes, + clippy::just_underscores_and_digits +)] +fn __action41<'input>(input: &'input str, (_, id, _): (usize, &'input str, usize)) -> String { id[1..].to_string() } @@ -30013,8 +30906,8 @@ fn __action38<'input>(input: &'input str, (_, id, _): (usize, &'input str, usize clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action39<'input>(input: &'input str, (_, id, _): (usize, &'input str, usize)) -> RegId { - RegId(u32::from_str(&id[1..]).unwrap()) +fn __action42<'input>(input: &'input str, (_, id, _): (usize, u64, usize)) -> Identifier { + id.to_string() } #[allow(unused_variables)] @@ -30023,8 +30916,8 @@ fn __action39<'input>(input: &'input str, (_, id, _): (usize, &'input str, usize clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action40<'input>(input: &'input str, (_, id, _): (usize, &'input str, usize)) -> BasicBlockId { - BasicBlockId(u32::from_str(&id[2..]).unwrap()) +fn __action43<'input>(input: &'input str, (_, id, _): (usize, &'input str, usize)) -> Identifier { + id.to_string() } #[allow(unused_variables)] @@ -30033,7 +30926,7 @@ fn __action40<'input>(input: &'input str, (_, id, _): (usize, &'input str, usize clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action41<'input>( +fn __action44<'input>( input: &'input str, (_, s, _): (usize, core::option::Option<&'input str>, usize), (_, num, _): (usize, u64, usize), @@ -30050,7 +30943,7 @@ fn __action41<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action42<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> u64 { +fn __action45<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usize)) -> u64 { 0 } @@ -30060,7 +30953,7 @@ fn __action42<'input>(input: &'input str, (_, __0, _): (usize, &'input str, usiz clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action43<'input>(input: &'input str, (_, s, _): (usize, &'input str, usize)) -> u64 { +fn __action46<'input>(input: &'input str, (_, s, _): (usize, &'input str, usize)) -> u64 { u64::from_str(s).unwrap() } @@ -30070,7 +30963,7 @@ fn __action43<'input>(input: &'input str, (_, s, _): (usize, &'input str, usize) clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action44<'input>( +fn __action47<'input>( input: &'input str, (_, __0, _): (usize, &'input str, usize), ) -> core::option::Option<&'input str> { @@ -30083,7 +30976,7 @@ fn __action44<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action45<'input>( +fn __action48<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30097,7 +30990,7 @@ fn __action45<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action46<'input>( +fn __action49<'input>( input: &'input str, (_, mut v, _): (usize, alloc::vec::Vec, usize), (_, e, _): (usize, core::option::Option, usize), @@ -30117,7 +31010,7 @@ fn __action46<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action47<'input>( +fn __action50<'input>( input: &'input str, (_, __0, _): (usize, Vec, usize), ) -> core::option::Option> { @@ -30130,7 +31023,7 @@ fn __action47<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action48<'input>( +fn __action51<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30144,7 +31037,7 @@ fn __action48<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action49<'input>( +fn __action52<'input>( input: &'input str, (_, __0, _): (usize, Operand, usize), ) -> core::option::Option { @@ -30157,7 +31050,7 @@ fn __action49<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action50<'input>( +fn __action53<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30171,7 +31064,7 @@ fn __action50<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action51<'input>( +fn __action54<'input>( input: &'input str, (_, mut v, _): (usize, alloc::vec::Vec, usize), (_, e, _): (usize, core::option::Option, usize), @@ -30191,7 +31084,7 @@ fn __action51<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action52<'input>( +fn __action55<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30205,7 +31098,7 @@ fn __action52<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action53<'input>( +fn __action56<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), ) -> alloc::vec::Vec { @@ -30218,7 +31111,7 @@ fn __action53<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action54<'input>( +fn __action57<'input>( input: &'input str, (_, __0, _): (usize, Vec, usize), ) -> core::option::Option> { @@ -30231,7 +31124,7 @@ fn __action54<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action55<'input>( +fn __action58<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30245,7 +31138,7 @@ fn __action55<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action56<'input>( +fn __action59<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30259,7 +31152,7 @@ fn __action56<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action57<'input>( +fn __action60<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), ) -> alloc::vec::Vec { @@ -30272,7 +31165,7 @@ fn __action57<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action58<'input>( +fn __action61<'input>( input: &'input str, (_, mut v, _): (usize, alloc::vec::Vec, usize), (_, e, _): (usize, core::option::Option, usize), @@ -30292,7 +31185,7 @@ fn __action58<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action59<'input>( +fn __action62<'input>( input: &'input str, (_, __0, _): (usize, Function, usize), ) -> alloc::vec::Vec { @@ -30305,7 +31198,7 @@ fn __action59<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action60<'input>( +fn __action63<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), (_, e, _): (usize, Function, usize), @@ -30323,7 +31216,7 @@ fn __action60<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action61<'input>( +fn __action64<'input>( input: &'input str, (_, __0, _): (usize, Type, usize), ) -> core::option::Option { @@ -30336,7 +31229,7 @@ fn __action61<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action62<'input>( +fn __action65<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30350,7 +31243,7 @@ fn __action62<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action63<'input>( +fn __action66<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30364,7 +31257,7 @@ fn __action63<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action64<'input>( +fn __action67<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), ) -> alloc::vec::Vec { @@ -30377,7 +31270,7 @@ fn __action64<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action65<'input>( +fn __action68<'input>( input: &'input str, (_, __0, _): (usize, Type, usize), (_, _, _): (usize, &'input str, usize), @@ -30391,7 +31284,7 @@ fn __action65<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action66<'input>( +fn __action69<'input>( input: &'input str, (_, __0, _): (usize, BasicBlock, usize), ) -> alloc::vec::Vec { @@ -30404,7 +31297,7 @@ fn __action66<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action67<'input>( +fn __action70<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), (_, e, _): (usize, BasicBlock, usize), @@ -30422,7 +31315,7 @@ fn __action67<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action68<'input>( +fn __action71<'input>( input: &'input str, (_, __0, _): (usize, Instruction, usize), ) -> alloc::vec::Vec { @@ -30435,7 +31328,7 @@ fn __action68<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action69<'input>( +fn __action72<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), (_, e, _): (usize, Instruction, usize), @@ -30453,7 +31346,7 @@ fn __action69<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action70<'input>( +fn __action73<'input>( input: &'input str, (_, __0, _): (usize, Arg, usize), ) -> core::option::Option { @@ -30466,7 +31359,7 @@ fn __action70<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action71<'input>( +fn __action74<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30480,7 +31373,7 @@ fn __action71<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action72<'input>( +fn __action75<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30494,7 +31387,7 @@ fn __action72<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action73<'input>( +fn __action76<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), ) -> alloc::vec::Vec { @@ -30507,7 +31400,7 @@ fn __action73<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action74<'input>( +fn __action77<'input>( input: &'input str, (_, __0, _): (usize, Arg, usize), (_, _, _): (usize, &'input str, usize), @@ -30521,7 +31414,7 @@ fn __action74<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action75<'input>( +fn __action78<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, @@ -30535,7 +31428,7 @@ fn __action75<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action76<'input>( +fn __action79<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), ) -> alloc::vec::Vec { @@ -30548,7 +31441,7 @@ fn __action76<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action77<'input>( +fn __action80<'input>( input: &'input str, (_, __0, _): (usize, Operand, usize), (_, _, _): (usize, &'input str, usize), @@ -30562,7 +31455,7 @@ fn __action77<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action78<'input>( +fn __action81<'input>( input: &'input str, (_, __0, _): (usize, Operand, usize), ) -> alloc::vec::Vec { @@ -30575,7 +31468,7 @@ fn __action78<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action79<'input>( +fn __action82<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), (_, e, _): (usize, Operand, usize), @@ -30593,7 +31486,7 @@ fn __action79<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action80<'input>( +fn __action83<'input>( input: &'input str, (_, __0, _): (usize, Arg, usize), ) -> alloc::vec::Vec { @@ -30606,7 +31499,7 @@ fn __action80<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action81<'input>( +fn __action84<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), (_, e, _): (usize, Arg, usize), @@ -30624,7 +31517,7 @@ fn __action81<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action82<'input>( +fn __action85<'input>( input: &'input str, (_, __0, _): (usize, Type, usize), ) -> alloc::vec::Vec { @@ -30637,7 +31530,7 @@ fn __action82<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action83<'input>( +fn __action86<'input>( input: &'input str, (_, v, _): (usize, alloc::vec::Vec, usize), (_, e, _): (usize, Type, usize), @@ -30655,16 +31548,16 @@ fn __action83<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action84<'input>( +fn __action87<'input>( input: &'input str, __0: (usize, &'input str, usize), __1: (usize, u64, usize), ) -> i64 { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action44(input, __0); + let __temp0 = __action47(input, __0); let __temp0 = (__start0, __temp0, __end0); - __action41(input, __temp0, __1) + __action44(input, __temp0, __1) } #[allow(unused_variables)] @@ -30673,12 +31566,12 @@ fn __action84<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action85<'input>(input: &'input str, __0: (usize, u64, usize)) -> i64 { +fn __action88<'input>(input: &'input str, __0: (usize, u64, usize)) -> i64 { let __start0 = __0.0; let __end0 = __0.0; - let __temp0 = __action45(input, &__start0, &__end0); + let __temp0 = __action48(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action41(input, __temp0, __0) + __action44(input, __temp0, __0) } #[allow(unused_variables)] @@ -30687,16 +31580,16 @@ fn __action85<'input>(input: &'input str, __0: (usize, u64, usize)) -> i64 { clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action86<'input>( +fn __action89<'input>( input: &'input str, __0: (usize, Arg, usize), __1: (usize, &'input str, usize), ) -> alloc::vec::Vec { let __start0 = __0.0; let __end0 = __1.2; - let __temp0 = __action74(input, __0, __1); + let __temp0 = __action77(input, __0, __1); let __temp0 = (__start0, __temp0, __end0); - __action80(input, __temp0) + __action83(input, __temp0) } #[allow(unused_variables)] @@ -30705,7 +31598,7 @@ fn __action86<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action87<'input>( +fn __action90<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), __1: (usize, Arg, usize), @@ -30713,9 +31606,9 @@ fn __action87<'input>( ) -> alloc::vec::Vec { let __start0 = __1.0; let __end0 = __2.2; - let __temp0 = __action74(input, __1, __2); + let __temp0 = __action77(input, __1, __2); let __temp0 = (__start0, __temp0, __end0); - __action81(input, __0, __temp0) + __action84(input, __0, __temp0) } #[allow(unused_variables)] @@ -30724,15 +31617,15 @@ fn __action87<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action88<'input>( +fn __action91<'input>( input: &'input str, __0: (usize, core::option::Option, usize), ) -> Vec { let __start0 = __0.0; let __end0 = __0.0; - let __temp0 = __action72(input, &__start0, &__end0); + let __temp0 = __action75(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action51(input, __temp0, __0) + __action54(input, __temp0, __0) } #[allow(unused_variables)] @@ -30741,16 +31634,16 @@ fn __action88<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action89<'input>( +fn __action92<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), __1: (usize, core::option::Option, usize), ) -> Vec { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action73(input, __0); + let __temp0 = __action76(input, __0); let __temp0 = (__start0, __temp0, __end0); - __action51(input, __temp0, __1) + __action54(input, __temp0, __1) } #[allow(unused_variables)] @@ -30759,16 +31652,16 @@ fn __action89<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action90<'input>( +fn __action93<'input>( input: &'input str, __0: (usize, Operand, usize), __1: (usize, &'input str, usize), ) -> alloc::vec::Vec { let __start0 = __0.0; let __end0 = __1.2; - let __temp0 = __action77(input, __0, __1); + let __temp0 = __action80(input, __0, __1); let __temp0 = (__start0, __temp0, __end0); - __action78(input, __temp0) + __action81(input, __temp0) } #[allow(unused_variables)] @@ -30777,7 +31670,7 @@ fn __action90<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action91<'input>( +fn __action94<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), __1: (usize, Operand, usize), @@ -30785,9 +31678,9 @@ fn __action91<'input>( ) -> alloc::vec::Vec { let __start0 = __1.0; let __end0 = __2.2; - let __temp0 = __action77(input, __1, __2); + let __temp0 = __action80(input, __1, __2); let __temp0 = (__start0, __temp0, __end0); - __action79(input, __0, __temp0) + __action82(input, __0, __temp0) } #[allow(unused_variables)] @@ -30796,15 +31689,15 @@ fn __action91<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action92<'input>( +fn __action95<'input>( input: &'input str, __0: (usize, core::option::Option, usize), ) -> Vec { let __start0 = __0.0; let __end0 = __0.0; - let __temp0 = __action75(input, &__start0, &__end0); + let __temp0 = __action78(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action46(input, __temp0, __0) + __action49(input, __temp0, __0) } #[allow(unused_variables)] @@ -30813,16 +31706,16 @@ fn __action92<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action93<'input>( +fn __action96<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), __1: (usize, core::option::Option, usize), ) -> Vec { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action76(input, __0); + let __temp0 = __action79(input, __0); let __temp0 = (__start0, __temp0, __end0); - __action46(input, __temp0, __1) + __action49(input, __temp0, __1) } #[allow(unused_variables)] @@ -30831,16 +31724,16 @@ fn __action93<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action94<'input>( +fn __action97<'input>( input: &'input str, __0: (usize, Type, usize), __1: (usize, &'input str, usize), ) -> alloc::vec::Vec { let __start0 = __0.0; let __end0 = __1.2; - let __temp0 = __action65(input, __0, __1); + let __temp0 = __action68(input, __0, __1); let __temp0 = (__start0, __temp0, __end0); - __action82(input, __temp0) + __action85(input, __temp0) } #[allow(unused_variables)] @@ -30849,7 +31742,7 @@ fn __action94<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action95<'input>( +fn __action98<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), __1: (usize, Type, usize), @@ -30857,9 +31750,9 @@ fn __action95<'input>( ) -> alloc::vec::Vec { let __start0 = __1.0; let __end0 = __2.2; - let __temp0 = __action65(input, __1, __2); + let __temp0 = __action68(input, __1, __2); let __temp0 = (__start0, __temp0, __end0); - __action83(input, __0, __temp0) + __action86(input, __0, __temp0) } #[allow(unused_variables)] @@ -30868,15 +31761,15 @@ fn __action95<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action96<'input>( +fn __action99<'input>( input: &'input str, __0: (usize, core::option::Option, usize), ) -> Vec { let __start0 = __0.0; let __end0 = __0.0; - let __temp0 = __action63(input, &__start0, &__end0); + let __temp0 = __action66(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action58(input, __temp0, __0) + __action61(input, __temp0, __0) } #[allow(unused_variables)] @@ -30885,16 +31778,16 @@ fn __action96<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action97<'input>( +fn __action100<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), __1: (usize, core::option::Option, usize), ) -> Vec { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action64(input, __0); + let __temp0 = __action67(input, __0); let __temp0 = (__start0, __temp0, __end0); - __action58(input, __temp0, __1) + __action61(input, __temp0, __1) } #[allow(unused_variables)] @@ -30903,12 +31796,12 @@ fn __action97<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action98<'input>(input: &'input str, __0: (usize, Arg, usize)) -> Vec { +fn __action101<'input>(input: &'input str, __0: (usize, Arg, usize)) -> Vec { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action70(input, __0); + let __temp0 = __action73(input, __0); let __temp0 = (__start0, __temp0, __end0); - __action88(input, __temp0) + __action91(input, __temp0) } #[allow(unused_variables)] @@ -30917,12 +31810,12 @@ fn __action98<'input>(input: &'input str, __0: (usize, Arg, usize)) -> Vec clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action99<'input>(input: &'input str, __lookbehind: &usize, __lookahead: &usize) -> Vec { +fn __action102<'input>(input: &'input str, __lookbehind: &usize, __lookahead: &usize) -> Vec { let __start0 = *__lookbehind; let __end0 = *__lookahead; - let __temp0 = __action71(input, &__start0, &__end0); + let __temp0 = __action74(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action88(input, __temp0) + __action91(input, __temp0) } #[allow(unused_variables)] @@ -30931,16 +31824,16 @@ fn __action99<'input>(input: &'input str, __lookbehind: &usize, __lookahead: &us clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action100<'input>( +fn __action103<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), __1: (usize, Arg, usize), ) -> Vec { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action70(input, __1); + let __temp0 = __action73(input, __1); let __temp0 = (__start0, __temp0, __end0); - __action89(input, __0, __temp0) + __action92(input, __0, __temp0) } #[allow(unused_variables)] @@ -30949,12 +31842,12 @@ fn __action100<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action101<'input>(input: &'input str, __0: (usize, alloc::vec::Vec, usize)) -> Vec { +fn __action104<'input>(input: &'input str, __0: (usize, alloc::vec::Vec, usize)) -> Vec { let __start0 = __0.2; let __end0 = __0.2; - let __temp0 = __action71(input, &__start0, &__end0); + let __temp0 = __action74(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action89(input, __0, __temp0) + __action92(input, __0, __temp0) } #[allow(unused_variables)] @@ -30963,7 +31856,7 @@ fn __action101<'input>(input: &'input str, __0: (usize, alloc::vec::Vec, us clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action102<'input>( +fn __action105<'input>( input: &'input str, __0: (usize, &'input str, usize), __1: (usize, Type, usize), @@ -30976,7 +31869,7 @@ fn __action102<'input>( ) -> Function { let __start0 = __6.2; let __end0 = __7.0; - let __temp0 = __action56(input, &__start0, &__end0); + let __temp0 = __action59(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); __action9(input, __0, __1, __2, __3, __4, __5, __6, __temp0, __7) } @@ -30987,7 +31880,7 @@ fn __action102<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action103<'input>( +fn __action106<'input>( input: &'input str, __0: (usize, &'input str, usize), __1: (usize, Type, usize), @@ -31001,7 +31894,7 @@ fn __action103<'input>( ) -> Function { let __start0 = __7.0; let __end0 = __7.2; - let __temp0 = __action57(input, __7); + let __temp0 = __action60(input, __7); let __temp0 = (__start0, __temp0, __end0); __action9(input, __0, __1, __2, __3, __4, __5, __6, __temp0, __8) } @@ -31012,16 +31905,16 @@ fn __action103<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action104<'input>( +fn __action107<'input>( input: &'input str, - __0: (usize, BasicBlockId, usize), + __0: (usize, Identifier, usize), __1: (usize, Vec, usize), __2: (usize, &'input str, usize), __3: (usize, alloc::vec::Vec, usize), ) -> BasicBlock { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action54(input, __1); + let __temp0 = __action57(input, __1); let __temp0 = (__start0, __temp0, __end0); __action10(input, __0, __temp0, __2, __3) } @@ -31032,15 +31925,15 @@ fn __action104<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action105<'input>( +fn __action108<'input>( input: &'input str, - __0: (usize, BasicBlockId, usize), + __0: (usize, Identifier, usize), __1: (usize, &'input str, usize), __2: (usize, alloc::vec::Vec, usize), ) -> BasicBlock { let __start0 = __0.2; let __end0 = __1.0; - let __temp0 = __action55(input, &__start0, &__end0); + let __temp0 = __action58(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); __action10(input, __0, __temp0, __1, __2) } @@ -31051,17 +31944,17 @@ fn __action105<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action106<'input>( +fn __action109<'input>( input: &'input str, - __0: (usize, BasicBlockId, usize), + __0: (usize, Identifier, usize), __1: (usize, Vec, usize), __2: (usize, &'input str, usize), ) -> BasicBlock { let __start0 = __2.2; let __end0 = __2.2; - let __temp0 = __action52(input, &__start0, &__end0); + let __temp0 = __action55(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action104(input, __0, __1, __2, __temp0) + __action107(input, __0, __1, __2, __temp0) } #[allow(unused_variables)] @@ -31070,18 +31963,18 @@ fn __action106<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action107<'input>( +fn __action110<'input>( input: &'input str, - __0: (usize, BasicBlockId, usize), + __0: (usize, Identifier, usize), __1: (usize, Vec, usize), __2: (usize, &'input str, usize), __3: (usize, alloc::vec::Vec, usize), ) -> BasicBlock { let __start0 = __3.0; let __end0 = __3.2; - let __temp0 = __action53(input, __3); + let __temp0 = __action56(input, __3); let __temp0 = (__start0, __temp0, __end0); - __action104(input, __0, __1, __2, __temp0) + __action107(input, __0, __1, __2, __temp0) } #[allow(unused_variables)] @@ -31090,16 +31983,16 @@ fn __action107<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action108<'input>( +fn __action111<'input>( input: &'input str, - __0: (usize, BasicBlockId, usize), + __0: (usize, Identifier, usize), __1: (usize, &'input str, usize), ) -> BasicBlock { let __start0 = __1.2; let __end0 = __1.2; - let __temp0 = __action52(input, &__start0, &__end0); + let __temp0 = __action55(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action105(input, __0, __1, __temp0) + __action108(input, __0, __1, __temp0) } #[allow(unused_variables)] @@ -31108,17 +32001,17 @@ fn __action108<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action109<'input>( +fn __action112<'input>( input: &'input str, - __0: (usize, BasicBlockId, usize), + __0: (usize, Identifier, usize), __1: (usize, &'input str, usize), __2: (usize, alloc::vec::Vec, usize), ) -> BasicBlock { let __start0 = __2.0; let __end0 = __2.2; - let __temp0 = __action53(input, __2); + let __temp0 = __action56(input, __2); let __temp0 = (__start0, __temp0, __end0); - __action105(input, __0, __1, __temp0) + __action108(input, __0, __1, __temp0) } #[allow(unused_variables)] @@ -31127,12 +32020,12 @@ fn __action109<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action110<'input>(input: &'input str, __0: (usize, Operand, usize)) -> Vec { +fn __action113<'input>(input: &'input str, __0: (usize, Operand, usize)) -> Vec { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action49(input, __0); + let __temp0 = __action52(input, __0); let __temp0 = (__start0, __temp0, __end0); - __action92(input, __temp0) + __action95(input, __temp0) } #[allow(unused_variables)] @@ -31141,16 +32034,16 @@ fn __action110<'input>(input: &'input str, __0: (usize, Operand, usize)) -> Vec< clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action111<'input>( +fn __action114<'input>( input: &'input str, __lookbehind: &usize, __lookahead: &usize, ) -> Vec { let __start0 = *__lookbehind; let __end0 = *__lookahead; - let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = __action53(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action92(input, __temp0) + __action95(input, __temp0) } #[allow(unused_variables)] @@ -31159,16 +32052,16 @@ fn __action111<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action112<'input>( +fn __action115<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), __1: (usize, Operand, usize), ) -> Vec { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action49(input, __1); + let __temp0 = __action52(input, __1); let __temp0 = (__start0, __temp0, __end0); - __action93(input, __0, __temp0) + __action96(input, __0, __temp0) } #[allow(unused_variables)] @@ -31177,15 +32070,15 @@ fn __action112<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action113<'input>( +fn __action116<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), ) -> Vec { let __start0 = __0.2; let __end0 = __0.2; - let __temp0 = __action50(input, &__start0, &__end0); + let __temp0 = __action53(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action93(input, __0, __temp0) + __action96(input, __0, __temp0) } #[allow(unused_variables)] @@ -31194,17 +32087,16 @@ fn __action113<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action114<'input>( +fn __action117<'input>( input: &'input str, __0: (usize, &'input str, usize), - __1: (usize, Type, usize), - __2: (usize, Operand, usize), + __1: (usize, Operand, usize), ) -> Instruction { - let __start0 = __2.0; - let __end0 = __2.2; - let __temp0 = __action49(input, __2); + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action52(input, __1); let __temp0 = (__start0, __temp0, __end0); - __action20(input, __0, __1, __temp0) + __action20(input, __0, __temp0) } #[allow(unused_variables)] @@ -31213,16 +32105,12 @@ fn __action114<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action115<'input>( - input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, Type, usize), -) -> Instruction { - let __start0 = __1.2; - let __end0 = __1.2; - let __temp0 = __action50(input, &__start0, &__end0); +fn __action118<'input>(input: &'input str, __0: (usize, &'input str, usize)) -> Instruction { + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action53(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action20(input, __0, __1, __temp0) + __action20(input, __0, __temp0) } #[allow(unused_variables)] @@ -31231,14 +32119,14 @@ fn __action115<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action116<'input>( +fn __action119<'input>( input: &'input str, - __0: (usize, BasicBlockId, usize), + __0: (usize, Identifier, usize), __1: (usize, Vec, usize), ) -> Target { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action47(input, __1); + let __temp0 = __action50(input, __1); let __temp0 = (__start0, __temp0, __end0); __action23(input, __0, __temp0) } @@ -31249,10 +32137,10 @@ fn __action116<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action117<'input>(input: &'input str, __0: (usize, BasicBlockId, usize)) -> Target { +fn __action120<'input>(input: &'input str, __0: (usize, Identifier, usize)) -> Target { let __start0 = __0.2; let __end0 = __0.2; - let __temp0 = __action48(input, &__start0, &__end0); + let __temp0 = __action51(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); __action23(input, __0, __temp0) } @@ -31263,12 +32151,12 @@ fn __action117<'input>(input: &'input str, __0: (usize, BasicBlockId, usize)) -> clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action118<'input>(input: &'input str, __0: (usize, Type, usize)) -> Vec { +fn __action121<'input>(input: &'input str, __0: (usize, Type, usize)) -> Vec { let __start0 = __0.0; let __end0 = __0.2; - let __temp0 = __action61(input, __0); + let __temp0 = __action64(input, __0); let __temp0 = (__start0, __temp0, __end0); - __action96(input, __temp0) + __action99(input, __temp0) } #[allow(unused_variables)] @@ -31277,12 +32165,12 @@ fn __action118<'input>(input: &'input str, __0: (usize, Type, usize)) -> Vec(input: &'input str, __lookbehind: &usize, __lookahead: &usize) -> Vec { +fn __action122<'input>(input: &'input str, __lookbehind: &usize, __lookahead: &usize) -> Vec { let __start0 = *__lookbehind; let __end0 = *__lookahead; - let __temp0 = __action62(input, &__start0, &__end0); + let __temp0 = __action65(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action96(input, __temp0) + __action99(input, __temp0) } #[allow(unused_variables)] @@ -31291,16 +32179,16 @@ fn __action119<'input>(input: &'input str, __lookbehind: &usize, __lookahead: &u clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action120<'input>( +fn __action123<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), __1: (usize, Type, usize), ) -> Vec { let __start0 = __1.0; let __end0 = __1.2; - let __temp0 = __action61(input, __1); + let __temp0 = __action64(input, __1); let __temp0 = (__start0, __temp0, __end0); - __action97(input, __0, __temp0) + __action100(input, __0, __temp0) } #[allow(unused_variables)] @@ -31309,15 +32197,15 @@ fn __action120<'input>( clippy::needless_lifetimes, clippy::just_underscores_and_digits )] -fn __action121<'input>( +fn __action124<'input>( input: &'input str, __0: (usize, alloc::vec::Vec, usize), ) -> Vec { let __start0 = __0.2; let __end0 = __0.2; - let __temp0 = __action62(input, &__start0, &__end0); + let __temp0 = __action65(input, &__start0, &__end0); let __temp0 = (__start0, __temp0, __end0); - __action97(input, __0, __temp0) + __action100(input, __0, __temp0) } #[allow(clippy::type_complexity, dead_code)] diff --git a/ir/crates/front/src/module.rs b/ir/crates/front/src/module.rs index ccb84fc..771f24b 100644 --- a/ir/crates/front/src/module.rs +++ b/ir/crates/front/src/module.rs @@ -21,24 +21,24 @@ pub struct Function { #[derive(Debug, PartialEq, Eq)] pub struct Arg { - pub id: RegId, + pub id: Identifier, pub ty: Type, } #[derive(Debug, PartialEq, Eq)] pub struct BasicBlock { pub args: Vec, - pub id: BasicBlockId, + pub id: Identifier, pub instructions: Vec, } #[derive(Debug, PartialEq, Eq)] pub enum Instruction { - Add(RegId, Type, Operand, Operand), - Sub(RegId, Type, Operand, Operand), - ICmp(RegId, CmpOp, Type, Operand, Operand), - Op(RegId, Type, Operand), - Ret(Type, Option), + Add(Identifier, Type, Operand, Operand), + Sub(Identifier, Type, Operand, Operand), + Cmp(Identifier, CmpOp, Type, Operand, Operand), + Op(Identifier, Type, Operand), + Ret(Option), Condbr(Operand, Target, Target), Br(Target), } @@ -50,15 +50,15 @@ pub enum CmpOp { } #[derive(Debug, PartialEq, Eq)] -pub struct Target(pub BasicBlockId, pub Option>); +pub struct Target(pub Identifier, pub Option>); #[derive(Debug, PartialEq, Eq)] pub enum Operand { Literal(Literal), - Register(RegId), + Value(Identifier), } -#[derive(Debug, PartialEq, Eq, Copy, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum Type { Bool, U8, @@ -70,18 +70,16 @@ pub enum Type { I32, I64, Void, + Ptr(Box), } -#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum Literal { - Int(i64), + Int(i64, Type), + Bool(bool), } -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -pub struct RegId(pub u32); - -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -pub struct BasicBlockId(pub u32); +pub type Identifier = String; #[cfg(test)] mod tests { @@ -90,12 +88,11 @@ mod tests { module::{ Arg, BasicBlock, - BasicBlockId, Function, Instruction, Operand, - RegId, Type, + ValueId, }, }; @@ -108,7 +105,7 @@ fun i32 @add(i32, i32) { bb0(i32 v0, i32 v1): v2 = add i32 v0, v1; v3 = add i32 v2, v1; - ret i32 v3; + ret v3; } ", ) @@ -123,26 +120,26 @@ bb0(i32 v0, i32 v1): id: BasicBlockId(0), instructions: vec![ Instruction::Add( - RegId(2), + ValueId(2), Type::I32, - Operand::Register(RegId(0)), - Operand::Register(RegId(1)) + Operand::Value(ValueId(0)), + Operand::Value(ValueId(1)) ), Instruction::Add( - RegId(3), + ValueId(3), Type::I32, - Operand::Register(RegId(2)), - Operand::Register(RegId(1)) + Operand::Value(ValueId(2)), + Operand::Value(ValueId(1)) ), - Instruction::Ret(Type::I32, Some(Operand::Register(RegId(3)))), + Instruction::Ret(Type::I32, Some(Operand::Value(ValueId(3)))), ], args: vec![ Arg { - id: RegId(0), + id: ValueId(0), ty: Type::I32, }, Arg { - id: RegId(1), + id: ValueId(1), ty: Type::I32, }, ], diff --git a/ir/crates/middle/Cargo.toml b/ir/crates/middle/Cargo.toml index f1612dd..a014fda 100644 --- a/ir/crates/middle/Cargo.toml +++ b/ir/crates/middle/Cargo.toml @@ -12,6 +12,8 @@ tracing-test = "0.2.4" petgraph = "0.6.4" smallvec = "1.13.1" natrix_front = { path = "../front" } -cranelift-entity = "0.105.2" log = "0.4.20" -index_vec = "0.1.3" +slotmap = "1.0.7" +indexmap = "2.2.6" +itertools = "0.13.0" +derive_more = "0.99.18" diff --git a/ir/crates/middle/src/analysis/dataflow/backward.rs b/ir/crates/middle/src/analysis/dataflow/backward.rs index a199eb0..755ed9e 100644 --- a/ir/crates/middle/src/analysis/dataflow/backward.rs +++ b/ir/crates/middle/src/analysis/dataflow/backward.rs @@ -1,6 +1,6 @@ use std::collections::VecDeque; -use cranelift_entity::EntitySet; +use indexmap::IndexSet; use crate::{ analysis::dataflow::{ @@ -8,14 +8,14 @@ use crate::{ DFState, InstrWalker, }, - cfg::BasicBlockId, + cfg::BasicBlockRef, Function, Instr, }; pub struct BackwardAnalysisRunner<'a, A: Analysis> { pub state: DFState, - visited: EntitySet, - worklist: VecDeque, + visited: IndexSet, + worklist: VecDeque, pub function: &'a mut Function, _analysis: std::marker::PhantomData, } @@ -24,14 +24,14 @@ impl<'a, A: Analysis> BackwardAnalysisRunner<'a, A> { let worklist = function.cfg.dfs_postorder().collect(); Self { worklist, - visited: EntitySet::default(), + visited: IndexSet::default(), state: DFState::new(), function, _analysis: std::marker::PhantomData, } } - pub fn next_bb(&mut self) -> Option<(BasicBlockId, BAInstrWalker)> { + pub fn next_bb(&mut self) -> Option<(BasicBlockRef, BAInstrWalker)> { let bb_id = self.worklist.pop_front()?; let bb_state = self .state @@ -39,7 +39,7 @@ impl<'a, A: Analysis> BackwardAnalysisRunner<'a, A> { assert!(self.visited.insert(bb_id), "Block has already been visited"); for pred in self.function.cfg.predecessors(bb_id) { let mut succs = self.function.cfg.successors(pred); - let all_succs_visited = succs.all(|succ| self.visited.contains(succ)); + let all_succs_visited = succs.all(|succ| self.visited.contains(&succ)); assert!(all_succs_visited, "Not all successors have been visited"); // if !all_succs_visited { // continue; @@ -60,26 +60,27 @@ impl<'a, A: Analysis> BackwardAnalysisRunner<'a, A> { while let Some((_, walker)) = self.next_bb() { walker.drain(); } - self.state.state[self.function.cfg.entry_block()].clone() + self.state.state[self.function.cfg.entry_block_ref()].clone() } } pub struct BAInstrWalker<'a, 'b, A: Analysis> { - basic_block: BasicBlockId, + basic_block: BasicBlockRef, pub function: &'b mut Function, bb_state: &'a mut A::V, } impl<'a, 'b, A: Analysis> InstrWalker for BAInstrWalker<'a, 'b, A> { - fn walk(mut self, mut h: H) + fn walk(self, mut h: H) where H: FnMut(&mut Instr, &A::V), { - let bb = self.function.cfg.basic_block_mut(self.basic_block); - A::analyse_term(bb.terminator(), self.bb_state); - for instr in bb.instructions_mut().rev() { + let bb = &mut self.function.cfg.basic_blocks[self.basic_block]; + A::analyse_term(bb, bb.terminator(), self.bb_state); + for instr in bb.instructions.iter().copied().rev() { + let instr = &mut self.function.cfg.instructions[instr]; h(instr, &*self.bb_state); - A::analyse_instr(instr, self.bb_state); + A::analyse_instr(bb, instr, self.bb_state); } } } diff --git a/ir/crates/middle/src/analysis/dataflow/concrete_value.rs b/ir/crates/middle/src/analysis/dataflow/concrete_value.rs index 83d7258..d451da9 100644 --- a/ir/crates/middle/src/analysis/dataflow/concrete_value.rs +++ b/ir/crates/middle/src/analysis/dataflow/concrete_value.rs @@ -8,14 +8,17 @@ use crate::{ forward::ForwardAnalysisRunner, lattice, }, - cfg::Terminator, + cfg::{ + BasicBlock, + Terminator, + }, instruction::{ Const, Op, }, Instr, InstrKind, - VReg, + Value, }; #[derive(Debug, Default, Clone)] @@ -55,20 +58,20 @@ pub struct Analysis; pub type AnalysisRunner<'a> = ForwardAnalysisRunner<'a, Analysis>; impl super::Analysis for Analysis { - type V = FxHashMap; + type V = FxHashMap; - fn analyse_instr(instr: &Instr, values: &mut Self::V) { - if let InstrKind::Op(instr) = &instr.kind { - if let Op::Const(const_val) = &instr.op { + fn analyse_instr(bb: &BasicBlock, instr: &Instr, values: &mut Self::V) { + if let InstrKind::Op(op_instr) = &instr.kind { + if let Op::Const(const_val) = &op_instr.op { values.insert( - instr.value, + instr.value(), ConcreteValues::from_single_value(const_val.clone()), ); } }; } - fn analyse_term(term: &Terminator, v: &mut Self::V) { + fn analyse_term(bb: &BasicBlock, term: &Terminator, v: &mut Self::V) { // todo: add concrete branch args } } diff --git a/ir/crates/middle/src/analysis/dataflow/forward.rs b/ir/crates/middle/src/analysis/dataflow/forward.rs index f4c3cce..51b9232 100644 --- a/ir/crates/middle/src/analysis/dataflow/forward.rs +++ b/ir/crates/middle/src/analysis/dataflow/forward.rs @@ -1,4 +1,4 @@ -use cranelift_entity::EntitySet; +use indexmap::IndexSet; use crate::{ analysis::dataflow::{ @@ -6,15 +6,15 @@ use crate::{ DFState, InstrWalker, }, - cfg::BasicBlockId, + cfg::BasicBlockRef, Function, Instr, }; pub struct ForwardAnalysisRunner<'a, A: Analysis> { pub state: DFState, - visited: EntitySet, - worklist: Vec, + visited: IndexSet, + worklist: Vec, pub function: &'a mut Function, _analysis: std::marker::PhantomData, } @@ -22,15 +22,15 @@ pub struct ForwardAnalysisRunner<'a, A: Analysis> { impl<'a, A: Analysis> ForwardAnalysisRunner<'a, A> { pub fn new(function: &'a mut Function) -> Self { Self { - worklist: vec![function.cfg.entry_block()], - visited: EntitySet::default(), + worklist: vec![function.cfg.entry_block_ref()], + visited: IndexSet::default(), state: DFState::new(), function, _analysis: std::marker::PhantomData, } } - pub fn next_bb(&mut self) -> Option<(BasicBlockId, FAInstrWalker)> { + pub fn next_bb(&mut self) -> Option<(BasicBlockRef, FAInstrWalker)> { let bb_id = self.worklist.pop()?; let bb_state = self .state @@ -39,7 +39,7 @@ impl<'a, A: Analysis> ForwardAnalysisRunner<'a, A> { for successor in self.function.cfg.successors(bb_id) { let mut predecessors = self.function.cfg.predecessors(successor); let all_preds_visited = - predecessors.all(|predecessor| self.visited.contains(predecessor)); + predecessors.all(|predecessor| self.visited.contains(&predecessor)); if !all_preds_visited { continue; } @@ -48,7 +48,7 @@ impl<'a, A: Analysis> ForwardAnalysisRunner<'a, A> { Some(( bb_id, FAInstrWalker { - basic_block: bb_id, + bb_ref: bb_id, function: self.function, bb_state, }, @@ -57,21 +57,23 @@ impl<'a, A: Analysis> ForwardAnalysisRunner<'a, A> { } pub struct FAInstrWalker<'a, 'b, A: Analysis> { - basic_block: BasicBlockId, + bb_ref: BasicBlockRef, pub function: &'b mut Function, bb_state: &'a mut A::V, } impl<'a, 'b, A: Analysis> InstrWalker for FAInstrWalker<'a, 'b, A> { - fn walk(mut self, mut h: H) + fn walk(self, mut h: H) where H: FnMut(&mut Instr, &A::V), { - let bb = self.function.cfg.basic_block_mut(self.basic_block); - for instr in bb.instructions_mut() { + let bb = &self.function.cfg.basic_blocks[self.bb_ref]; + let instructions = bb.instructions.clone(); + for instr_ref in instructions { + let instr = &mut self.function.cfg.instructions[instr_ref]; h(instr, &*self.bb_state); - A::analyse_instr(instr, &mut self.bb_state); + A::analyse_instr(bb, instr, self.bb_state); } - A::analyse_term(&bb.terminator(), &mut self.bb_state); + A::analyse_term(bb, bb.terminator(), self.bb_state); } } diff --git a/ir/crates/middle/src/analysis/dataflow/mod.rs b/ir/crates/middle/src/analysis/dataflow/mod.rs index 8d63e6b..e71a028 100644 --- a/ir/crates/middle/src/analysis/dataflow/mod.rs +++ b/ir/crates/middle/src/analysis/dataflow/mod.rs @@ -3,16 +3,17 @@ use std::{ hash::Hash, }; -use cranelift_entity::SecondaryMap; use lattice::Value; use rustc_hash::{ FxHashMap, FxHashSet, }; +use slotmap::SecondaryMap; use crate::{ cfg::{ - BasicBlockId, + BasicBlock, + BasicBlockRef, Terminator, }, Instr, @@ -24,14 +25,14 @@ mod forward; pub mod lattice; pub mod use_def; -type InstrValue = crate::VReg; +type InstrValue = crate::Value; #[derive(Default)] pub struct DFState where V: Clone, { - state: SecondaryMap, + state: SecondaryMap, } impl DFState @@ -42,18 +43,18 @@ where Self::default() } - pub fn get_mut(&mut self, bb: BasicBlockId) -> &mut V { + pub fn get_mut(&mut self, bb: BasicBlockRef) -> &mut V { &mut self.state[bb] } - pub fn get(&self, bb: BasicBlockId) -> &V { + pub fn get(&self, bb: BasicBlockRef) -> &V { &self.state[bb] } pub fn create( &mut self, - bb: BasicBlockId, - join_partners: impl IntoIterator, + bb: BasicBlockRef, + join_partners: impl IntoIterator, ) -> &mut V { for join_partner in join_partners { let pred_state = self.get(join_partner).clone(); @@ -77,9 +78,9 @@ pub trait InstrWalker: Sized { pub trait Analysis { type V: Value; - fn analyse_instr(instr: &Instr, v: &mut Self::V); + fn analyse_instr(bb: &BasicBlock, instr: &Instr, v: &mut Self::V); - fn analyse_term(term: &Terminator, v: &mut Self::V); + fn analyse_term(bb: &BasicBlock, term: &Terminator, v: &mut Self::V); } pub type DFValueState = FxHashMap; diff --git a/ir/crates/middle/src/analysis/dataflow/use_def.rs b/ir/crates/middle/src/analysis/dataflow/use_def.rs index c4195b0..36af964 100644 --- a/ir/crates/middle/src/analysis/dataflow/use_def.rs +++ b/ir/crates/middle/src/analysis/dataflow/use_def.rs @@ -1,4 +1,4 @@ -use cranelift_entity::SecondaryMap; +use rustc_hash::FxHashMap; use crate::{ analysis::dataflow::{ @@ -6,84 +6,42 @@ use crate::{ lattice, }, cfg::{ - BasicBlockId, - InstrId, + BasicBlock, + BasicBlockRef, Terminator, }, instruction::Op, Instr, - VReg, + Value, }; -#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -pub struct InstrUid(pub BasicBlockId, pub InstrId); - -impl From<(BasicBlockId, InstrId)> for InstrUid { - fn from((bb, instr): (BasicBlockId, InstrId)) -> Self { - Self(bb, instr) - } -} - -impl From<&Instr> for InstrUid { - fn from(instr: &Instr) -> Self { - Self(instr.bb, instr.id) - } -} - -impl From<&Terminator> for InstrUid { - fn from(term: &Terminator) -> Self { - Self(term.bb, InstrId::from_usize_unchecked(InstrId::MAX_INDEX)) - } -} - #[derive(Debug, Default, Clone)] -pub struct UseDef(SecondaryMap, Option>)>); - -impl UseDef { - pub fn register_def(&mut self, def: VReg, instr_uid: InstrUid) -> Option { - self.0[def].0.replace(instr_uid) - } - - pub fn register_use(&mut self, use_: VReg, instr_uid: InstrUid) { - let uses = self.0[use_].1.get_or_insert_with(Vec::new); - uses.push(instr_uid); - } +pub struct Uses(FxHashMap>); - pub fn is_defined(&self, def: VReg) -> bool { - self.0[def].0.is_some() +impl Uses { + pub fn register_use(&mut self, use_: Value, bb_ref: BasicBlockRef) { + let uses = self.0.entry(use_).or_insert_with(Vec::new); + uses.push(bb_ref); } - pub fn get_def(&self, def: VReg) -> Option { - self.0[def].0 + pub fn is_used(&self, value: Value) -> bool { + self.0.contains_key(&value) } - - /// Returns all defined, but unused registers - pub fn unused_regs(&self) -> impl Iterator + '_ { - self.0.iter().filter_map(|(vreg, (def, uses))| { - def.and_then(|_| { - let is_unused = uses.as_ref().map(|uses| uses.is_empty()).unwrap_or(true); - if is_unused { - Some(vreg) - } else { - None - } - }) - }) + /// Returns all defined, but unused values + pub fn unused_values<'v>( + &'v self, + values: impl Iterator + 'v, + ) -> impl Iterator + 'v { + values.filter(|value| !self.is_used(*value)) } } -impl lattice::Value for UseDef { +impl lattice::Value for Uses { fn join(&mut self, other: Self) -> bool { let mut changed = false; - for (vreg, (def, uses)) in other.0.iter() { - if let Some(def) = def { - let old_def = self.register_def(vreg, *def); - if old_def.is_none() || old_def != Some(*def) { - changed = true; - } - } - for use_ in uses.iter().flatten().copied() { - self.register_use(vreg, use_); + for (value, uses) in other.0.iter() { + for use_ in uses.iter().copied() { + self.register_use(*value, use_); changed = true; } } @@ -96,27 +54,19 @@ pub struct Analysis; pub type AnalysisRunner<'a> = BackwardAnalysisRunner<'a, Analysis>; impl super::Analysis for Analysis { - type V = UseDef; + type V = Uses; - fn analyse_instr(instr: &Instr, use_def: &mut Self::V) { - let def = instr.defined_vreg(); - if let Some(def) = def { - use_def.register_def(def, instr.into()); - } + fn analyse_instr(bb: &BasicBlock, instr: &Instr, use_def: &mut Self::V) { for op in instr.used() { - if let Op::Vreg(use_) = op { - use_def.register_use(*use_, instr.into()); + if let Op::Value(use_) = op { + use_def.register_use(*use_, bb.id); } } } - fn analyse_term(term: &Terminator, use_def: &mut Self::V) { - for used_vreg in term - .used() - .into_iter() - .flat_map(|op| op.try_as_vreg_ref().copied()) - { - use_def.register_use(used_vreg, term.into()); + fn analyse_term(bb: &BasicBlock, term: &Terminator, use_def: &mut Self::V) { + for used_value in term.used().into_iter().flat_map(|op| op.referenced_value()) { + use_def.register_use(used_value, bb.id); } } } diff --git a/ir/crates/middle/src/cfg/builder.rs b/ir/crates/middle/src/cfg/builder.rs index 797496d..2a9bc94 100644 --- a/ir/crates/middle/src/cfg/builder.rs +++ b/ir/crates/middle/src/cfg/builder.rs @@ -1,9 +1,8 @@ -use cranelift_entity::EntityRef; - use crate::{ cfg::{ - BasicBlockId, - Terminator, + BBArgRef, + BasicBlockRef, + InstrRef, TerminatorKind, }, function::Function, @@ -12,23 +11,20 @@ use crate::{ BinOpInstr, CmpInstr, CmpOp, - Instr, InstrKind, LoadInstr, Op, OpInstr, StoreInstr, - VRegData, }, ty::Type, - VReg, + Value, }; #[derive(Debug)] pub struct Builder<'func> { - func: &'func mut Function, - current_bb: Option, - next_vreg: Option, + pub func: &'func mut Function, + current_bb: Option, } impl<'func> Builder<'func> { @@ -36,21 +32,20 @@ impl<'func> Builder<'func> { Self { func, current_bb: None, - next_vreg: None, } } - pub fn start_bb(&mut self) -> BasicBlockId { - let bb = self.create_bb(); + pub fn start_bb(&mut self, symbol: String) -> BasicBlockRef { + let bb = self.create_bb(symbol); self.current_bb = Some(bb); bb } - pub fn create_bb(&mut self) -> BasicBlockId { - self.func.cfg.new_basic_block() + pub fn create_bb(&mut self, symbol: String) -> BasicBlockRef { + self.func.cfg.new_basic_block(symbol) } - pub fn set_bb(&mut self, bb: BasicBlockId) { + pub fn set_bb(&mut self, bb: BasicBlockRef) { self.current_bb = Some(bb); } @@ -60,131 +55,64 @@ impl<'func> Builder<'func> { self.current_bb = None; } - pub fn alloca(&mut self, ty: Type, num_elements: Option) -> VReg { - let value = self.next_vreg(Type::Ptr(Box::new(ty.clone()))); - let alloca = AllocaInstr::new(value, num_elements); - self.add_instr(ty, InstrKind::Alloca(alloca)); - value + pub fn alloca(&mut self, symbol: String, ty: Type, num_elements: Option) -> InstrRef { + let alloca = AllocaInstr::new(ty.clone(), num_elements); + self.add_instr(Type::Ptr(Box::new(ty)), InstrKind::Alloca(alloca), symbol) } - pub fn add(&mut self, ty: Type, lhs: Op, rhs: Op) -> VReg { - let value = self.next_vreg(ty.clone()); - let instr = BinOpInstr { value, lhs, rhs }; - self.add_instr(ty, InstrKind::Add(instr)); - value + pub fn add(&mut self, symbol: String, ty: Type, lhs: Op, rhs: Op) -> InstrRef { + let instr = BinOpInstr { lhs, rhs }; + self.add_instr(ty, InstrKind::Add(instr), symbol) } - pub fn sub(&mut self, ty: Type, lhs: Op, rhs: Op) -> VReg { - let value = self.next_vreg(ty.clone()); - let sub = BinOpInstr { value, lhs, rhs }; - self.add_instr(ty, InstrKind::Sub(sub)); - value + pub fn sub(&mut self, symbol: String, ty: Type, lhs: Op, rhs: Op) -> InstrRef { + let sub = BinOpInstr { lhs, rhs }; + self.add_instr(ty, InstrKind::Sub(sub), symbol) } - pub fn store(&mut self, ty: Type, dest: VReg, value: Op) { + pub fn store(&mut self, symbol: String, dest: Value, value: Op) { let store = InstrKind::Store(StoreInstr { value, dest }); - self.add_instr(ty, store); + self.add_instr(Type::Void, store, symbol); } - pub fn load(&mut self, ty: Type, source: Op) -> VReg { - let value = self.next_vreg(ty.clone()); - let load = InstrKind::Load(LoadInstr { - dest: value, - source, - }); - self.add_instr(ty, load); - value + pub fn load(&mut self, symbol: String, ty: Type, source: Op) -> InstrRef { + let load = InstrKind::Load(LoadInstr { source }); + self.add_instr(ty, load, symbol) } - pub fn op(&mut self, ty: Type, op: Op) -> VReg { - let value = self.next_vreg(ty.clone()); - let op_instr = OpInstr { value, op }; - self.add_instr(ty, InstrKind::Op(op_instr)); - value + pub fn op(&mut self, symbol: String, ty: Type, op: Op) -> InstrRef { + let op_instr = OpInstr { op }; + self.add_instr(ty, InstrKind::Op(op_instr), symbol) } - pub fn icmp(&mut self, condition: CmpOp, op1: Op, op2: Op) -> VReg { - let ty = Type::Bool; - let value = self.next_vreg(ty.clone()); + pub fn icmp(&mut self, symbol: String, condition: CmpOp, op1: Op, op2: Op) -> InstrRef { self.add_instr( - ty, + Type::Bool, InstrKind::Cmp(CmpInstr { - value, op: condition, lhs: op1, rhs: op2, }), - ); - value + symbol, + ) } - pub fn add_argument(&mut self, ty: Type) -> VReg { - let value = self.next_vreg(ty); + pub fn add_argument(&mut self, ty: Type, symbol: String) -> BBArgRef { let current_bb = self.current_bb(); - self.func - .cfg - .basic_block_mut(current_bb) - .add_argument(value); - value + self.func.cfg.add_bb_argument(current_bb, ty, symbol) } - pub fn get_bb_arguments(&self, bb: BasicBlockId) -> &[VReg] { - &self.func.cfg.basic_block(bb).arguments + pub fn bb_arguments(&self, bb_ref: BasicBlockRef) -> impl Iterator + '_ { + self.func.cfg.basic_blocks[bb_ref].arguments.iter().copied() } - pub fn add_instr(&mut self, ty: Type, instr_kind: InstrKind) { + pub fn add_instr(&mut self, ty: Type, instr_kind: InstrKind, symbol: String) -> InstrRef { self.func .cfg - .add_instruction(self.current_bb(), ty, instr_kind); - } - - /// Tells the builder to use this vreg for the next instruction - /// instead of continuing serially. - pub(crate) fn set_next_vreg(&mut self, vreg: VReg) { - self.next_vreg = Some(vreg); - } - - pub fn vreg(&self, vreg: VReg) -> &VRegData { - &self.func.cfg.vregs[vreg] + .add_instruction(self.current_bb(), ty, instr_kind, symbol) } - fn next_vreg(&mut self, ty: Type) -> VReg { - match self.next_vreg.take() { - Some(vreg) => { - let vreg_idx = vreg.0 as usize; - if vreg_idx < self.func.cfg.vregs.len() { - let current_bb = self.current_bb(); - let vreg = &mut self.func.cfg.vregs[vreg]; - vreg.ty = ty; - vreg.defined_in = current_bb; - } else { - for _ in self.func.cfg.vregs.len()..vreg_idx { - self.func.cfg.new_vreg(VRegData { - ty: Type::Void, - defined_in: self.current_bb(), - }); - } - self.func.cfg.new_vreg(VRegData { - ty, - defined_in: self.current_bb(), - }); - } - vreg - } - None => self.func.cfg.new_vreg(VRegData { - ty, - defined_in: self.current_bb(), - }), - } - } - - pub(crate) fn max_bb_id(&self) -> Option { - Some(BasicBlockId::new( - self.func.cfg.basic_blocks.len().checked_sub(1)?, - )) - } - - pub fn current_bb(&self) -> BasicBlockId { + pub fn current_bb(&self) -> BasicBlockRef { self.current_bb.unwrap() } } @@ -213,15 +141,15 @@ mod tests { fn should_add_allocas_to_entry_block() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - cfg_builder.start_bb(); + cfg_builder.start_bb("bb0".into()); - cfg_builder.alloca(Type::I32, None); + cfg_builder.alloca("v0".into(), Type::I32, None); cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); assert_eq!( function.cfg.to_string(), "bb0: - v0 = alloca i32; - ret void; + &i32 %v0 = alloca i32; + ret; " ); } @@ -230,8 +158,9 @@ mod tests { fn should_add_sub_to_entry_block() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - cfg_builder.start_bb(); + cfg_builder.start_bb("bb0".into()); cfg_builder.sub( + "v0".into(), Type::I32, Op::Const(Const::Int(Type::I32, 0)), Op::Const(Const::Int(Type::I32, 1)), @@ -240,8 +169,8 @@ mod tests { assert_eq!( function.cfg.to_string(), "bb0: - v0 = sub i32 0, 1; - ret void; + i32 %v0 = sub 0i32, 1i32; + ret; " ); } @@ -250,14 +179,14 @@ mod tests { fn should_add_op_to_entry_block() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - cfg_builder.start_bb(); - cfg_builder.op(Type::I32, Op::Const(Const::Int(Type::I32, 0))); + cfg_builder.start_bb("bb0".into()); + cfg_builder.op("v0".into(), Type::I32, Op::Const(Const::Int(Type::I32, 0))); cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); assert_eq!( function.cfg.to_string(), "bb0: - v0 = i32 0; - ret void; + i32 %v0 = 0i32; + ret; " ); } @@ -266,15 +195,19 @@ mod tests { fn should_add_store_to_entry_block() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - cfg_builder.start_bb(); - let alloca_value = cfg_builder.alloca(Type::I32, None); - cfg_builder.store(Type::I32, alloca_value, Op::Const(Const::Int(Type::I32, 0))); + cfg_builder.start_bb("bb0".into()); + let alloca_value = cfg_builder.alloca("v0".into(), Type::I32, None); + cfg_builder.store( + "t".into(), + alloca_value.into(), + Op::Const(Const::Int(Type::I32, 0)), + ); cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); assert_eq!( "bb0: - v0 = alloca i32; - store i32 0, ptr v0; - ret void; + &i32 %v0 = alloca i32; + void %t = store 0i32, %v0; + ret; ", function.cfg.to_string() ); @@ -284,15 +217,15 @@ mod tests { fn should_add_load_to_entry_block() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - cfg_builder.start_bb(); - let alloca_value = cfg_builder.alloca(Type::I32, None); - cfg_builder.load(Type::I32, Op::Vreg(alloca_value)); + cfg_builder.start_bb("bb0".into()); + let alloca_value = cfg_builder.alloca("v0".into(), Type::I32, None); + cfg_builder.load("v1".into(), Type::I32, Op::Value(alloca_value.into())); cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); assert_eq!( "bb0: - v0 = alloca i32; - v1 = load i32 ptr v0; - ret void; + &i32 %v0 = alloca i32; + i32 %v1 = load %v0; + ret; ", function.cfg.to_string() ); @@ -302,16 +235,17 @@ mod tests { fn should_add_conditional_branch_to_entry_block() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - let _bb0 = cfg_builder.start_bb(); - let bb1 = cfg_builder.create_bb(); - let bb2 = cfg_builder.create_bb(); + let _bb0 = cfg_builder.start_bb("bb0".into()); + let bb1 = cfg_builder.create_bb("bb1".into()); + let bb2 = cfg_builder.create_bb("bb2".into()); let cmp_value = cfg_builder.icmp( + "v0".into(), CmpOp::Eq, Op::Const(Const::Int(Type::I32, 0)), Op::Const(Const::Int(Type::I32, 1)), ); cfg_builder.end_bb(TerminatorKind::CondBranch(CondBranchTerm { - cond: Op::Vreg(cmp_value), + cond: Op::Value(cmp_value.into()), true_target: JumpTarget::no_args(bb1), false_target: JumpTarget::no_args(bb2), })); @@ -321,12 +255,12 @@ mod tests { cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); assert_eq!( "bb0: - v0 = icmp bool eq 0, 1; - condbr v0, bb1, bb2; + bool %v0 = cmp eq 0i32, 1i32; + condbr %v0, bb1, bb2; bb1: - ret void; + ret; bb2: - ret void; + ret; ", function.cfg.to_string() ); @@ -336,49 +270,49 @@ bb2: fn should_add_basic_block_arguments() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - let _bb0 = cfg_builder.start_bb(); - let bb1 = cfg_builder.create_bb(); - let bb2 = cfg_builder.create_bb(); - let bb3 = cfg_builder.create_bb(); - let bb4 = cfg_builder.create_bb(); + let _bb0 = cfg_builder.start_bb("bb0".into()); + let bb1 = cfg_builder.create_bb("bb1".into()); + let bb2 = cfg_builder.create_bb("bb2".into()); + let bb3 = cfg_builder.create_bb("bb3".into()); + let bb4 = cfg_builder.create_bb("bb4".into()); cfg_builder.end_bb(TerminatorKind::Branch(BranchTerm::new( JumpTarget::no_args(bb1), ))); cfg_builder.set_bb(bb1); - let var_0 = cfg_builder.op(Type::I32, Op::Const(Const::Int(Type::I32, 0))); + let var_0 = cfg_builder.op("v0".into(), Type::I32, Op::Const(Const::Int(Type::I32, 0))); cfg_builder.end_bb(TerminatorKind::Branch(BranchTerm::new(JumpTarget::new( bb3, - vec![var_0.into()], + vec![Op::Value(var_0.into())], )))); cfg_builder.set_bb(bb2); - let var_1 = cfg_builder.op(Type::I32, Op::Const(Const::Int(Type::I32, 1))); + let var_1 = cfg_builder.op("v1".into(), Type::I32, Op::Const(Const::Int(Type::I32, 1))); cfg_builder.end_bb(TerminatorKind::Branch(BranchTerm::new(JumpTarget::new( bb3, - vec![var_1.into()], + vec![Op::Value(var_1.into())], )))); cfg_builder.set_bb(bb3); - let var_2 = cfg_builder.add_argument(Type::I32); - cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::new(Type::I32, var_2.into()))); + let var_2 = cfg_builder.add_argument(Type::I32, "v2".into()); + cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::new(Op::Value(var_2.into())))); cfg_builder.set_bb(bb4); - let var_3 = cfg_builder.op(Type::I32, Op::Const(Const::Int(Type::I32, 2))); + let var_3 = cfg_builder.op("v3".into(), Type::I32, Op::Const(Const::Int(Type::I32, 2))); cfg_builder.end_bb(TerminatorKind::Branch(BranchTerm::new(JumpTarget::new( bb3, - vec![var_3.into()], + vec![Op::Value(var_3.into())], )))); assert_eq!( "bb0: br bb1; bb1: - v0 = i32 0; - br bb3(v0); + i32 %v0 = 0i32; + br bb3(%v0); bb2: - v1 = i32 1; - br bb3(v1); -bb3(i32 v2): - ret i32 v2; + i32 %v1 = 1i32; + br bb3(%v1); +bb3(i32 %v2): + ret %v2; bb4: - v3 = i32 2; - br bb3(v3); + i32 %v3 = 2i32; + br bb3(%v3); ", function.cfg.to_string() ); diff --git a/ir/crates/middle/src/cfg/domtree.rs b/ir/crates/middle/src/cfg/domtree.rs index 8e77ae9..d4f8460 100644 --- a/ir/crates/middle/src/cfg/domtree.rs +++ b/ir/crates/middle/src/cfg/domtree.rs @@ -4,7 +4,7 @@ use petgraph::{ }; use super::{ - BasicBlockId, + BasicBlockRef, Cfg, }; @@ -17,16 +17,16 @@ impl<'a> DomTree<'a> { Self { dominators: petgraph::algo::dominators::simple_fast( &cfg.graph, - cfg.entry_block().into(), + cfg.basic_blocks[cfg.entry_block_ref()].node_index, ), cfg, } } - pub fn idom(&self, basic_block: BasicBlockId) -> Option { + pub fn idom(&self, basic_block: BasicBlockRef) -> Option { self.dominators - .immediate_dominator(basic_block.into()) - .map(|node_idx| node_idx.into()) + .immediate_dominator(self.cfg.basic_blocks[basic_block].node_index) + .map(|node_idx| self.cfg.graph[node_idx].bb_ref) } /// Returns true if `a` dominates `b`. @@ -34,10 +34,15 @@ impl<'a> DomTree<'a> { /// A basic block `a` dominates `b` if every path from the entry block to `b` must go through `a`. /// /// **Note** that false is returned if `a` is not reachable from the entry block. - pub fn dominates(&self, a: BasicBlockId, b: BasicBlockId) -> bool { - let Some(dominators) = self.dominators.dominators(b.into()) else { + pub fn dominates(&self, a: BasicBlockRef, b: BasicBlockRef) -> bool { + let Some(dominators) = self + .dominators + .dominators(self.cfg.basic_blocks[b].node_index) + else { return false; }; - dominators.into_iter().any(|node_idx| node_idx == a.into()) + dominators + .into_iter() + .any(|node_idx| node_idx == self.cfg.basic_blocks[a].node_index) } } diff --git a/ir/crates/middle/src/cfg/mod.rs b/ir/crates/middle/src/cfg/mod.rs index 350ecd2..98af79e 100644 --- a/ir/crates/middle/src/cfg/mod.rs +++ b/ir/crates/middle/src/cfg/mod.rs @@ -6,60 +6,47 @@ use std::fmt::{ Formatter, }; -#[allow(unused_imports)] pub use builder::Builder; -use cranelift_entity::{ - entity_impl, - EntityRef, - PrimaryMap, -}; pub use domtree::DomTree; -use index_vec::IndexVec; -use petgraph::{ +use indexmap::IndexSet; +#[allow(unused_imports)] +pub use petgraph::{ prelude::*, visit::Walker, }; +use slotmap::{ + new_key_type, + SlotMap, +}; use smallvec::SmallVec; use crate::{ instruction::{ Instr, Op, - OpInstr, - VRegData, }, InstrKind, Type, - VReg, + Value, }; mod builder; mod domtree; -#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)] -pub struct BasicBlockId(u32); -entity_impl!(BasicBlockId, "bb"); - -impl From for NodeIndex { - fn from(value: BasicBlockId) -> Self { - Self::new(value.0 as usize) - } -} - -impl From> for BasicBlockId { - fn from(value: NodeIndex) -> Self { - Self::new(value.index()) - } +new_key_type! { pub struct BasicBlockRef; } +#[derive(Debug, Clone, Eq, PartialEq)] +struct CFGNode { + bb_ref: BasicBlockRef, } +pub type Graph = StableGraph; -pub type Graph = StableGraph<(), (), Directed>; - -#[derive(Debug, Clone, Default)] +#[derive(Debug, Default, Clone)] pub struct Cfg { graph: Graph, - basic_blocks: PrimaryMap, - entry_block: Option, - vregs: PrimaryMap, + pub basic_blocks: SlotMap, + pub instructions: SlotMap, + pub basic_block_args: SlotMap, + entry_block: Option, } impl Cfg { @@ -67,11 +54,12 @@ impl Cfg { Self::default() } - pub fn new_basic_block(&mut self) -> BasicBlockId { + pub fn new_basic_block(&mut self, symbol: String) -> BasicBlockRef { let bb = { - self.graph.add_node(()); - let next_id = self.basic_blocks.next_key(); - self.basic_blocks.push(BasicBlock::new(next_id)) + self.basic_blocks.insert_with_key(|id| { + let node_idx = self.graph.add_node(CFGNode { bb_ref: id }); + BasicBlock::new(id, node_idx, symbol) + }) }; if self.entry_block.is_none() { self.entry_block = Some(bb); @@ -79,87 +67,53 @@ impl Cfg { bb } - pub fn remove_basic_block(&mut self, bb_id: BasicBlockId) -> (Vec, Terminator) { - self.graph.remove_node(bb_id.into()); - let bb = self.basic_block_mut(bb_id); - let instructions = bb.instructions.raw.drain(..).collect(); - let terminator = bb.terminator.take().unwrap(); - (instructions, terminator) + pub fn remove_basic_block(&mut self, bb_id: BasicBlockRef) -> Option { + let bb = self.basic_blocks.remove(bb_id)?; + self.graph.remove_node(bb.node_index); + Some(bb) } - /// Returns an iterator visiting all basics blocks in arbitrary order. - pub fn basic_blocks(&self) -> impl Iterator { - self.basic_blocks - .iter() - .filter(|(id, bb)| bb.has_terminator()) - } - - /// Returns an iterator visiting all basics block ids in arbitrary order. - pub fn basic_block_ids(&self) -> impl Iterator + '_ { - self.basic_blocks().map(|(id, _)| id) - } - - pub fn basic_block_ids_ordered(&self) -> impl Iterator + '_ { - Bfs::new(&self.graph, self.entry_block().into()) - .iter(&self.graph) - .map(|node| node.into()) - } - - /// The basic block associated with `id`. - pub fn basic_block(&self, id: BasicBlockId) -> &BasicBlock { - &self.basic_blocks[id] - } - - pub fn basic_block_mut(&mut self, id: BasicBlockId) -> &mut BasicBlock { - &mut self.basic_blocks[id] + pub fn basic_block_ids_ordered(&self) -> impl Iterator + '_ { + Bfs::new( + &self.graph, + self.basic_blocks[self.entry_block_ref()].node_index, + ) + .iter(&self.graph) + .map(|node| self.graph[node].bb_ref) } - pub fn entry_block(&self) -> BasicBlockId { + pub fn entry_block_ref(&self) -> BasicBlockRef { self.entry_block.expect("Entry block has not been created") } - pub fn add_bb_argument(&mut self, id: BasicBlockId, arg: VReg) { - self.basic_block_mut(id).arguments.push(arg) - } - - pub fn add_instruction(&mut self, id: BasicBlockId, ty: Type, instr: InstrKind) { - let bb = self.basic_block_mut(id); - bb.append_instruction(ty, instr); - } - pub fn copy_reg_instr(&self, dest: VReg, reg: VReg) -> InstrKind { - self.copy_op_instr(dest, Op::Vreg(reg)) - } - - pub fn copy_op_to_temp_instr( + pub fn add_instruction( &mut self, - id: BasicBlockId, - src_op: Op, - src_ty: Type, - ) -> (InstrKind, VReg) { - let dest = self.new_vreg(VRegData { - defined_in: id, - ty: src_ty.clone(), + defined_in: BasicBlockRef, + ty: Type, + instr: InstrKind, + symbol: String, + ) -> InstrRef { + let instr_ref = self.instructions.insert_with_key(|id| Instr { + ty, + defined_in, + kind: instr, + id, + symbol, }); - let instr = self.copy_op_instr(dest, src_op); - (instr, dest) + self.basic_blocks[defined_in].instructions.insert(instr_ref); + instr_ref } - pub fn copy_op_instr(&self, dest: VReg, src_op: Op) -> InstrKind { - InstrKind::Op(OpInstr { - op: src_op, - value: dest, - }) - } - - pub fn set_terminator(&mut self, id: BasicBlockId, terminator: TerminatorKind) { + pub fn set_terminator(&mut self, id: BasicBlockRef, terminator: TerminatorKind) { self.set_edges_from_terminator(id, &terminator); let terminator = Terminator::new(terminator, id); - self.basic_block_mut(id).terminator = Some(terminator); + self.basic_blocks[id].terminator = Some(terminator); } - fn set_edges_from_terminator(&mut self, id: BasicBlockId, terminator: &TerminatorKind) { - self.graph - .retain_edges(|graph, edge| graph.edge_endpoints(edge).unwrap().0 != id.into()); + fn set_edges_from_terminator(&mut self, id: BasicBlockRef, terminator: &TerminatorKind) { + self.graph.retain_edges(|graph, edge| { + graph.edge_endpoints(edge).unwrap().0 != self.basic_blocks[id].node_index + }); match &terminator { TerminatorKind::Branch(BranchTerm { target }) => { self.add_edge(id, target.id); @@ -178,65 +132,75 @@ impl Cfg { } } - fn add_edge(&mut self, source: BasicBlockId, target: BasicBlockId) { - self.graph.add_edge(source.into(), target.into(), ()); + fn add_edge(&mut self, source: BasicBlockRef, target: BasicBlockRef) { + self.graph.add_edge( + self.basic_blocks[source].node_index, + self.basic_blocks[target].node_index, + (), + ); } - pub fn predecessors( - &self, - basic_block: BasicBlockId, - ) -> impl Iterator + '_ { + pub fn predecessors(&self, bb_ref: BasicBlockRef) -> impl Iterator + '_ { self.graph - .neighbors_directed(basic_block.into(), Incoming) - .map(|n| n.into()) + .neighbors_directed(self.basic_blocks[bb_ref].node_index, Incoming) + .map(|n| self.graph[n].bb_ref) } - pub fn successors(&self, basic_block: BasicBlockId) -> impl Iterator + '_ { - self.graph.neighbors(basic_block.into()).map(|n| n.into()) + pub fn successors(&self, bb_ref: BasicBlockRef) -> impl Iterator + '_ { + self.graph + .neighbors(self.basic_blocks[bb_ref].node_index) + .map(|n| self.graph[n].bb_ref) } /// Recomputes the [BasicBlock]'s successors. - pub fn recompute_successors(&mut self, basic_block: BasicBlockId) { - let terminator = self.basic_block(basic_block).terminator().kind.clone(); - self.set_edges_from_terminator(basic_block, &terminator); + pub fn recompute_successors(&mut self, bb_ref: BasicBlockRef) { + let terminator = self.basic_blocks[bb_ref].terminator().kind.clone(); + self.set_edges_from_terminator(bb_ref, &terminator); } pub fn dom_tree(&self) -> DomTree { DomTree::compute(self) } - pub fn new_vreg(&mut self, vreg: VRegData) -> VReg { - self.vregs.push(vreg) - } - - pub fn vreg_ty(&self, vreg: VReg) -> &Type { - &self.vreg(vreg).ty - } - - pub fn vreg_ty_cloned(&self, vreg: VReg) -> Type { - self.vreg(vreg).ty.clone() + pub fn dfs_postorder(&self) -> impl Iterator + '_ { + DfsPostOrder::new( + &self.graph, + self.basic_blocks[self.entry_block_ref()].node_index, + ) + .iter(&self.graph) + .map(|node| self.graph[node].bb_ref) } - pub fn vreg(&self, vreg: VReg) -> &VRegData { - &self.vregs[vreg] + pub fn add_bb_argument(&mut self, bb_id: BasicBlockRef, ty: Type, symbol: String) -> BBArgRef { + let arg_ref = self + .basic_block_args + .insert_with_key(|id| BBArg { id, ty, symbol }); + self.basic_blocks[bb_id].arguments.insert(arg_ref); + arg_ref } - pub fn dfs_postorder(&self) -> impl Iterator + '_ { - DfsPostOrder::new(&self.graph, self.entry_block().into()) - .iter(&self.graph) - .map(|node| node.into()) + pub fn values(&self) -> impl Iterator + '_ { + self.instructions + .keys() + .map(move |instr_id| Value::Instr(instr_id)) + .chain( + self.basic_block_args + .keys() + .map(move |arg_id| Value::BBArg(arg_id)), + ) } } impl Display for Cfg { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { let indent = " "; - for (bb_id, bb) in self.basic_blocks() { - write!(f, "{}", bb_id)?; + for (bb_id, bb) in &self.basic_blocks { + write!(f, "{}", bb)?; if !bb.arguments.is_empty() { write!(f, "(")?; - for (index, arg) in bb.arguments.iter().copied().enumerate() { - let arg_ty = self.vreg_ty(arg); + for (index, arg_ref) in bb.arguments.iter().copied().enumerate() { + let arg = &self.basic_block_args[arg_ref]; + let arg_ty = &self.basic_block_args[arg_ref].ty; write!(f, "{arg_ty} {arg}")?; if index < bb.arguments.len() - 1 { write!(f, ", ")?; @@ -246,9 +210,10 @@ impl Display for Cfg { } writeln!(f, ":")?; for instr in bb.instructions() { + let instr = &self.instructions[instr]; writeln!(f, "{}{};", indent, instr.display(self))?; } - writeln!(f, "{}{};", indent, bb.terminator())?; + writeln!(f, "{}{};", indent, bb.terminator().display(self))?; } Ok(()) } @@ -256,42 +221,58 @@ impl Display for Cfg { #[cfg(test)] mod cfg_tests { + use itertools::Itertools; + use super::*; #[test] fn should_not_return_removed_basic_block() { let mut cfg = Cfg::new(); - let bb0 = cfg.new_basic_block(); + let bb0 = cfg.new_basic_block("bb0".into()); cfg.set_terminator(bb0, TerminatorKind::Ret(RetTerm::empty())); - let bb1 = cfg.new_basic_block(); + let bb1 = cfg.new_basic_block("bb1".into()); cfg.set_terminator(bb1, TerminatorKind::Ret(RetTerm::empty())); cfg.remove_basic_block(bb0); - assert_eq!(cfg.basic_block_ids().collect::>(), vec![bb1],); - assert_eq!( - cfg.basic_blocks().map(|(id, _)| id).collect::>(), - vec![bb1], - ) + assert_eq!(cfg.basic_blocks.keys().collect_vec(), vec![bb1],); } } -index_vec::define_index_type! { - pub struct InstrId = u32; -} +new_key_type! { +pub struct InstrRef; } + +new_key_type! { pub struct BBArgRef; } #[derive(Debug, Clone, Eq, PartialEq)] +pub struct BBArg { + pub(crate) id: BBArgRef, + pub(crate) ty: Type, + pub symbol: String, +} + +impl Display for BBArg { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "%{}", self.symbol) + } +} + +#[derive(Debug, Clone)] pub struct BasicBlock { - id: BasicBlockId, - arguments: Vec, - pub(crate) instructions: IndexVec, - pub(crate) terminator: Option, + pub id: BasicBlockRef, + pub arguments: IndexSet, + pub instructions: IndexSet, + pub terminator: Option, + node_index: NodeIndex, + pub symbol: String, } impl BasicBlock { - pub fn new(id: BasicBlockId) -> Self { + pub fn new(id: BasicBlockRef, graph_index: NodeIndex, symbol: String) -> Self { Self { id, - arguments: vec![], - instructions: IndexVec::new(), + arguments: IndexSet::new(), + instructions: IndexSet::new(), + symbol, + node_index: graph_index, terminator: None, } } @@ -333,96 +314,66 @@ impl BasicBlock { self.terminator.is_some() } - pub fn arguments(&self) -> impl Iterator + '_ { + pub fn arguments(&self) -> impl Iterator + '_ { self.arguments.iter().copied() } - pub fn clear_arguments(&mut self) -> impl Iterator + '_ { + pub fn clear_arguments(&mut self) -> impl Iterator + '_ { self.arguments.drain(..) } - pub fn add_argument(&mut self, arg: VReg) { - self.arguments.push(arg); + /// Returns an iterator over the [`BasicBlock`]'s [`Instructions`][`InstrId`]. + pub fn instructions(&self) -> impl DoubleEndedIterator + '_ { + self.instructions.iter().copied() } - pub fn remove_argument(&mut self, idx: usize) -> VReg { - self.arguments.remove(idx) + pub fn remove_instruction(&mut self, id: InstrRef) { + self.instructions.retain(|instr_id| *instr_id != id) } - /// Returns an iterator over the [`BasicBlock`]'s [`Instructions`][`Instr`]. - pub fn instructions(&self) -> impl DoubleEndedIterator { - self.instructions.iter() - } - - /// Returns a mutable iterator over the [`BasicBlock`]'s [`Instructions`][`Instr`]. - pub fn instructions_mut(&mut self) -> impl DoubleEndedIterator { - self.instructions.iter_mut() - } - - pub fn remove_instructions_by_pred

(&mut self, p: P) - where - P: FnMut(&Instr) -> bool, - { - self.instructions.retain(p) - } - - pub fn remove_instruction(&mut self, id: InstrId) -> Instr { - self.instructions.remove(id) - } - - pub fn append_instructions(&mut self, e_instructions: impl Iterator) { + pub fn append_instructions(&mut self, e_instructions: impl Iterator) { self.instructions.extend(e_instructions); } +} - /// Appends an [instruction][`Instr`] to the end of the basic block - pub fn append_instruction(&mut self, ty: Type, instr: InstrKind) { - let instr_id = self.instructions.next_idx(); - let instr = Instr::new(ty, instr, self.id, instr_id); - self.instructions.push(instr); +impl Display for BasicBlock { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.symbol) } } #[cfg(test)] mod bb_tests { - use cranelift_entity::EntityRef; - use index_vec::index_vec; - use super::{ BranchTerm, Cfg, CondBranchTerm, - InstrId, JumpTarget, RetTerm, - Terminator, TerminatorKind, }; use crate::{ instruction::{ Const, Op, - OpInstr, }, - Instr, - InstrKind, Type, - VReg, }; #[test] fn should_set_entry_block() { let mut cfg = Cfg::new(); - let bb0 = cfg.new_basic_block(); - let bb1 = cfg.new_basic_block(); + let bb0 = cfg.new_basic_block("bb0".into()); + let bb1 = cfg.new_basic_block("bb1".into()); assert_eq!(cfg.entry_block, Some(bb0)); } #[test] fn should_return_correct_successors() { let mut cfg = Cfg::new(); - let bb0 = cfg.new_basic_block(); - let bb1 = cfg.new_basic_block(); - let bb2 = cfg.new_basic_block(); + let bb0 = cfg.new_basic_block("bb0".into()); + let bb1 = cfg.new_basic_block("bb1".into()); + let bb2 = cfg.new_basic_block("bb2".into()); cfg.set_terminator(bb0, TerminatorKind::Ret(RetTerm::empty())); assert!(cfg.successors(bb0).eq(vec![].into_iter())); cfg.set_terminator( @@ -440,37 +391,22 @@ mod bb_tests { ); assert!(cfg.successors(bb0).eq(vec![bb2, bb1].into_iter())); } - - #[test] - fn should_add_instruction() { - let mut cfg = Cfg::new(); - let bb0 = cfg.new_basic_block(); - let instr = InstrKind::Op(OpInstr { - op: Op::Const(Const::Int(Type::I32, 3)), - value: VReg::new(2), - }); - cfg.add_instruction(bb0, Type::I32, instr.clone()); - assert_eq!( - cfg.basic_block(bb0).instructions, - index_vec![Instr::new(Type::I32, instr, bb0, InstrId::from_raw(0),)] - ); - } } #[derive(Debug, Clone, Eq, PartialEq)] pub struct Terminator { - pub bb: BasicBlockId, + pub bb: BasicBlockRef, pub kind: TerminatorKind, } impl Terminator { - pub const fn new(kind: TerminatorKind, bb: BasicBlockId) -> Self { + pub const fn new(kind: TerminatorKind, bb: BasicBlockRef) -> Self { Self { kind, bb } } pub fn clear_args<'a>( &'a mut self, - target: BasicBlockId, + target: BasicBlockRef, ) -> Option + 'a> { match &mut self.kind { TerminatorKind::Ret(_) => None, @@ -492,7 +428,7 @@ impl Terminator { } } - pub fn branch_args(&self, target: BasicBlockId) -> Option> { + pub fn branch_args(&self, target: BasicBlockRef) -> Option> { match &self.kind { TerminatorKind::Ret(_) => None, TerminatorKind::Branch(branch_term) => { @@ -513,7 +449,7 @@ impl Terminator { } } - pub fn update_references_to_bb(&mut self, old: BasicBlockId, new: BasicBlockId) { + pub fn update_references_to_bb(&mut self, old: BasicBlockRef, new: BasicBlockRef) { match &mut self.kind { TerminatorKind::Ret(_) => {} TerminatorKind::Branch(br) => { @@ -547,26 +483,39 @@ impl Terminator { .collect(), } } + + pub fn display<'cfg>(&self, cfg: &'cfg Cfg) -> TerminatorDisplay<'cfg, '_> { + TerminatorDisplay { + cfg, + terminator: self, + } + } +} + +struct TerminatorDisplay<'cfg, 'term> { + cfg: &'cfg Cfg, + terminator: &'term Terminator, } -impl Display for Terminator { +impl Display for TerminatorDisplay<'_, '_> { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match &self.kind { + match &self.terminator.kind { TerminatorKind::Ret(term) => { write!(f, "ret")?; - write!(f, " {}", term.ty)?; if let Some(value) = &term.value { - write!(f, " {value}")?; + write!(f, " {}", value.display(self.cfg))?; } } TerminatorKind::Branch(branch) => { - write!(f, "br {}", branch.target)?; + write!(f, "br {}", branch.target.display(self.cfg))?; } TerminatorKind::CondBranch(branch) => { write!( f, "condbr {}, {}, {}", - branch.cond, branch.true_target, branch.false_target + branch.cond.display(self.cfg), + branch.true_target.display(self.cfg), + branch.false_target.display(self.cfg) )?; } } @@ -583,49 +532,51 @@ pub enum TerminatorKind { #[derive(Debug, Clone, Eq, PartialEq)] pub struct RetTerm { - pub ty: Type, pub value: Option, } impl RetTerm { - pub const fn new(ty: Type, value: Op) -> Self { - Self { - value: Some(value), - ty, - } + pub const fn new(value: Op) -> Self { + Self { value: Some(value) } } pub const fn empty() -> Self { - Self { - value: None, - ty: Type::Void, - } + Self { value: None } } } #[derive(Debug, Clone, Eq, PartialEq)] pub struct JumpTarget { - pub id: BasicBlockId, + pub id: BasicBlockRef, pub arguments: Vec, } impl JumpTarget { - pub fn new(id: BasicBlockId, arguments: Vec) -> Self { + pub fn new(id: BasicBlockRef, arguments: Vec) -> Self { Self { id, arguments } } - pub fn no_args(id: BasicBlockId) -> Self { + pub fn no_args(id: BasicBlockRef) -> Self { Self::new(id, vec![]) } + + pub fn display<'cfg>(&self, cfg: &'cfg Cfg) -> JumpTargetDisplay<'cfg, '_> { + JumpTargetDisplay { target: self, cfg } + } +} + +struct JumpTargetDisplay<'cfg, 'target> { + target: &'target JumpTarget, + cfg: &'cfg Cfg, } -impl Display for JumpTarget { +impl Display for JumpTargetDisplay<'_, '_> { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.id)?; - if !self.arguments.is_empty() { + write!(f, "{}", self.cfg.basic_blocks[self.target.id])?; + if !self.target.arguments.is_empty() { write!(f, "(")?; - for (index, arg) in self.arguments.iter().enumerate() { - write!(f, "{arg}")?; - if index != self.arguments.len() - 1 { + for (index, arg) in self.target.arguments.iter().enumerate() { + write!(f, "{}", arg.display(self.cfg))?; + if index != self.target.arguments.len() - 1 { write!(f, ", ")?; } } diff --git a/ir/crates/middle/src/front_bridge.rs b/ir/crates/middle/src/front_bridge.rs index 0766546..2a7b776 100644 --- a/ir/crates/middle/src/front_bridge.rs +++ b/ir/crates/middle/src/front_bridge.rs @@ -1,17 +1,20 @@ +use itertools::Itertools; use natrix_front::module::{ + Identifier, Instruction, Literal, Operand, - RegId, }; +use rustc_hash::FxHashMap; use crate::{ cfg, cfg::{ - BasicBlockId, + BBArgRef, + BasicBlockRef, BranchTerm, - Builder, CondBranchTerm, + InstrRef, JumpTarget, RetTerm, TerminatorKind, @@ -24,21 +27,30 @@ use crate::{ Function, Module, Type, - VReg, + Value, }; -pub struct FrontBridge {} +#[derive(Debug, Default)] +pub struct FrontBridge { + bb_symbol_table: FxHashMap, + bb_arg_symbol_table: FxHashMap, + instr_symbol_table: FxHashMap, +} impl FrontBridge { pub fn new() -> Self { - Self {} + Self { + bb_symbol_table: FxHashMap::default(), + bb_arg_symbol_table: FxHashMap::default(), + instr_symbol_table: FxHashMap::default(), + } } pub fn bridge(mut self, front_module: natrix_front::Module) -> Module { let mut module = Module::default(); for function in front_module.functions { let function = self.bridge_function(function); - module.functions.push(function); + module.functions.insert(function); } module } @@ -55,44 +67,65 @@ impl FrontBridge { ); let mut cfg_builder = cfg::Builder::new(&mut function); for basic_block in &front_f.basic_blocks { - let bb_id = basic_block.id.into(); - Self::ensure_bb_exists(&mut cfg_builder, bb_id); + assert!( + self.bb_symbol_table + .insert( + basic_block.id.clone(), + cfg_builder.create_bb(basic_block.id.clone()) + ) + .is_none(), + "Duplicate basic block id {}", + basic_block.id + ); + } + for basic_block in &front_f.basic_blocks { + let bb_id = self.bb_symbol_table[&basic_block.id]; cfg_builder.set_bb(bb_id); for arg in &basic_block.args { - cfg_builder.set_next_vreg(arg.id.into()); - cfg_builder.add_argument(arg.ty.into()); + let id = cfg_builder.add_argument(arg.ty.clone().into(), arg.id.clone()); + assert!( + self.bb_arg_symbol_table + .insert(arg.id.clone(), id) + .is_none(), + "Duplicate basic block argument id {}", + arg.id + ); } } for basic_block in front_f.basic_blocks { - let bb_id = basic_block.id.into(); + let bb_id = self + .bb_symbol_table + .get(&basic_block.id) + .copied() + .unwrap_or_else(|| panic!("Basic block id not found: {}", basic_block.id)); cfg_builder.set_bb(bb_id); for instruction in basic_block.instructions { match instruction { Instruction::Add(dest, ty, lhs, rhs) => { - let lhs = self.operand_to_op(lhs, ty.into()); - let rhs = self.operand_to_op(rhs, ty.into()); - cfg_builder.set_next_vreg(dest.into()); - cfg_builder.add(ty.into(), lhs, rhs); + let lhs = self.operand_to_op(lhs); + let rhs = self.operand_to_op(rhs); + let id = cfg_builder.add(dest.clone(), ty.into(), lhs, rhs); + self.insert_instr_symbol(&dest, id); } Instruction::Sub(dest, ty, lhs, rhs) => { - let lhs = self.operand_to_op(lhs, ty.into()); - let rhs = self.operand_to_op(rhs, ty.into()); - cfg_builder.set_next_vreg(dest.into()); - cfg_builder.sub(ty.into(), lhs, rhs); + let lhs = self.operand_to_op(lhs); + let rhs = self.operand_to_op(rhs); + let instr_ref = cfg_builder.sub(dest.clone(), ty.into(), lhs, rhs); + self.insert_instr_symbol(&dest, instr_ref); } - Instruction::Ret(ty, op) => { + Instruction::Ret(op) => { cfg_builder.end_bb(TerminatorKind::Ret(RetTerm { - ty: ty.into(), - value: op.map(|op| self.operand_to_op(op, ty.into())), + value: op.map(|op| self.operand_to_op(op)), })); } Instruction::Op(dest, ty, op) => { - cfg_builder.set_next_vreg(dest.into()); - cfg_builder.op(ty.into(), self.operand_to_op(op, ty.into())); + let instr_ref = + cfg_builder.op(dest.clone(), ty.into(), self.operand_to_op(op)); + self.insert_instr_symbol(&dest, instr_ref); } Instruction::Condbr(condition, true_target, false_target) => { - let cond = self.operand_to_op(condition, Type::Bool); + let cond = self.operand_to_op(condition); let true_target = self.map_target(true_target, &mut cfg_builder); let false_target = self.map_target(false_target, &mut cfg_builder); cfg_builder.end_bb(TerminatorKind::CondBranch(CondBranchTerm::new( @@ -105,11 +138,11 @@ impl FrontBridge { let target = self.map_target(target, &mut cfg_builder); cfg_builder.end_bb(TerminatorKind::Branch(BranchTerm::new(target))); } - Instruction::ICmp(dest, op, ty, lhs, rhs) => { - let lhs = self.operand_to_op(lhs, ty.into()); - let rhs = self.operand_to_op(rhs, ty.into()); - cfg_builder.set_next_vreg(dest.into()); - cfg_builder.icmp(op.into(), lhs, rhs); + Instruction::Cmp(dest, op, ty, lhs, rhs) => { + let lhs = self.operand_to_op(lhs); + let rhs = self.operand_to_op(rhs); + let instr_ref = cfg_builder.icmp(dest.clone(), op.into(), lhs, rhs); + self.insert_instr_symbol(&dest, instr_ref); } } } @@ -117,45 +150,58 @@ impl FrontBridge { function } + fn insert_instr_symbol(&mut self, id: &Identifier, instr_id: InstrRef) { + assert!( + self.instr_symbol_table + .insert(id.clone(), instr_id) + .is_none(), + "Duplicate instruction id {}", + id + ); + } + fn map_target( &mut self, target: natrix_front::module::Target, builder: &mut cfg::Builder, ) -> JumpTarget { - let target_bb_id = target.0.into(); + let target_bb_ref = self.bb_symbol_table[&target.0]; JumpTarget::new( - target_bb_id, + target_bb_ref, target .1 .map(|args| { - let bb_args = builder.get_bb_arguments(target_bb_id); + let bb_args = builder.bb_arguments(target_bb_ref).collect_vec(); args.into_iter() .enumerate() - .map(|(i, arg_op)| { - self.operand_to_op(arg_op, builder.vreg(bb_args[i]).ty.clone()) - }) + .map(|(i, arg_op)| self.operand_to_op(arg_op)) .collect::>() }) .unwrap_or_default(), ) } - fn ensure_bb_exists(builder: &mut Builder, bb_id: BasicBlockId) { - while builder - .max_bb_id() - .map(|max_bb_id| max_bb_id < bb_id) - .unwrap_or(true) - { - builder.create_bb(); - } - } - - fn operand_to_op(&self, operand: Operand, context_ty: Type) -> Op { + fn operand_to_op(&self, operand: Operand) -> Op { match operand { Operand::Literal(literal) => Op::Const(match literal { - Literal::Int(value) => Const::Int(context_ty, value), + Literal::Int(value, ty) => Const::Int(ty.into(), value), + Literal::Bool(value) => + // todo: Migrate to Const::Bool + { + Const::Int(Type::Bool, value as i64) + } }), - Operand::Register(reg) => Op::Vreg(reg.into()), + Operand::Value(value) => { + Op::Value(match self.instr_symbol_table.get(&value).copied() { + None => self + .bb_arg_symbol_table + .get(&value) + .copied() + .map(Value::BBArg) + .unwrap_or_else(|| panic!("Variable not defined: {}", value)), + Some(instr_ref) => Value::Instr(instr_ref), + }) + } } } } @@ -173,6 +219,7 @@ impl From for Type { natrix_front::module::Type::I64 => Self::I64, natrix_front::module::Type::Void => Self::Void, natrix_front::module::Type::Bool => Self::Bool, + natrix_front::module::Type::Ptr(ty) => Self::Ptr(Box::new((*ty).into())), } } } @@ -183,18 +230,6 @@ impl From for Module { } } -impl From for BasicBlockId { - fn from(value: natrix_front::module::BasicBlockId) -> Self { - Self::from_u32(value.0) - } -} - -impl From for VReg { - fn from(value: RegId) -> Self { - Self::from_u32(value.0) - } -} - impl From for CmpOp { fn from(value: natrix_front::module::CmpOp) -> Self { match value { diff --git a/ir/crates/middle/src/function.rs b/ir/crates/middle/src/function.rs index 9974f82..0c2241b 100644 --- a/ir/crates/middle/src/function.rs +++ b/ir/crates/middle/src/function.rs @@ -3,22 +3,17 @@ use std::fmt::{ Formatter, }; -use cranelift_entity::{ - entity_impl, - PrimaryMap, -}; +use slotmap::new_key_type; use crate::{ cfg::Cfg, - instruction::VRegData, ty::Type, - VReg, }; -#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq)] -pub struct FunctionId(u32); +new_key_type! { + pub struct FunctionRef; +} -entity_impl!(FunctionId, "fun"); pub type Symbol = String; #[derive(Debug, Clone)] diff --git a/ir/crates/middle/src/instruction.rs b/ir/crates/middle/src/instruction.rs index 6ebf485..3d81cf6 100644 --- a/ir/crates/middle/src/instruction.rs +++ b/ir/crates/middle/src/instruction.rs @@ -17,24 +17,29 @@ use strum_macros::{ use crate::{ cfg::{ - BasicBlockId, + BasicBlockRef, Cfg, - InstrId, + InstrRef, }, Type, - VReg, + Value, }; /// An instruction in a basic block. -/// -/// Currently, an instruction only holds a **single** field. -/// We do this as we will be adding more fields to the instruction in the future, such as metadata. #[derive(Debug, Clone, Eq, PartialEq)] pub struct Instr { - pub id: InstrId, - pub bb: BasicBlockId, + pub id: InstrRef, + pub defined_in: BasicBlockRef, pub ty: Type, pub kind: InstrKind, + /// Uniqye symbol for debugging purposes. + pub symbol: String, +} + +impl Display for Instr { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "%{}", self.symbol) + } } #[derive(Debug, Clone, Eq, PartialEq, Hash)] @@ -43,8 +48,14 @@ pub enum InstrIdentifyingKey { } impl Instr { - pub const fn new(ty: Type, kind: InstrKind, bb: BasicBlockId, id: InstrId) -> Self { - Self { id, bb, ty, kind } + pub fn new(ty: Type, kind: InstrKind, bb: BasicBlockRef, id: InstrRef, symbol: String) -> Self { + Self { + id, + defined_in: bb, + ty, + kind, + symbol, + } } pub fn identifying_key(&self) -> Option { @@ -57,20 +68,12 @@ impl Instr { } } - pub fn display<'a>(&'a self, cfg: &'a Cfg) -> InstrDisplay { - InstrDisplay(cfg, self) + pub fn value(&self) -> Value { + Value::Instr(self.id) } - pub const fn defined_vreg(&self) -> Option { - match &self.kind { - InstrKind::Alloca(instr) => Some(instr.value), - InstrKind::Op(op) => Some(op.value), - InstrKind::Sub(instr) => Some(instr.value), - InstrKind::Load(instr) => Some(instr.dest), - InstrKind::Store(_) => None, - InstrKind::Cmp(instr) => Some(instr.value), - InstrKind::Add(instr) => Some(instr.value), - } + pub fn display<'a>(&'a self, cfg: &'a Cfg) -> InstrDisplay { + InstrDisplay(cfg, self) } pub fn used(&self) -> SmallVec<[&Op; 2]> { @@ -89,58 +92,58 @@ pub struct InstrDisplay<'a>(&'a Cfg, &'a Instr); impl Display for InstrDisplay<'_> { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match &self.1.kind { - InstrKind::Alloca(instr) => { - write!(f, "{} = alloca {}", instr.value, self.1.ty)?; - if instr.num_elements > 1 { - write!(f, ", {}", instr.num_elements)?; + let instr = self.1; + write!(f, "{} {} = ", instr.ty, instr)?; + match &instr.kind { + InstrKind::Alloca(alloca_instr) => { + write!(f, "alloca {}", alloca_instr.ty)?; + if alloca_instr.num_elements > 1 { + write!(f, ", {}", alloca_instr.num_elements)?; } } - InstrKind::Sub(instr) => { + InstrKind::Sub(sub_instr) => { write!( f, - "{} = sub {} {}, {}", - instr.value, self.1.ty, instr.lhs, instr.rhs + "sub {}, {}", + sub_instr.lhs.display(self.0), + sub_instr.rhs.display(self.0) )?; } - InstrKind::Add(instr) => { + InstrKind::Add(add_instr) => { write!( f, - "{} = add {} {}, {}", - instr.value, self.1.ty, instr.lhs, instr.rhs + "add {}, {}", + add_instr.lhs.display(self.0), + add_instr.rhs.display(self.0) )?; } - InstrKind::Op(instr) => { - write!(f, "{} = {} {}", instr.value, self.1.ty, instr.op)?; - } - InstrKind::Store(instr) => { - write!(f, "store {} {}, ptr {}", self.1.ty, instr.value, instr.dest)?; + InstrKind::Op(op_instr) => { + write!(f, "{}", op_instr.op.display(self.0))?; } - InstrKind::Load(instr) => { + InstrKind::Store(store_instr) => { write!( f, - "{} = load {} ptr {}", - instr.dest, self.1.ty, instr.source + "store {}, {}", + store_instr.value.display(self.0), + store_instr.dest.display(self.0) )?; } - InstrKind::Cmp(instr) => { + InstrKind::Load(load_instr) => { + write!(f, "load {}", load_instr.source.display(self.0))?; + } + InstrKind::Cmp(cmp_instr) => { write!( f, - "{} = icmp {} {} {}, {}", - instr.value, self.1.ty, instr.op, instr.lhs, instr.rhs + "cmp {} {}, {}", + cmp_instr.op, + cmp_instr.lhs.display(self.0), + cmp_instr.rhs.display(self.0) )?; } }; Ok(()) } } - -#[derive(Debug, Clone, Eq, PartialEq)] -pub struct VRegData { - pub ty: Type, - pub defined_in: BasicBlockId, -} - #[derive(Debug, Clone, Eq, PartialEq, EnumTryAs)] pub enum InstrKind { Alloca(AllocaInstr), @@ -154,70 +157,76 @@ pub enum InstrKind { #[derive(Debug, Clone, Eq, PartialEq)] pub struct AllocaInstr { - pub value: VReg, pub num_elements: u32, + pub ty: Type, } impl AllocaInstr { - pub fn new(value: VReg, num_elements: Option) -> Self { + pub fn new(ty: Type, num_elements: Option) -> Self { Self { - value, num_elements: num_elements.unwrap_or(1), + ty, } } } #[derive(Debug, Clone, Eq, PartialEq)] pub struct StoreInstr { - pub dest: VReg, + pub dest: Value, pub value: Op, } #[derive(Debug, Clone, Eq, PartialEq)] pub struct LoadInstr { - pub dest: VReg, pub source: Op, } #[derive(Debug, Clone, Eq, PartialEq)] pub struct BinOpInstr { - pub value: VReg, pub lhs: Op, pub rhs: Op, } #[derive(Debug, Clone, Eq, PartialEq)] pub struct OpInstr { - pub value: VReg, pub op: Op, } #[derive(Debug, Clone, Eq, PartialEq, Hash, EnumTryAs)] pub enum Op { Const(Const), - Vreg(VReg), + Value(Value), } -impl From for Op { - fn from(value: VReg) -> Self { - Self::Vreg(value) +impl From for Op { + fn from(value: Value) -> Self { + Self::Value(value) } } impl Op { - pub fn referenced_value(&self) -> Option { + pub fn referenced_value(&self) -> Option { match self { Op::Const(_) => None, - Op::Vreg(value) => Some(*value), + Op::Value(value) => Some(*value), } } + + pub fn display<'cfg>(&self, cfg: &'cfg Cfg) -> OpDisplay<'cfg, '_> { + OpDisplay { cfg, op: self } + } +} + +pub struct OpDisplay<'cfg, 'op> { + cfg: &'cfg Cfg, + op: &'op Op, } -impl Display for Op { +impl Display for OpDisplay<'_, '_> { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match self { - Op::Const(c) => write!(f, "{}", c), - Op::Vreg(l) => write!(f, "{}", *l), + match self.op { + Op::Const(c) => write!(f, "{}{}", c, c.ty()), + Op::Value(l) => write!(f, "{}", l.display(self.cfg)), } } } @@ -261,6 +270,12 @@ impl Const { } } } + + pub fn ty(&self) -> Type { + match self { + Const::Int(ty, _) => ty.clone(), + } + } } impl Display for Const { @@ -273,7 +288,6 @@ impl Display for Const { #[derive(Debug, Clone, Eq, PartialEq)] pub struct CmpInstr { - pub value: VReg, pub op: CmpOp, pub lhs: Op, pub rhs: Op, @@ -313,25 +327,26 @@ mod tests { fn test_sub_instruction_type() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - cfg_builder.start_bb(); - let vreg = cfg_builder.sub( + cfg_builder.start_bb("".into()); + let instr_ref = cfg_builder.sub( + "v0".into(), Type::I8, Op::Const(Const::Int(Type::I8, 0)), Op::Const(Const::Int(Type::I8, 1)), ); cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); - assert_eq!(function.cfg.vreg_ty(vreg).clone(), Type::I8); + assert_eq!(function.cfg.instructions[instr_ref].ty, Type::I8); } #[test] fn test_alloca_instruction_type() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - cfg_builder.start_bb(); - let alloca_value = cfg_builder.alloca(Type::I8, None); + cfg_builder.start_bb("".into()); + let alloca_instr_ref = cfg_builder.alloca("v0".into(), Type::I8, None); cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); assert_eq!( - function.cfg.vreg_ty(alloca_value).clone(), + function.cfg.instructions[alloca_instr_ref].ty, Type::Ptr(Box::new(Type::I8)) ); } @@ -340,35 +355,36 @@ mod tests { fn test_op_instruction_type() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - cfg_builder.start_bb(); - let place = cfg_builder.op(Type::I8, Op::Const(Const::Int(Type::I8, 0))); + cfg_builder.start_bb("".into()); + let op_instr_ref = + cfg_builder.op("v0".into(), Type::I8, Op::Const(Const::Int(Type::I8, 0))); cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); - assert_eq!(function.cfg.vreg_ty(place).clone(), Type::I8); + assert_eq!(function.cfg.instructions[op_instr_ref].ty, Type::I8); } #[test] fn test_store_instruction_type() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - let bb = cfg_builder.start_bb(); - let alloca_value = cfg_builder.alloca(Type::I8, None); - cfg_builder.store(Type::I8, alloca_value, Op::Const(Const::Int(Type::I8, 0))); - cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); - assert_eq!( - function.cfg.basic_block(bb).instructions[1].defined_vreg(), - None + let bb_ref = cfg_builder.start_bb("".into()); + let alloca_instr_ref = cfg_builder.alloca("v0".into(), Type::I8, None); + cfg_builder.store( + "v1".into(), + alloca_instr_ref.into(), + Op::Const(Const::Int(Type::I8, 0)), ); + cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); } #[test] fn test_load_instruction_type() { let mut function = create_test_function(); let mut cfg_builder = cfg::Builder::new(&mut function); - let bb = cfg_builder.start_bb(); - let alloca_value = cfg_builder.alloca(Type::I8, None); - let instr = cfg_builder.load(Type::I8, alloca_value.into()); + let bb = cfg_builder.start_bb("".into()); + let alloca_value = cfg_builder.alloca("v0".into(), Type::I8, None); + let instr = cfg_builder.load("v1".into(), Type::I8, Op::Value(alloca_value.into())); cfg_builder.end_bb(TerminatorKind::Ret(RetTerm::empty())); - assert_eq!(function.cfg.vreg_ty(instr).clone(), Type::I8); + assert_eq!(function.cfg.instructions[instr].ty, Type::I8); } } } diff --git a/ir/crates/middle/src/lib.rs b/ir/crates/middle/src/lib.rs index 6f767e8..fc1467b 100644 --- a/ir/crates/middle/src/lib.rs +++ b/ir/crates/middle/src/lib.rs @@ -1,25 +1,51 @@ #![feature(impl_trait_in_assoc_type)] #![feature(type_alias_impl_trait)] -use cranelift_entity::entity_impl; +use derive_more::From; pub use front_bridge::FrontBridge; pub use function::{ Function, - FunctionId, + FunctionRef, }; pub use instruction::{ Instr, InstrKind, }; -pub use module::Module; +use module::Module; pub use ty::Type; +use crate::cfg::{ + BBArgRef, + Cfg, + InstrRef, +}; + pub mod cfg; pub mod function; -#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Default)] -pub struct VReg(u32); -entity_impl!(VReg, "v"); +#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, From)] +pub enum Value { + Instr(InstrRef), + BBArg(BBArgRef), +} + +impl Value { + pub fn display<'cfg>(&self, cfg: &'cfg Cfg) -> ValueDisplay<'cfg> { + ValueDisplay(cfg, *self) + } +} + +struct ValueDisplay<'cfg>(&'cfg Cfg, Value); + +impl<'cfg> std::fmt::Display for ValueDisplay<'cfg> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self.1 { + Value::Instr(instr) => write!(f, "{}", self.0.instructions[instr]), + Value::BBArg(arg) => write!(f, "{}", self.0.basic_block_args[arg]), + } + } +} + pub mod instruction; pub mod module; diff --git a/ir/crates/middle/src/module.rs b/ir/crates/middle/src/module.rs index 810af27..543668f 100644 --- a/ir/crates/middle/src/module.rs +++ b/ir/crates/middle/src/module.rs @@ -6,7 +6,7 @@ use std::{ time::Instant, }; -use cranelift_entity::PrimaryMap; +use slotmap::SlotMap; use tracing::{ debug, info, @@ -16,13 +16,13 @@ use crate::{ optimization, optimization::PipelineConfig, Function, - FunctionId, + FunctionRef, Instr, }; #[derive(Debug, Clone, Default)] pub struct Module { - pub functions: PrimaryMap, + pub functions: SlotMap, } impl Module { diff --git a/ir/crates/middle/src/optimization/basic_block_pass/constant_fold.rs b/ir/crates/middle/src/optimization/basic_block_pass/constant_fold.rs index ac257e0..dd2b60f 100644 --- a/ir/crates/middle/src/optimization/basic_block_pass/constant_fold.rs +++ b/ir/crates/middle/src/optimization/basic_block_pass/constant_fold.rs @@ -3,7 +3,7 @@ use tracing::debug; use crate::{ cfg::{ - BasicBlockId, + BasicBlockRef, TerminatorKind, }, instruction::{ @@ -18,8 +18,8 @@ use crate::{ basic_block_pass::BasicBlockPass, Pass, }, - FunctionId, - VReg, + FunctionRef, + Value, }; pub struct ConstantFoldPass {} @@ -34,14 +34,15 @@ impl BasicBlockPass for ConstantFoldPass { fn run_on_basic_block( &mut self, module: &mut Module, - function: FunctionId, - basic_block_id: BasicBlockId, + function: FunctionRef, + basic_block_id: BasicBlockRef, ) -> usize { let cfg = &mut module.functions[function].cfg; - let bb = cfg.basic_block_mut(basic_block_id); + let bb = &mut cfg.basic_blocks[basic_block_id]; let mut changes = 0; - let mut constant_values: FxHashMap = FxHashMap::default(); - for instr in bb.instructions_mut() { + let mut constant_values: FxHashMap = FxHashMap::default(); + for instr_id in bb.instructions() { + let instr = &mut cfg.instructions[instr_id]; match &mut instr.kind { InstrKind::Alloca(_) => {} InstrKind::Sub(sub_instr) => { @@ -58,7 +59,6 @@ impl BasicBlockPass for ConstantFoldPass { |lhs, rhs| lhs.sub(rhs).unwrap(), ) { instr.kind = InstrKind::Op(OpInstr { - value: sub_instr.value, op: Op::Const(const_val), }); changes += 1; @@ -78,7 +78,6 @@ impl BasicBlockPass for ConstantFoldPass { |lhs, rhs| lhs.add(rhs).unwrap(), ) { instr.kind = InstrKind::Op(OpInstr { - value: add_instr.value, op: Op::Const(const_val), }); changes += 1; @@ -87,10 +86,10 @@ impl BasicBlockPass for ConstantFoldPass { InstrKind::Op(op_instr) => { let updated_op = match &op_instr.op { Op::Const(constant) => { - constant_values.insert(op_instr.value, constant.clone()); + constant_values.insert(Value::Instr(instr_id), constant.clone()); None } - Op::Vreg(place) => { + Op::Value(place) => { constant_values .get(place) .cloned() @@ -129,7 +128,6 @@ impl BasicBlockPass for ConstantFoldPass { |lhs, rhs| lhs.cmp(rhs, CmpOp::from(icmp_instr.op)).unwrap(), ) { instr.kind = InstrKind::Op(OpInstr { - value: icmp_instr.value, op: Op::Const(const_val), }); changes += 1; @@ -142,7 +140,7 @@ impl BasicBlockPass for ConstantFoldPass { if let Some(ret_value) = &mut ret_term.value { match ret_value { Op::Const(_) => {} - Op::Vreg(value) => { + Op::Value(value) => { if let Some(constant_value) = constant_values.get(value) { changes += 1; *ret_value = Op::Const(constant_value.clone()); @@ -163,17 +161,17 @@ impl BasicBlockPass for ConstantFoldPass { } impl ConstantFoldPass { - fn op_to_const(constant_values: &FxHashMap, op: &Op) -> Option { + fn op_to_const(constant_values: &FxHashMap, op: &Op) -> Option { match op { Op::Const(constant) => Some(constant.clone()), - Op::Vreg(place) => constant_values.get(place).cloned(), + Op::Value(place) => constant_values.get(place).cloned(), } } - fn try_replace_op(constant_values: &FxHashMap, op: &mut Op) -> bool { - if let Op::Vreg(value) = op { + fn try_replace_op(constant_values: &FxHashMap, op: &mut Op) -> bool { + if let Op::Value(value) = op { if let Some(const_val) = constant_values.get(value) { - debug!("Replacing {value} with {const_val}"); + // debug!("Replacing {value} with {const_val}"); *op = Op::Const(const_val.clone()); return true; } @@ -182,7 +180,7 @@ impl ConstantFoldPass { } fn eval_binary_instr( - constant_values: &FxHashMap, + constant_values: &FxHashMap, lhs: &Op, rhs: &Op, eval: E, @@ -216,9 +214,9 @@ mod tests { " fun i32 @test() { bb0: - v0 = i32 8; - v1 = sub i32 v0, 7; - ret i32 v1; + i32 %0 = 8i32; + i32 %1 = sub %0, 7i32; + ret %1; } ", ); @@ -227,9 +225,9 @@ mod tests { assert_eq!( "fun i32 @test() { bb0: - v0 = i32 8; - v1 = i32 1; - ret i32 1; + i32 %0 = 8i32; + i32 %1 = 1i32; + ret 1i32; } ", function.to_string(), @@ -242,9 +240,9 @@ bb0: " fun i32 @test() { bb0: - v0 = i32 8; - v1 = add i32 v0, 7; - ret i32 v1; + i32 %0 = 8i32; + i32 %1 = add %0, 7i32; + ret %1; } ", ); @@ -254,9 +252,9 @@ bb0: " fun i32 @test() { bb0: - v0 = i32 8; - v1 = i32 15; - ret i32 15; + i32 %0 = 8i32; + i32 %1 = 15i32; + ret 15i32; }", ) } @@ -266,10 +264,10 @@ bb0: let mut module = create_test_module_from_source( " fun i32 @test(i32) { - bb0(i32 v0): - v1 = i32 8; - v2 = add i32 v0, v1; - ret i32 v2; + bb0(i32 %0): + i32 %1 = 8i32; + i32 %2 = add %0, %1; + ret %2; } ", ); @@ -277,10 +275,10 @@ bb0: let function = module.find_function_by_name("test").unwrap(); assert_eq!( "fun i32 @test(i32) { -bb0(i32 v0): - v1 = i32 8; - v2 = add i32 v0, 8; - ret i32 v2; +bb0(i32 %0): + i32 %1 = 8i32; + i32 %2 = add %0, 8i32; + ret %2; } ", function.to_string() diff --git a/ir/crates/middle/src/optimization/basic_block_pass/copy_propagation.rs b/ir/crates/middle/src/optimization/basic_block_pass/copy_propagation.rs index a94f6aa..75616c3 100644 --- a/ir/crates/middle/src/optimization/basic_block_pass/copy_propagation.rs +++ b/ir/crates/middle/src/optimization/basic_block_pass/copy_propagation.rs @@ -2,7 +2,7 @@ use rustc_hash::FxHashMap; use crate::{ cfg::{ - BasicBlockId, + BasicBlockRef, TerminatorKind, }, instruction::{ @@ -14,21 +14,21 @@ use crate::{ basic_block_pass::BasicBlockPass, Pass, }, - FunctionId, - VReg, + FunctionRef, + Value, }; #[derive(Debug, Clone, Eq, PartialEq, Default)] struct CopyGraph { - edges: FxHashMap, + edges: FxHashMap, } impl CopyGraph { - pub fn insert_copy(&mut self, original_value: VReg, copy: VReg) { + pub fn insert_copy(&mut self, original_value: Value, copy: Value) { self.edges.insert(copy, original_value); } - pub fn find_original_value(&self, value: VReg) -> VReg { + pub fn find_original_value(&self, value: Value) -> Value { let mut value = value; while let Some(original_value) = self.edges.get(&value).copied() { value = original_value; @@ -50,14 +50,15 @@ impl BasicBlockPass for CopyPropagationPass { fn run_on_basic_block( &mut self, module: &mut Module, - function: FunctionId, - basic_block: BasicBlockId, + function: FunctionRef, + basic_block: BasicBlockRef, ) -> usize { let cfg = &mut module.functions[function].cfg; - let bb = cfg.basic_block_mut(basic_block); + let bb = &mut cfg.basic_blocks[basic_block]; let mut changes = 0; let mut copy_graph = CopyGraph::default(); - for instr in bb.instructions_mut() { + for instr_Id in bb.instructions() { + let instr = &mut cfg.instructions[instr_Id]; match &mut instr.kind { InstrKind::Alloca(_) => {} InstrKind::Store(store_instr) => { @@ -69,8 +70,8 @@ impl BasicBlockPass for CopyPropagationPass { InstrKind::Load(_) => {} InstrKind::Op(op_instr) => match &op_instr.op { Op::Const(_) => {} - Op::Vreg(value) => { - copy_graph.insert_copy(*value, op_instr.value); + Op::Value(value) => { + copy_graph.insert_copy(*value, instr.value()); } }, InstrKind::Sub(sub_instr) => { @@ -124,7 +125,7 @@ impl CopyPropagationPass { fn apply_copy_graph_to_op(copy_graph: &CopyGraph, op: &mut Op) -> bool { match op { Op::Const(_) => false, - Op::Vreg(value) => { + Op::Value(value) => { let original_value = copy_graph.find_original_value(*value); if original_value != *value { *value = original_value; @@ -149,12 +150,12 @@ mod tests { let mut module = create_test_module_from_source( " fun i32 @test(i32) { - bb0(i32 v0): - v1 = i32 v0; - v2 = add i32 v1, v0; - v3 = i32 v1; - v4 = sub i32 v2, v3; - ret i32 v4; + bb0(i32 %0): + i32 %1 = %0; + i32 %2 = add %1, %0; + i32 %3 = %1; + i32 %4 = sub %2, %3; + ret %4; } ", ); @@ -163,12 +164,12 @@ mod tests { assert_eq!( function.to_string(), "fun i32 @test(i32) { -bb0(i32 v0): - v1 = i32 v0; - v2 = add i32 v0, v0; - v3 = i32 v1; - v4 = sub i32 v2, v0; - ret i32 v4; +bb0(i32 %0): + i32 %1 = %0; + i32 %2 = add %0, %0; + i32 %3 = %1; + i32 %4 = sub %2, %0; + ret %4; } " ) diff --git a/ir/crates/middle/src/optimization/basic_block_pass/cse.rs b/ir/crates/middle/src/optimization/basic_block_pass/cse.rs index 83cd840..656de9b 100644 --- a/ir/crates/middle/src/optimization/basic_block_pass/cse.rs +++ b/ir/crates/middle/src/optimization/basic_block_pass/cse.rs @@ -1,7 +1,7 @@ use rustc_hash::FxHashMap; use crate::{ - cfg::BasicBlockId, + cfg::BasicBlockRef, instruction::{ InstrIdentifyingKey, InstrKind, @@ -13,8 +13,8 @@ use crate::{ basic_block_pass::BasicBlockPass, Pass, }, - FunctionId, - VReg, + FunctionRef, + Value, }; /// # Common Subexpression Elimination @@ -33,28 +33,25 @@ impl BasicBlockPass for CSEPass { fn run_on_basic_block( &mut self, module: &mut Module, - function: FunctionId, - basic_block: BasicBlockId, + function: FunctionRef, + basic_block: BasicBlockRef, ) -> usize { let cfg = &mut module.functions[function].cfg; - let bb = cfg.basic_block_mut(basic_block); + let bb = &mut cfg.basic_blocks[basic_block]; let mut changes = 0; - let mut expr_cache: FxHashMap = FxHashMap::default(); - for instr in bb.instructions_mut() { + let mut expr_cache: FxHashMap = FxHashMap::default(); + for instr_id in bb.instructions() { + let instr = &mut cfg.instructions[instr_id]; let key = instr.identifying_key(); if let Some(key) = key { - let produced_value = instr.defined_vreg(); - if let Some(produced_value) = produced_value { - let cached_value = expr_cache.get(&key).copied(); - if let Some(cached_value) = cached_value { - instr.kind = InstrKind::Op(OpInstr { - value: produced_value, - op: Op::Vreg(cached_value), - }); - changes += 1; - } else { - expr_cache.insert(key, produced_value); - } + let cached_value = expr_cache.get(&key).copied(); + if let Some(cached_value) = cached_value { + instr.kind = InstrKind::Op(OpInstr { + op: Op::Value(cached_value), + }); + changes += 1; + } else { + expr_cache.insert(key, instr.value()); } } } @@ -66,23 +63,8 @@ impl BasicBlockPass for CSEPass { mod tests { use crate::{ cfg, - cfg::{ - RetTerm, - TerminatorKind, - }, - instruction::{ - Const, - Op, - }, - optimization, - optimization::{ - Pipeline, - PipelineConfig, - }, - test::{ - create_test_module, - create_test_module_from_source, - }, + optimization::PipelineConfig, + test::create_test_module_from_source, }; #[test] @@ -90,11 +72,11 @@ mod tests { let mut module = create_test_module_from_source( " fun i32 @test(i32) { - bb0(i32 v0): - v1 = sub i32 v0, 3; - v2 = sub i32 v0, 3; - v3 = sub i32 v2, v1; - ret i32 v3; + bb0(i32 %0): + i32 %1 = sub %0, 3i32; + i32 %2 = sub %0, 3i32; + i32 %3 = sub %2, %1; + ret %3; } ", ); @@ -102,11 +84,11 @@ mod tests { let function = module.find_function_by_name("test").unwrap(); assert_eq!( "fun i32 @test(i32) { -bb0(i32 v0): - v1 = sub i32 v0, 3; - v2 = i32 v1; - v3 = sub i32 v2, v1; - ret i32 v3; +bb0(i32 %0): + i32 %1 = sub %0, 3i32; + i32 %2 = %1; + i32 %3 = sub %2, %1; + ret %3; } ", function.to_string() diff --git a/ir/crates/middle/src/optimization/basic_block_pass/mod.rs b/ir/crates/middle/src/optimization/basic_block_pass/mod.rs index c87b371..0afa044 100644 --- a/ir/crates/middle/src/optimization/basic_block_pass/mod.rs +++ b/ir/crates/middle/src/optimization/basic_block_pass/mod.rs @@ -1,11 +1,13 @@ +use itertools::Itertools; + use crate::{ - cfg::BasicBlockId, + cfg::BasicBlockRef, module::Module, optimization::{ FunctionPass, Pass, }, - FunctionId, + FunctionRef, }; pub mod constant_fold; @@ -16,8 +18,8 @@ pub trait BasicBlockPass: Pass { fn run_on_basic_block( &mut self, module: &mut Module, - function: FunctionId, - basic_block: BasicBlockId, + function: FunctionRef, + bb_ref: BasicBlockRef, ) -> usize; } @@ -25,12 +27,13 @@ impl FunctionPass for T where T: BasicBlockPass, { - fn run_on_function(&mut self, module: &mut Module, function: FunctionId) -> usize { + fn run_on_function(&mut self, module: &mut Module, function: FunctionRef) -> usize { let mut changes = 0; let basic_blocks = module.functions[function] .cfg - .basic_block_ids() - .collect::>(); + .basic_blocks + .keys() + .collect_vec(); for basic_block in basic_blocks { changes += self.run_on_basic_block(module, function, basic_block); } diff --git a/ir/crates/middle/src/optimization/function_pass/cfg_simplify/bb_merge.rs b/ir/crates/middle/src/optimization/function_pass/cfg_simplify/bb_merge.rs index 461e821..f6e66a3 100644 --- a/ir/crates/middle/src/optimization/function_pass/cfg_simplify/bb_merge.rs +++ b/ir/crates/middle/src/optimization/function_pass/cfg_simplify/bb_merge.rs @@ -1,9 +1,10 @@ +use itertools::Itertools; use tracing::debug; use crate::{ module::Module, optimization::FunctionPass, - FunctionId, + FunctionRef, }; /// # Basic block merge @@ -80,9 +81,9 @@ impl crate::optimization::Pass for Pass { } impl FunctionPass for Pass { - fn run_on_function(&mut self, module: &mut Module, function: FunctionId) -> usize { + fn run_on_function(&mut self, module: &mut Module, function: FunctionRef) -> usize { let function = &mut module.functions[function]; - let mut worklist = function.cfg.basic_block_ids().collect::>(); + let mut worklist = function.cfg.basic_blocks.keys().collect_vec(); let mut merged = 0; while let Some(b_id) = worklist.pop() { let cfg = &mut function.cfg; @@ -96,11 +97,13 @@ impl FunctionPass for Pass { if cfg.successors(a_id).count() != 1 { continue; } - debug!("Merging {b_id} into {a_id}"); - let (instructions, b_term) = cfg.remove_basic_block(b_id); - let a = cfg.basic_block_mut(a_id); - a.append_instructions(instructions.into_iter()); - a.update_terminator(|term| *term = b_term); + let b = cfg + .remove_basic_block(b_id) + .expect("Basic block does not exist"); + let a = &mut cfg.basic_blocks[a_id]; + debug!("Merging {b} into {a}"); + a.append_instructions(b.instructions.into_iter()); + a.update_terminator(|term| *term = b.terminator.unwrap()); cfg.recompute_successors(a_id); merged += 1; } @@ -129,23 +132,23 @@ mod tests { " fun void @test() { bb0: - v0 = bool 1; - condbr v0 bb1, bb2; + bool %0 = true; + condbr %0 bb1, bb2; bb1: - v1 = add i32 1, 2; + i32 %1 = add 1i32, 2i32; br bb4; bb2: - v2 = add i32 3, 4; + i32 %2 = add 3i32, 4i32; br bb3; bb3: - v3 = add i32 5, 6; + i32 %3 = add 5i32, 6i32; br bb5; bb4: - v4 = add i32 7, 8; + i32 %4 = add 7i32, 8i32; br bb5; bb5: - v5 = add i32 9, 10; - ret void; + i32 %5 = add 9i32, 10i32; + ret; } ", ); @@ -158,19 +161,19 @@ mod tests { " fun void @test() { bb0: - v0 = bool 1; - condbr 1 bb1, bb2; + bool %0 = true; + condbr true bb1, bb2; bb1: - v1 = i32 3; - v4 = i32 15; + i32 %1 = 3i32; + i32 %4 = 15i32; br bb5; bb2: - v2 = i32 7; - v3 = i32 11; + i32 %2 = 7i32; + i32 %3 = 11i32; br bb5; bb5: - v5 = i32 19; - ret void; + i32 %5 = 19i32; + ret; } ", ); diff --git a/ir/crates/middle/src/optimization/function_pass/cfg_simplify/jump_threading.rs b/ir/crates/middle/src/optimization/function_pass/cfg_simplify/jump_threading.rs index 8c0007a..feb3d27 100644 --- a/ir/crates/middle/src/optimization/function_pass/cfg_simplify/jump_threading.rs +++ b/ir/crates/middle/src/optimization/function_pass/cfg_simplify/jump_threading.rs @@ -2,7 +2,7 @@ use tracing::debug; use crate::{ cfg::{ - BasicBlockId, + BasicBlockRef, BranchTerm, TerminatorKind, }, @@ -12,7 +12,7 @@ use crate::{ }, module::Module, optimization::basic_block_pass, - FunctionId, + FunctionRef, }; /// # Jump threading optimization pass @@ -77,31 +77,32 @@ impl basic_block_pass::BasicBlockPass for Pass { fn run_on_basic_block( &mut self, module: &mut Module, - function: FunctionId, - basic_block: BasicBlockId, + function: FunctionRef, + bb_ref: BasicBlockRef, ) -> usize { let cfg = &mut module.functions[function].cfg; - let bb = cfg.basic_block_mut(basic_block); + let bb = &mut cfg.basic_blocks[bb_ref]; let changes = bb.update_terminator(|term| { match &mut term.kind { - TerminatorKind::Ret(_) | - TerminatorKind::Branch(_) => 0, + TerminatorKind::Ret(_) | TerminatorKind::Branch(_) => 0, TerminatorKind::CondBranch(condbr_term) => { match &condbr_term.cond { Op::Const(const_val) => { let is_true_branch = match const_val { // It is important to not check equality with one, as any other value than 0 is evaluated to true at runtime. // For example: 2 => true, -1 => true, 0 => false - Const::Int (_, value) => *value != 0, + Const::Int(_, value) => *value != 0, }; - let target = if is_true_branch { condbr_term.true_target.clone() } else { condbr_term.false_target.clone() }; - debug!("Found constant condition in conditional branch. Replacing with branch to {}", target.id); - term.kind = TerminatorKind::Branch(BranchTerm::new( - target - )); + let target = if is_true_branch { + condbr_term.true_target.clone() + } else { + condbr_term.false_target.clone() + }; + // debug!("Found constant condition in conditional branch. Replacing with branch to {}", target.display(cfg)); + term.kind = TerminatorKind::Branch(BranchTerm::new(target)); 1 } - Op::Vreg(_) => 0, + Op::Value(_) => 0, } } } @@ -109,7 +110,7 @@ impl basic_block_pass::BasicBlockPass for Pass { // Only recompute successors if we have changed anything as // recompute_successors does not check whether any updates have occurred if changes > 0 { - cfg.recompute_successors(basic_block); + cfg.recompute_successors(bb_ref); } changes } diff --git a/ir/crates/middle/src/optimization/function_pass/cfg_simplify/mod.rs b/ir/crates/middle/src/optimization/function_pass/cfg_simplify/mod.rs index 5eda9df..60e5360 100644 --- a/ir/crates/middle/src/optimization/function_pass/cfg_simplify/mod.rs +++ b/ir/crates/middle/src/optimization/function_pass/cfg_simplify/mod.rs @@ -4,7 +4,7 @@ use crate::{ CFGSimplifyPipelineConfig, FunctionPass, }, - FunctionId, + FunctionRef, }; mod bb_merge; @@ -36,7 +36,7 @@ impl crate::optimization::Pass for Pass { } impl FunctionPass for Pass { - fn run_on_function(&mut self, module: &mut Module, function: FunctionId) -> usize { + fn run_on_function(&mut self, module: &mut Module, function: FunctionRef) -> usize { let mut changed = 0; let config = &self.config; if config.jump_threading { @@ -74,12 +74,12 @@ mod tests { let mut module = create_test_module_from_source( " fun i32 @test(i32) { - bb0(i32 v0): - condbr 1 bb1, bb2; + bb0(i32 %0): + condbr true bb1, bb2; bb1: br bb2; bb2: - ret i32 v0; + ret %0; } ", ); @@ -89,8 +89,8 @@ mod tests { assert_module_is_equal_to_src( &module, "fun i32 @test(i32) { - bb0(i32 v0): - ret i32 v0; + bb0(i32 %0): + ret %0; } ", ) diff --git a/ir/crates/middle/src/optimization/function_pass/cfg_simplify/unreachable_bb_elim.rs b/ir/crates/middle/src/optimization/function_pass/cfg_simplify/unreachable_bb_elim.rs index 3f6a621..6e17464 100644 --- a/ir/crates/middle/src/optimization/function_pass/cfg_simplify/unreachable_bb_elim.rs +++ b/ir/crates/middle/src/optimization/function_pass/cfg_simplify/unreachable_bb_elim.rs @@ -1,3 +1,4 @@ +use itertools::Itertools; use tracing::{ debug, trace, @@ -10,7 +11,7 @@ use crate::{ }, module::Module, optimization::function_pass::FunctionPass, - FunctionId, + FunctionRef, Instr, }; @@ -73,36 +74,38 @@ impl crate::optimization::Pass for Pass { } impl FunctionPass for Pass { - fn run_on_function(&mut self, module: &mut Module, function: FunctionId) -> usize { + fn run_on_function(&mut self, module: &mut Module, function: FunctionRef) -> usize { let function = &mut module.functions[function]; let domtree = function.cfg.dom_tree(); - let entry_block = function.cfg.entry_block(); + let entry_block = function.cfg.entry_block_ref(); // Find all unreachable basic blocks. // A basic block is unreachable iff it is not dominated by the entry block. let unreachable_bbs = function .cfg - .basic_block_ids() + .basic_blocks + .keys() .filter(|&bb| !domtree.dominates(entry_block, bb)) - .collect::>(); + .collect_vec(); if unreachable_bbs.is_empty() { return 0; } - trace!( + debug!( "Removing {} unreachable basic blocks: {:?}", unreachable_bbs.len(), unreachable_bbs ); let removed = unreachable_bbs.len(); - for bb in unreachable_bbs { + for bb_ref in unreachable_bbs { // Remove the unreachable block from the cfg - debug!("Removing {bb}"); - let successors = function.cfg.successors(bb).collect::>(); - function.cfg.remove_basic_block(bb); - for successor_id in successors { + let bb = &function.cfg.basic_blocks[bb_ref]; + trace!("Removing {bb}"); + let successors = function.cfg.successors(bb_ref).collect_vec(); + function.cfg.remove_basic_block(bb_ref); + for successor_ref in successors { // Check if we can remove basic block arguments from one of the unreachable block's successors // This is the case if the successor now only has one predecessor let pred_id = { - let mut preds = function.cfg.predecessors(successor_id); + let mut preds = function.cfg.predecessors(successor_ref); let Some(pred_id) = preds.next() else { continue; }; @@ -111,34 +114,33 @@ impl FunctionPass for Pass { } pred_id }; - debug!("Removing jump target argument list from {pred_id}"); // Clear the jump target argument list of the predecessor - let pred = function.cfg.basic_block_mut(pred_id); + let pred = &mut function.cfg.basic_blocks[pred_id]; + trace!("Removing jump target argument list from {pred}"); let Some(branch_args) = - pred.update_terminator(|terminator| terminator.clear_args(successor_id)) + pred.update_terminator(|terminator| terminator.clear_args(successor_ref)) else { continue; }; - debug!("Removing basic block arguments from {successor_id}"); - let branch_args = branch_args.collect::>(); + let branch_args = branch_args.collect_vec(); + let successor = &function.cfg.basic_blocks[successor_ref]; + trace!("Removing basic block arguments from {successor}"); // Remove the basic block arguments from the successor - let successors_args = function - .cfg - .basic_block_mut(successor_id) + let successors_args = function.cfg.basic_blocks[successor_ref] .clear_arguments() - .collect::>(); + .collect_vec(); for (argument, op) in successors_args.into_iter().zip(branch_args) { - let ty = function.cfg.vreg_ty_cloned(argument); + let ty = function.cfg.basic_block_args[argument].ty.clone(); // To keep the program consistent, we need to insert move instruction for each argument // They look like this: // = - function.cfg.basic_block_mut(pred_id).append_instruction( + let instr_id = function.cfg.add_instruction( + pred_id, ty, - InstrKind::Op(OpInstr { - value: argument, - op, - }), + InstrKind::Op(OpInstr { op }), + "todo".into(), ); + todo!("Replace references to 'argument' with 'instr_id' in the function"); } } } @@ -170,14 +172,14 @@ mod tests { r#" fun void @test() { bb0: - v0 = bool 1; + bool %0 = true; br bb2; bb1: - v1 = i32 7; + i32 %1 = 7i32; br bb2; bb2: - v3 = i32 8; - ret void; + i32 %3 = 8i32; + ret; } "#, ); @@ -189,11 +191,11 @@ mod tests { " fun void @test() { bb0: - v0 = bool 1; + bool %0 = true; br bb2; bb2: - v3 = i32 8; - ret void; + i32 %3 = 8i32; + ret; } ", ) @@ -205,14 +207,14 @@ mod tests { r#" fun i32 @test() { bb0: - v0 = i32 8; - br bb2(v0); + i32 %0 = 8i32; + br bb2(%0); bb1: - v1 = i32 7; - br bb2(v1); - bb2(i32 v4): - v3 = i32 v4; - ret i32 v3; + i32 %1 = 7i32; + br bb2(%1); + bb2(i32 %4): + i32 %3 = %4; + ret %3; } "#, ); @@ -224,12 +226,12 @@ mod tests { " fun i32 @test() { bb0: - v0 = i32 8; - v4 = i32 8; + i32 %0 = 8i32; + i32 %4 = 8i32; br bb2; bb2: - v3 = i32 v4; - ret i32 v3; + i32 %3 = %4; + ret %3; } ", ) diff --git a/ir/crates/middle/src/optimization/function_pass/constant_propagation.rs b/ir/crates/middle/src/optimization/function_pass/constant_propagation.rs index 48260d5..0a8a59e 100644 --- a/ir/crates/middle/src/optimization/function_pass/constant_propagation.rs +++ b/ir/crates/middle/src/optimization/function_pass/constant_propagation.rs @@ -21,7 +21,7 @@ use crate::{ FunctionPass, Pass, }, - FunctionId, + FunctionRef, }; #[derive(Default)] @@ -34,11 +34,11 @@ impl Pass for ConstantPropagation { } impl FunctionPass for ConstantPropagation { - fn run_on_function(&mut self, module: &mut Module, function: FunctionId) -> usize { + fn run_on_function(&mut self, module: &mut Module, function: FunctionRef) -> usize { let mut changes = 0; let mut analysis_runner = concrete_value::AnalysisRunner::new(&mut module.functions[function]); - while let Some((bb_id, mut instr_walker)) = analysis_runner.next_bb() { + while let Some((bb_ref, mut instr_walker)) = analysis_runner.next_bb() { // let bb = instr_walker.function.cfg.basic_block(bb_id); // let bb_args = bb.arguments(); // if !bb_args.is_empty() { @@ -138,41 +138,37 @@ impl FunctionPass for ConstantPropagation { InstrKind::Alloca(_) | InstrKind::Load(_) | InstrKind::Store(_) => {} }); - analysis_runner - .function - .cfg - .basic_block_mut(bb_id) - .update_terminator(|terminator| { - let state = analysis_runner.state.get(bb_id); - match &mut terminator.kind { - TerminatorKind::Ret(ret) => { - if let Some(op) = &mut ret.value { - if Self::maybe_replace_op(op, state) { - changes += 1; - } - } - } - TerminatorKind::CondBranch(branch) => { - if Self::maybe_replace_op(&mut branch.cond, state) { + analysis_runner.function.cfg.basic_blocks[bb_ref].update_terminator(|terminator| { + let state = analysis_runner.state.get(bb_ref); + match &mut terminator.kind { + TerminatorKind::Ret(ret) => { + if let Some(op) = &mut ret.value { + if Self::maybe_replace_op(op, state) { changes += 1; } - for target in branch.targets_mut() { - for arg in &mut target.arguments { - if Self::maybe_replace_op(arg, state) { - changes += 1; - } - } - } } - TerminatorKind::Branch(branch) => { - for arg in &mut branch.target.arguments { + } + TerminatorKind::CondBranch(branch) => { + if Self::maybe_replace_op(&mut branch.cond, state) { + changes += 1; + } + for target in branch.targets_mut() { + for arg in &mut target.arguments { if Self::maybe_replace_op(arg, state) { changes += 1; } } } } - }); + TerminatorKind::Branch(branch) => { + for arg in &mut branch.target.arguments { + if Self::maybe_replace_op(arg, state) { + changes += 1; + } + } + } + } + }); } changes } @@ -182,10 +178,10 @@ impl ConstantPropagation { fn maybe_replace_op(op: &mut Op, state: &DFValueState) -> bool { match op { Op::Const(_) => false, - Op::Vreg(value) => match state.get(value).and_then(|s| s.as_single_value()) { + Op::Value(value) => match state.get(value).and_then(|s| s.as_single_value()) { None => false, Some(const_value) => { - debug!("Replaced {value} with {const_value}"); + // debug!("Replaced {value} with {const_value}"); *op = Op::Const(const_value.clone()); true } @@ -213,15 +209,15 @@ mod tests { " fun i32 @test() { bb0: - v0 = i32 7; + i32 %0 = 7i32; br bb1; bb1: - v1 = add i32 v0, 8; + i32 %1 = add %0, 8i32; br bb2; bb2: - v2 = i32 9; - v3 = add i32 v2, v0; - ret i32 v3; + i32 %2 = 9i32; + i32 %3 = add %2, %0; + ret %3; } ", ); @@ -231,15 +227,15 @@ bb2: " fun i32 @test() { bb0: - v0 = i32 7; + i32 %0 = 7i32; br bb1; bb1: - v1 = i32 15; + i32 %1 = 15i32; br bb2; bb2: - v2 = i32 9; - v3 = i32 16; - ret i32 16; + i32 %2 = 9i32; + i32 %3 = 16i32; + ret 16i32; } ", ); diff --git a/ir/crates/middle/src/optimization/function_pass/dead_code_elimination.rs b/ir/crates/middle/src/optimization/function_pass/dead_code_elimination.rs index 431135e..4057f21 100644 --- a/ir/crates/middle/src/optimization/function_pass/dead_code_elimination.rs +++ b/ir/crates/middle/src/optimization/function_pass/dead_code_elimination.rs @@ -1,17 +1,14 @@ -use cranelift_entity::SecondaryMap; use tracing::debug; use crate::{ - analysis::{ - dataflow, - dataflow::use_def::InstrUid, - }, + analysis::dataflow, module::Module, optimization::{ FunctionPass, Pass, }, - FunctionId, + FunctionRef, + Value, }; #[derive(Debug, Clone, Eq, PartialEq, Default)] @@ -24,20 +21,34 @@ impl Pass for DeadCodeEliminationPass { } impl FunctionPass for DeadCodeEliminationPass { - fn run_on_function(&mut self, module: &mut Module, function: FunctionId) -> usize { - let runner = dataflow::use_def::AnalysisRunner::new(&mut module.functions[function]); + fn run_on_function(&mut self, module: &mut Module, function: FunctionRef) -> usize { + let function = &mut module.functions[function]; + let runner = dataflow::use_def::AnalysisRunner::new(function); let state = runner.collect(); let mut changes = 0; - let mut removed_instr_count = SecondaryMap::new(); - for vreg in state.unused_regs() { - debug!("Removing unused def {vreg}"); - let InstrUid(bb_id, instr_id) = state.get_def(vreg).unwrap(); - let bb = &mut module.functions[function].cfg.basic_block_mut(bb_id); - let removed_instrs = removed_instr_count.get(bb_id).copied().unwrap_or(0); - let instr_id = instr_id - removed_instrs; - bb.remove_instruction(instr_id); - removed_instr_count[bb_id] = removed_instrs + 1; - changes += 1; + let mut instructions_to_remove = Vec::new(); + for value in state.unused_values(function.cfg.values()) { + match value { + Value::Instr(instr_id) => { + let instr = &function.cfg.instructions[instr_id]; + debug!("Removing unused def {instr}"); + changes += 1; + instructions_to_remove.push(instr_id); + } + Value::BBArg(_) => {} + } + } + + for instr_id in instructions_to_remove { + let defined_in = function + .cfg + .instructions + .remove(instr_id) + .expect("Tried to remove an instruction that does not exist") + .defined_in; + function.cfg.basic_blocks[defined_in] + .instructions + .shift_remove(&instr_id); } changes @@ -60,12 +71,12 @@ mod tests { " fun i32 @test() { bb0: - v0 = i32 20; - v1 = add i32 v0, 8; - v2 = sub i32 v0, 9; + i32 %0 = 20i32; + i32 %1 = add %0, 8i32; + i32 %2 = sub %0, 9i32; br bb1; bb1: - ret i32 v0; + ret %0; } ", ); @@ -75,10 +86,10 @@ mod tests { " fun i32 @test() { bb0: - v0 = i32 20; + %0 = i32 20; br bb1; bb1: - ret i32 v0; + ret i32 %0; } ", ); diff --git a/ir/crates/middle/src/optimization/function_pass/mod.rs b/ir/crates/middle/src/optimization/function_pass/mod.rs index b37590c..4b6783d 100644 --- a/ir/crates/middle/src/optimization/function_pass/mod.rs +++ b/ir/crates/middle/src/optimization/function_pass/mod.rs @@ -5,9 +5,9 @@ pub mod dead_code_elimination; use crate::{ module::Module, optimization::Pass, - FunctionId, + FunctionRef, }; pub trait FunctionPass: Pass { - fn run_on_function(&mut self, module: &mut Module, function: FunctionId) -> usize; + fn run_on_function(&mut self, module: &mut Module, function: FunctionRef) -> usize; } diff --git a/ir/crates/middle/src/optimization/mod.rs b/ir/crates/middle/src/optimization/mod.rs index fc54876..d9d4a4b 100644 --- a/ir/crates/middle/src/optimization/mod.rs +++ b/ir/crates/middle/src/optimization/mod.rs @@ -1,3 +1,4 @@ +use itertools::Itertools; use tracing::{ debug, trace, @@ -17,7 +18,7 @@ use crate::{ FunctionPass, }, }, - FunctionId, + FunctionRef, }; pub mod basic_block_pass; @@ -183,35 +184,34 @@ impl<'a> Pipeline<'a> { } pub fn run(&mut self) { - for function in self.module.functions.keys() { - trace!("Optimizing {function}"); - self.run_on_function(function); - trace!("Optimized {function}"); - } - } - - fn run_on_function(&mut self, function: FunctionId) { - let span = trace_span!("func_opt", %function); - span.in_scope(|| { - let mut passes = self.get_passes(); - debug!("Running {} passes", passes.len()); - loop { - let mut changes = 0; - for pass in &mut passes { - debug!("Running pass {}", pass.name()); - let name = pass.name(); - let span = trace_span!("pass", %name); - span.in_scope(|| { - changes += pass.run_on_function(self.module, function); - }); - } - debug!("{changes} changes"); - if changes == 0 { - debug!("Reached fixpoint. Stopping optimization"); - break; - } + let functions = self.module.functions.keys().collect_vec(); + for function_ref in functions { + let function_name = self.module.functions[function_ref].name.clone(); + trace!("Optimizing {function_name}"); + self.run_on_function(function_ref); + trace!("Optimized {function_name}"); + } + } + + fn run_on_function(&mut self, function: FunctionRef) { + let mut passes = self.get_passes(); + debug!("Running {} passes", passes.len()); + loop { + let mut changes = 0; + for pass in &mut passes { + debug!("Running pass {}", pass.name()); + let name = pass.name(); + let span = trace_span!("pass", %name); + span.in_scope(|| { + changes += pass.run_on_function(self.module, function); + }); } - }); + debug!("{changes} changes"); + if changes == 0 { + debug!("Reached fixpoint. Stopping optimization"); + break; + } + } } fn get_passes(&mut self) -> Vec> { diff --git a/ir/crates/middle/src/test.rs b/ir/crates/middle/src/test.rs index f437446..5c9f865 100644 --- a/ir/crates/middle/src/test.rs +++ b/ir/crates/middle/src/test.rs @@ -1,6 +1,6 @@ use crate::{ Function, - FunctionId, + FunctionRef, Module, Type, }; @@ -9,14 +9,16 @@ pub fn create_test_function() -> Function { Function::new("test".to_string(), vec![], Type::I32) } -pub fn create_test_module() -> (Module, FunctionId) { +pub fn create_test_module() -> (Module, FunctionRef) { let mut module = Module::default(); - let function = module.functions.push(create_test_function()); + let function = module.functions.insert(create_test_function()); (module, function) } pub fn create_test_module_from_source(source: &str) -> Module { - natrix_front::parse(source).unwrap().into() + natrix_front::parse(source) + .expect("Failed to parse source") + .into() } pub fn assert_module_is_equal_to_src(module: &Module, expected: &str) { diff --git a/ir/crates/middle/src/ty.rs b/ir/crates/middle/src/ty.rs index 267069e..5166dbd 100644 --- a/ir/crates/middle/src/ty.rs +++ b/ir/crates/middle/src/ty.rs @@ -59,7 +59,7 @@ impl Display for Type { Type::I32 => write!(f, "i32"), Type::I64 => write!(f, "i64"), Type::Bool => write!(f, "bool"), - Type::Ptr(_ty) => write!(f, "ptr"), + Type::Ptr(ty) => write!(f, "&{}", ty), Type::Void => write!(f, "void"), } }