예제 #1
0
        protected override IAstTreeNode Xform(ExpressionNode node)
        {
            foreach (var child in node.Children)
            {
                var childExpression = child as ExpressionNode;

                if (childExpression != null &&
                    node.OpCode == childExpression.OpCode &&
                    node.GetArity() == Arity.BinaryPlus)
                {
                    var clone = (ExpressionNode)node.Clone();
                    clone.Children.RemoveAll(cchild => cchild.Id == child.Id);
                    clone.Children.AddRange(child.Children);
                    return clone;
                }
            }

            return null;
        }
예제 #2
0
 public NegationNode(ExpressionNode arg0)
     : base(arg0)
 {
 }
예제 #3
0
파일: TreeDumper.cs 프로젝트: xeno-by/rapt
 public override void Visit(ExpressionNode node)
 {
     if (!(node is TermNode) && !(node is NegationNode))
         writer.WriteLine(node.OpCode);
 }
예제 #4
0
 public virtual void Visit(ExpressionNode node){}
예제 #5
0
 public override void Visit(ExpressionNode node)
 {
     node.ValidateArity();
 }
예제 #6
0
파일: OrNode.cs 프로젝트: xeno-by/rapt
 public OrNode(ExpressionNode arg0, ExpressionNode arg1, params ExpressionNode[] args) 
     : base(arg0.Cons(arg1.Cons(args)))
 {
 }
예제 #7
0
 public L1Expression(ExpressionNode expressionNode)
     :base(expressionNode)
 {
 }
예제 #8
0
 protected virtual IAstTreeNode Xform(ExpressionNode node) { return null; }
예제 #9
0
 public sealed override void Visit(ExpressionNode node) { VisitAndXform(node, Xform(node)); }