public override InstructionInt BuildNode(ParseTreeNode node) { var intArgument = 0; var integerNode = node.GetChildIntegerNode(); intArgument = int.Parse(integerNode.Token.ValueString); var instructionIntNode = node.GetChildInstructionIntNode(); var ldci4Token = instructionIntNode.GetChildLdci4TokenNode(); if (ldci4Token != null) { return(new LoadConstantIntInstruction { Argument = intArgument }); } var ldci4sToken = instructionIntNode.GetChildLdci4sTokenNode(); if (ldci4sToken != null) { return(new LoadConstantIntShortInstruction { Argument = intArgument }); } throw new ArgumentException("Cannot recognize instruction int."); }
public override CILInstruction BuildNode(ParseTreeNode node) { var instructionNoneNode = node.GetChildInstructionNoneNode(); if (instructionNoneNode != null) { return(_instructionNoneBuilder.BuildNode(node)); } var instructionMethodNode = node.GetChildInstructionMethodNode(); if (instructionMethodNode != null) { return(_instructionMethodBuilder.BuildNode(node)); } var instructionStringNode = node.GetChildInstructionStringNode(); if (instructionStringNode != null) { return(_instructionStringBuilder.BuildNode(node)); } var instructionIntNode = node.GetChildInstructionIntNode(); if (instructionIntNode != null) { return(_instructionIntBuilder.BuildNode(node)); } var instructionBranchNode = node.GetChildInstructionBranchNode(); if (instructionBranchNode != null) { return(_instructionBranchBuilder.BuildNode(node)); } throw new ArgumentException("Cannot recognize instruction."); }