Esempio n. 1
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.");
        }
Esempio n. 2
0
        public override InstructionBranch BuildNode(ParseTreeNode node)
        {
            var target = 0;

            var integerNode = node.GetChildIntegerNode();

            target = int.Parse(integerNode.Token.ValueString);

            var instructionBranchNode = node.GetChildInstructionBranchNode();

            var beqToken = instructionBranchNode.GetChildBeqTokenNode();

            if (beqToken != null)
            {
                return(new BranchIfEqualInstruction
                {
                    Target = target
                });
            }

            var beqsToken = instructionBranchNode.GetChildBeqsTokenNode();

            if (beqsToken != null)
            {
                return(new BranchIfEqualShortInstruction
                {
                    Target = target
                });
            }

            var bgeToken = instructionBranchNode.GetChildBgeTokenNode();

            if (bgeToken != null)
            {
                return(new BranchIfGreaterOrEqualInstruction
                {
                    Target = target
                });
            }

            var bgesToken = instructionBranchNode.GetChildBgesTokenNode();

            if (bgesToken != null)
            {
                return(new BranchIfGreaterOrEqualShortInstruction
                {
                    Target = target
                });
            }

            var bgeunToken = instructionBranchNode.GetChildBgeunTokenNode();

            if (bgeunToken != null)
            {
                return(new BranchIfGreaterOrEqualUnsignedInstruction
                {
                    Target = target
                });
            }

            var bgeunsToken = instructionBranchNode.GetChildBgeunsTokenNode();

            if (bgeunsToken != null)
            {
                return(new BranchIfGreaterOrEqualUnsignedShortInstruction
                {
                    Target = target
                });
            }

            var bgtToken = instructionBranchNode.GetChildBgtTokenNode();

            if (bgtToken != null)
            {
                return(new BranchIfGreaterInstruction
                {
                    Target = target
                });
            }

            var bgtsToken = instructionBranchNode.GetChildBgtsTokenNode();

            if (bgtsToken != null)
            {
                return(new BranchIfGreaterShortInstruction
                {
                    Target = target
                });
            }

            var bgtunToken = instructionBranchNode.GetChildBgtunTokenNode();

            if (bgtunToken != null)
            {
                return(new BranchIfGreaterUnsignedInstruction
                {
                    Target = target
                });
            }

            var bgtunsToken = instructionBranchNode.GetChildBgtunsTokenNode();

            if (bgtunsToken != null)
            {
                return(new BranchIfGreaterUnsignedShortInstruction
                {
                    Target = target
                });
            }

            var bleToken = instructionBranchNode.GetChildBleTokenNode();

            if (bleToken != null)
            {
                return(new BranchIfLessOrEqualInstruction
                {
                    Target = target
                });
            }

            var blesToken = instructionBranchNode.GetChildBlesTokenNode();

            if (blesToken != null)
            {
                return(new BranchIfLessOrEqualShortInstruction
                {
                    Target = target
                });
            }

            var bleunToken = instructionBranchNode.GetChildBleunTokenNode();

            if (bleunToken != null)
            {
                return(new BranchIfLessOrEqualUnsignedInstruction
                {
                    Target = target
                });
            }

            var bleunsToken = instructionBranchNode.GetChildBleunsTokenNode();

            if (bleunsToken != null)
            {
                return(new BranchIfLessOrEqualUnsignedShortInstruction
                {
                    Target = target
                });
            }

            var bltToken = instructionBranchNode.GetChildBltTokenNode();

            if (bltToken != null)
            {
                return(new BranchIfLessInstruction
                {
                    Target = target
                });
            }

            var bltsToken = instructionBranchNode.GetChildBltsTokenNode();

            if (bltsToken != null)
            {
                return(new BranchIfLessShortInstruction
                {
                    Target = target
                });
            }

            var bltunToken = instructionBranchNode.GetChildBltunTokenNode();

            if (bltunToken != null)
            {
                return(new BranchIfLessUnsignedInstruction
                {
                    Target = target
                });
            }

            var bltunsToken = instructionBranchNode.GetChildBltunsTokenNode();

            if (bltunsToken != null)
            {
                return(new BranchIfLessUnsignedShortInstruction
                {
                    Target = target
                });
            }

            var bneunToken = instructionBranchNode.GetChildBneunTokenNode();

            if (bneunToken != null)
            {
                return(new BranchIfNotEqualUnsignedInstruction
                {
                    Target = target
                });
            }

            var bneunsToken = instructionBranchNode.GetChildBneunsTokenNode();

            if (bneunsToken != null)
            {
                return(new BranchIfNotEqualUnsignedShortInstruction
                {
                    Target = target
                });
            }

            var brToken = instructionBranchNode.GetChildBrTokenNode();

            if (brToken != null)
            {
                return(new BranchInstruction
                {
                    Target = target
                });
            }

            var brsToken = instructionBranchNode.GetChildBrsTokenNode();

            if (brsToken != null)
            {
                return(new BranchShortInstruction
                {
                    Target = target
                });
            }

            var brfalseToken = instructionBranchNode.GetChildBrfalseTokenNode();

            if (brfalseToken != null)
            {
                return(new BranchIfFalseInstruction
                {
                    Target = target
                });
            }

            var brfalsesToken = instructionBranchNode.GetChildBrfalsesTokenNode();

            if (brfalsesToken != null)
            {
                return(new BranchIfFalseShortInstruction
                {
                    Target = target
                });
            }

            var brtrueToken = instructionBranchNode.GetChildBrtrueTokenNode();

            if (brtrueToken != null)
            {
                return(new BranchIfTrueInstruction
                {
                    Target = target
                });
            }

            var brtruesToken = instructionBranchNode.GetChildBrtruesTokenNode();

            if (brtruesToken != null)
            {
                return(new BranchIfTrueShortInstruction
                {
                    Target = target
                });
            }

            var leaveToken = instructionBranchNode.GetChildLeaveTokenNode();

            if (leaveToken != null)
            {
                return(new LeaveInstruction
                {
                    Target = target
                });
            }

            var leavesToken = instructionBranchNode.GetChildLeavesTokenNode();

            if (leavesToken != null)
            {
                return(new LeaveShortInstruction
                {
                    Target = target
                });
            }

            throw new ArgumentException("Cannot recognize instruction branch.");
        }