Exemplo n.º 1
0
        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.");
        }
Exemplo n.º 2
0
        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.");
        }