コード例 #1
0
        public virtual void Visit(CteInnerExpressionNode node)
        {
            var cteNode = Nodes.Pop();

            CteNodes[node.Name] = cteNode;
            Nodes.Push(new CteInnerExpressionNode(cteNode, node.Name));
        }
コード例 #2
0
 public void Visit(CteInnerExpressionNode node)
 {
     LoadScope("CTE Inner Expression");
     node.Value.Accept(this);
     node.Accept(_visitor);
     RestoreScope();
 }
コード例 #3
0
        public void Visit(CteInnerExpressionNode node)
        {
            _walker = _walker.NextChild();
            _visitor.SetScope(_walker.Scope);

            node.Value.Accept(this);
            node.Accept(_visitor);

            _walker = _walker.Parent();
            _visitor.SetScope(_walker.Scope);
        }
コード例 #4
0
        public virtual void Visit(CteExpressionNode node)
        {
            var sets = new CteInnerExpressionNode[node.InnerExpression.Length];

            for (var i = node.InnerExpression.Length - 1; i >= 0; --i)
            {
                sets[i] = (CteInnerExpressionNode)Nodes.Pop();
            }

            Nodes.Push(new CteExpressionNode(sets, Nodes.Pop()));
        }
コード例 #5
0
        public void Visit(CteInnerExpressionNode node)
        {
            var set = Nodes.Pop();

            var collector = new GetSelectFieldsVisitor();
            var traverser = new GetSelectFieldsTraverseVisitor(collector);

            set.Accept(traverser);

            var table = new VariableTable(collector.CollectedFieldNames);

            _currentScope.Parent.ScopeSymbolTable.AddSymbol(node.Name,
                                                            new TableSymbol(node.Name, new TransitionSchema(node.Name, table), table, false));

            Nodes.Push(new CteInnerExpressionNode(set, node.Name));
        }
コード例 #6
0
 public virtual void Visit(CteInnerExpressionNode node)
 {
     node.Value.Accept(this);
     node.Accept(Visitor);
 }
コード例 #7
0
 public void Visit(CteInnerExpressionNode node)
 {
     Nodes.Push(new CteInnerExpressionNode(Nodes.Pop(), node.Name));
 }
コード例 #8
0
 public void Visit(CteInnerExpressionNode node)
 {
 }