public override void Visit(NegationNode node) { if (node.Target is TermNode) { writer.Write("~"); } else { writer.WriteLine(node.OpCode); } }
protected override IAstTreeNode Xform(NegationNode node) { if (node.Target is AndNode || node.Target is OrNode) { var equiv = node.Target is AndNode ? (IAstTreeNode)new OrNode() : (IAstTreeNode)new AndNode(); node.Target.Children.ForEach(child => equiv.Children.Add(!(ExpressionNode)child)); return equiv; } if (node.Target is NegationNode) { var equiv = ((NegationNode)node.Target).Target.Clone(); return (IAstTreeNode)equiv; } return null; }
public virtual void Visit(NegationNode node){}
protected virtual IAstTreeNode Xform(NegationNode node) { return null; }
public sealed override void Visit(NegationNode node) { VisitAndXform(node, Xform(node)); }