Ejemplo n.º 1
0
        public override Expression Visit(Expression node)
        {
            if (node != null)
            {
                _currentExpr = new SnExpr {
                    Expression = node, IsExecutable = true
                };
                _expressions[node] = _currentExpr;
                var parent = _parentChain.Count == 0 ? null : _parentChain.Peek();
                _currentExpr.Parent = parent;
                if (parent == null)
                {
                    _rootExpr = _currentExpr;
                }
                else
                {
                    parent.Children.Add(_currentExpr);
                }
                _parentChain.Push(_currentExpr);
            }

            var visited = base.Visit(node);

            if (node != null)
            {
                _parentChain.Pop();
            }

            return(visited);
        }