public void Accept(SqlAstVisitor visitor, IList<ITransformer> tranformers) { visitor.PreVisit(); foreach (IAstNode node in _compilationUnitList) { // 開始地点は親が存在しないもののみ if (node.ParentNode == null) { Debug.WriteLine("[IN]"); Accept(visitor, tranformers, node); } } visitor.PostVisit(); }
private void Accept(SqlAstVisitor visitor, IList<ITransformer> tranformers, IAstNode parent) { Debug.WriteLine(parent.Level+"\t"+parent.ParentNode + "\t" + parent +"\t" + parent.OriginalValue); foreach (ITransformer transformer in tranformers) { parent.Transform(transformer); } parent.Accept(visitor); IList<IAstNode> childs = parent.ChildNodes; if (childs == null) { return; } foreach(IAstNode child in childs) { Accept(visitor, tranformers, child); } }