Esempio n. 1
0
 internal override bool MatchPattern(Node pattern, Dictionary <int, Node> matchings)
 {
     if (pattern is PatternNode)
     {
         PatternNode patternNode = pattern as PatternNode;
         if (patternNode.Type == PatternType.Any || patternNode.Type == PatternType.Constant)
         {
             if (!matchings.ContainsKey(patternNode.Key))
             {
                 matchings[patternNode.Key] = this;
                 return(true);
             }
             else
             {
                 return(matchings[patternNode.Key].Equals(this));
             }
         }
         else if (patternNode.Type == PatternType.Position)
         {
             matchings[patternNode.Key] = this;
             return(true);
         }
         return(false);
     }
     else if (pattern is NumberNode)
     {
         return(pattern.Equals(this));
     }
     else if (pattern is UniaryOperatorNode)
     {
         UniaryOperatorNode uniOp = pattern as UniaryOperatorNode;
         return(new UniaryOperatorNode(UniaryOperator.Negate, -Value).MatchPattern(pattern, matchings));
     }
     return(false);
 }
Esempio n. 2
0
 public override bool Equals(object obj)
 {
     if (obj is UniaryOperatorNode)
     {
         UniaryOperatorNode uniaryOperatorNode = (UniaryOperatorNode)obj;
         if (uniaryOperatorNode.Operator != Operator)
         {
             return(false);
         }
         if (!uniaryOperatorNode.Left.Equals(Left))
         {
             return(false);
         }
     }
     return(false);
 }