public void VisitInstructionBr(CilInstructionBr instruction) { if (instruction is BranchOnTrueShortInstruction branchOnTrueShortInstruction) { VisitBranchOnTrueShortInstruction(branchOnTrueShortInstruction); } else if (instruction is BranchOnTrueInstruction branchOnTrueInstruction) { VisitBranchOnTrueInstruction(branchOnTrueInstruction); } else if (instruction is BranchOnFalseShortInstruction branchOnFalseShortInstruction) { VisitBranchOnFalseShortInstruction(branchOnFalseShortInstruction); } else if (instruction is BranchOnFalseInstruction branchOnFalseInstruction) { VisitBranchOnFalseInstruction(branchOnFalseInstruction); } else if (instruction is BranchShortInstruction branchShortInstruction) { VisitBranchShortInstruction(branchShortInstruction); } else if (instruction is BranchOnNotEqualUnsignedShortInstruction branchOnNotEqualUnsignedShortInstruction) { VisitBranchOnNotEqualUnsignedShortInstruction(branchOnNotEqualUnsignedShortInstruction); } else if (instruction is BranchOnNotEqualUnsignedInstruction branchOnNotEqualUnsignedInstruction) { VisitBranchOnNotEqualUnsignedInstruction(branchOnNotEqualUnsignedInstruction); } else if (instruction is BranchOnEqualShortInstruction branchOnEqualShortInstruction) { VisitBranchOnEqualShortInstruction(branchOnEqualShortInstruction); } else if (instruction is BranchOnEqualInstruction branchOnEqualInstruction) { VisitBranchOnEqualInstruction(branchOnEqualInstruction); } else if (instruction is BranchOnLessThanOrEqualToShortInstruction branchOnLessThanOrEqualToShortInstruction) { VisitBranchOnLessThanOrEqualToShortInstruction(branchOnLessThanOrEqualToShortInstruction); } else if (instruction is BranchOnLessThanOrEqualToInstruction branchOnLessThanOrEqualToInstruction) { VisitBranchOnLessThanOrEqualToInstruction(branchOnLessThanOrEqualToInstruction); } else if (instruction is BranchOnLessThanOrEqualToUnsignedShortInstruction branchOnLessThanOrEqualToUnsignedShortInstruction) { VisitBranchOnLessThanOrEqualToUnsignedShortInstruction(branchOnLessThanOrEqualToUnsignedShortInstruction); } else if (instruction is BranchOnLessThanOrEqualToUnsignedInstruction branchOnLessThanOrEqualToUnsignedInstruction) { VisitBranchOnLessThanOrEqualToUnsignedInstruction(branchOnLessThanOrEqualToUnsignedInstruction); } else if (instruction is BranchOnLessThanShortInstruction branchOnLessThanShortInstruction) { VisitBranchOnLessThanShortInstruction(branchOnLessThanShortInstruction); } else if (instruction is BranchOnLessThanInstruction branchOnLessThanInstruction) { VisitBranchOnLessThanInstruction(branchOnLessThanInstruction); } else if (instruction is BranchOnLessThanUnsignedShortInstruction branchOnLessThanUnsignedShortInstruction) { VisitBranchOnLessThanUnsignedShortInstruction(branchOnLessThanUnsignedShortInstruction); } else if (instruction is BranchOnLessThanUnsignedInstruction branchOnLessThanUnsignedInstruction) { VisitBranchOnLessThanUnsignedInstruction(branchOnLessThanUnsignedInstruction); } else if (instruction is BranchOnGreaterThanOrEqualToShortInstruction branchOnGreaterThanOrEqualToShortInstruction) { VisitBranchOnGreaterThanOrEqualToShortInstruction(branchOnGreaterThanOrEqualToShortInstruction); } else if (instruction is BranchOnGreaterThanOrEqualToInstruction branchOnGreaterThanOrEqualToInstruction) { VisitBranchOnGreaterThanOrEqualToInstruction(branchOnGreaterThanOrEqualToInstruction); } else if (instruction is BranchOnGreaterThanOrEqualToUnsignedShortInstruction branchOnGreaterThanOrEqualToUnsignedShortInstruction) { VisitBranchOnGreaterThanOrEqualToUnsignedShortInstruction(branchOnGreaterThanOrEqualToUnsignedShortInstruction); } else if (instruction is BranchOnGreaterThanOrEqualToUnsignedInstruction branchOnGreaterThanOrEqualToUnsignedInstruction) { VisitBranchOnGreaterThanOrEqualToUnsignedInstruction(branchOnGreaterThanOrEqualToUnsignedInstruction); } else if (instruction is BranchOnGreaterThanShortInstruction branchOnGreaterThanShortInstruction) { VisitBranchOnGreaterThanShortInstruction(branchOnGreaterThanShortInstruction); } else if (instruction is BranchOnGreaterThanInstruction branchOnGreaterThanInstruction) { VisitBranchOnGreaterThanInstruction(branchOnGreaterThanInstruction); } else if (instruction is BranchOnGreaterThanUnsignedShortInstruction branchOnGreaterThanUnsignedShortInstruction) { VisitBranchOnGreaterThanUnsignedShortInstruction(branchOnGreaterThanUnsignedShortInstruction); } else if (instruction is BranchOnGreaterThanUnsignedInstruction branchOnGreaterThanUnsignedInstruction) { VisitBranchOnGreaterThanUnsignedInstruction(branchOnGreaterThanUnsignedInstruction); } else if (instruction is BranchInstruction branchInstruction) { VisitBranchInstruction(branchInstruction); } else { throw new ArgumentException($"CIL instruction br cannot be recognized: '{instruction.ToString()}'."); } }
public override void Init(AstContext context, ParseTreeNode parseNode) { // ___("brtrue.s") var brtruesChildren = AstChildren.Empty() .Add("brtrue.s"); if (brtruesChildren.PopulateWith(parseNode)) { Instruction = new BranchOnTrueShortInstruction(); return; } // ___("brtrue.s") var brtrueChildren = AstChildren.Empty() .Add("brtrue"); if (brtrueChildren.PopulateWith(parseNode)) { Instruction = new BranchOnTrueInstruction(); return; } // ___("brfalse.s") var brfalsesChildren = AstChildren.Empty() .Add("brfalse.s"); if (brfalsesChildren.PopulateWith(parseNode)) { Instruction = new BranchOnFalseShortInstruction(); return; } // ___("brfalse") var brfalseChildren = AstChildren.Empty() .Add("brfalse"); if (brfalseChildren.PopulateWith(parseNode)) { Instruction = new BranchOnFalseInstruction(); return; } // ___("br.s") var brsChildren = AstChildren.Empty() .Add("br.s"); if (brsChildren.PopulateWith(parseNode)) { Instruction = new BranchShortInstruction(); return; } // ___("bne.un.s") var bneunsChildren = AstChildren.Empty() .Add("bne.un.s"); if (bneunsChildren.PopulateWith(parseNode)) { Instruction = new BranchOnNotEqualUnsignedShortInstruction(); return; } // ___("bne.un") var bneunChildren = AstChildren.Empty() .Add("bne.un"); if (bneunChildren.PopulateWith(parseNode)) { Instruction = new BranchOnNotEqualUnsignedInstruction(); return; } // ___("beq.s") var beqsChildren = AstChildren.Empty() .Add("beq.s"); if (beqsChildren.PopulateWith(parseNode)) { Instruction = new BranchOnEqualShortInstruction(); return; } // ___("beq") var beqChildren = AstChildren.Empty() .Add("beq"); if (beqChildren.PopulateWith(parseNode)) { Instruction = new BranchOnEqualInstruction(); return; } // ___("ble.s") var blesChildren = AstChildren.Empty() .Add("ble.s"); if (blesChildren.PopulateWith(parseNode)) { Instruction = new BranchOnLessThanOrEqualToShortInstruction(); return; } // ___("ble") var bleChildren = AstChildren.Empty() .Add("ble"); if (bleChildren.PopulateWith(parseNode)) { Instruction = new BranchOnLessThanOrEqualToInstruction(); return; } // ___("ble.un.s") var bleunsChildren = AstChildren.Empty() .Add("ble.un.s"); if (bleunsChildren.PopulateWith(parseNode)) { Instruction = new BranchOnLessThanOrEqualToUnsignedShortInstruction(); return; } // ___("blt.s") var bltsChildren = AstChildren.Empty() .Add("blt.s"); if (bltsChildren.PopulateWith(parseNode)) { Instruction = new BranchOnLessThanShortInstruction(); return; } // ___("blt") var bltChildren = AstChildren.Empty() .Add("blt"); if (bltChildren.PopulateWith(parseNode)) { Instruction = new BranchOnLessThanInstruction(); return; } // ___("blt.un.s") var bltunsChildren = AstChildren.Empty() .Add("blt.un.s"); if (bltunsChildren.PopulateWith(parseNode)) { Instruction = new BranchOnLessThanUnsignedShortInstruction(); return; } // ___("blt.un") var bltunChildren = AstChildren.Empty() .Add("blt.un"); if (bltunChildren.PopulateWith(parseNode)) { Instruction = new BranchOnLessThanUnsignedInstruction(); return; } // ___("bge.s") var bgesChildren = AstChildren.Empty() .Add("bge.s"); if (bgesChildren.PopulateWith(parseNode)) { Instruction = new BranchOnGreaterThanOrEqualToShortInstruction(); return; } // ___("bge") var bgeChildren = AstChildren.Empty() .Add("bge"); if (bgeChildren.PopulateWith(parseNode)) { Instruction = new BranchOnGreaterThanOrEqualToInstruction(); return; } // ___("bge.un.s") var bgeunsChildren = AstChildren.Empty() .Add("bge.un.s"); if (bgeunsChildren.PopulateWith(parseNode)) { Instruction = new BranchOnGreaterThanOrEqualToUnsignedShortInstruction(); return; } // ___("bge.un") var bgeunChildren = AstChildren.Empty() .Add("bge.un"); if (bgeunChildren.PopulateWith(parseNode)) { Instruction = new BranchOnGreaterThanOrEqualToUnsignedInstruction(); return; } // ___("bgt.s") var bgtsChildren = AstChildren.Empty() .Add("bgt.s"); if (bgtsChildren.PopulateWith(parseNode)) { Instruction = new BranchOnGreaterThanShortInstruction(); return; } // ___("bgt") var bgtChildren = AstChildren.Empty() .Add("bgt"); if (bgtChildren.PopulateWith(parseNode)) { Instruction = new BranchOnGreaterThanInstruction(); return; } // ___("bgt.un.s") var bgtunsChildren = AstChildren.Empty() .Add("bgt.un.s"); if (bgtunsChildren.PopulateWith(parseNode)) { Instruction = new BranchOnGreaterThanUnsignedShortInstruction(); return; } // ___("bgt.un") var bgtunChildren = AstChildren.Empty() .Add("bgt.un"); if (bgtunChildren.PopulateWith(parseNode)) { Instruction = new BranchOnGreaterThanUnsignedInstruction(); return; } // _("br") var brChildren = AstChildren.Empty() .Add("br"); if (brChildren.PopulateWith(parseNode)) { Instruction = new BranchInstruction(); return; } throw new NotImplementedException(); }