コード例 #1
0
        public void Apply(TacNode node)
        {
            var assignmentNode = (node as TacAssignmentNode);

            assignmentNode.Operation     = null;
            assignmentNode.FirstOperand  = "false";
            assignmentNode.SecondOperand = null;
        }
コード例 #2
0
        public bool IsThisRule(TacNode node)
        {
            if (node is TacAssignmentNode assignmentNode)
            {
                return(assignmentNode != null &&
                       (assignmentNode.FirstOperand == "false" ||
                        assignmentNode.SecondOperand == "false") &&
                       assignmentNode.Operation == "&&");
            }

            return(false);
        }
コード例 #3
0
        private void ChangeByVariable(TacNode node, TacAssignmentNode replacingNode)
        {
            switch (node)
            {
            case TacAssignmentNode assNode:
                if (assNode.FirstOperand.Equals(replacingNode.LeftPartIdentifier))
                {
                    assNode.FirstOperand = replacingNode.FirstOperand;
                }

                if (assNode.SecondOperand != null && assNode.SecondOperand.Equals(replacingNode.LeftPartIdentifier))
                {
                    assNode.SecondOperand = replacingNode.FirstOperand;
                }
                break;

            case TacIfGotoNode ifGotoNode:
                //ifGotoNode.Condition = replacingNode.FirstOperand;
                break;
            }
        }
コード例 #4
0
 protected bool Equals(TacNode other)
 {
     return(string.Equals(Label, other.Label));
 }
コード例 #5
0
 public void AddToSecondSet(TacNode line)
 {
     def.Add(line as TacNodeVarDecorator);
 }
コード例 #6
0
 public void AddToFirstSet(TacNode line)
 {
     use.Add(line as TacNodeVarDecorator);
 }
コード例 #7
0
 public HashSet <TacNode> GetLineKill(TacNode tacNode)
 {
     return(lineGenKill[basicBlock].GetFirstSet());
 }
コード例 #8
0
 public HashSet <TacNode> GetLineGen(TacNode tacNode)
 {
     return(lineGenKill[basicBlock].GetSecondSet());
 }
コード例 #9
0
 public void AddToFirstSet(TacNode line)
 {
     e_gen.Add(line);
 }
コード例 #10
0
 public void AddToSecondSet(TacNode line)
 {
     e_kill.Add(line);
 }