private void TraverseSetOperator(SetOperatorNode node)
 {
     node.Left.Accept(this);
     node.Right.Accept(this);
     node.Accept(_visitor);
     RestoreScope();
 }
Beispiel #2
0
 private void TraverseSetOperator(SetOperatorNode node)
 {
     _walker = _walker.NextChild();
     node.Left.Accept(this);
     node.Right.Accept(this);
     node.Accept(_visitor);
     _walker = _walker.Parent();
 }
        private void TraverseSetOperator(SetOperatorNode node)
        {
            _walker = _walker.NextChild();
            _visitor.SetScope(_walker.Scope);

            if (node.Right is SetOperatorNode)
            {
                var nodes = new Stack <SetOperatorNode>();
                nodes.Push(node);

                node.Left.Accept(this);
                _visitor.IncrementMethodIdentifier();

                while (nodes.Count > 0)
                {
                    var current = nodes.Pop();

                    if (current.Right is SetOperatorNode operatorNode)
                    {
                        nodes.Push(operatorNode);

                        _walker = _walker.NextChild();
                        _visitor.SetScope(_walker.Scope);

                        operatorNode.Left.Accept(this);
                        _visitor.IncrementMethodIdentifier();

                        current.Accept(_visitor);
                    }
                    else
                    {
                        current.Right.Accept(this);
                        _visitor.IncrementMethodIdentifier();

                        current.Accept(_visitor);
                    }
                }
            }
            else
            {
                node.Left.Accept(this);

                _visitor.IncrementMethodIdentifier();

                node.Right.Accept(this);

                node.Accept(_visitor);

                _walker = _walker.Parent();
                _visitor.SetScope(_walker.Scope);
            }
        }
        private void TraverseSetOperator(SetOperatorNode node)
        {
            if (node.Right is SetOperatorNode)
            {
                var nodes = new Stack <SetOperatorNode>();
                nodes.Push(node);

                node.Left.Accept(this);

                while (nodes.Count > 0)
                {
                    var current = nodes.Pop();

                    if (current.Right is SetOperatorNode operatorNode)
                    {
                        nodes.Push(operatorNode);

                        operatorNode.Left.Accept(this);

                        current.Accept(_visitor);
                    }
                    else
                    {
                        current.Right.Accept(this);

                        current.Accept(_visitor);
                    }
                }
            }
            else
            {
                node.Left.Accept(this);

                node.Right.Accept(this);

                node.Accept(_visitor);
            }
        }
Beispiel #5
0
 private void TraverseSetOperator(SetOperatorNode node)
 {
     node.Left.Accept(this);
     node.Right.Accept(this);
     node.Accept(Visitor);
 }