2013-03-03 46 views
4

我正在玩Microsoft.SqlServer.TransactSql.ScriptDom库。 我发现浏览所有的令牌,我可以从TSqlFragment获得方式:在哪里可以找到由SQL Server ScriptDom解析器生成的T-SQL Dom?

TSql100Parser parser = new TSql100Parser(false); 

TSqlFragment fragment; 

using (StreamReader sr = new StreamReader(myStream)) 
{ 
    fragment = parser.Parse(sr, out parseErrors); 
} 

foreach (TSqlParserToken token in fragment.ScriptTokenStream) 
{ 
    ... 
} 

我还发现了TSqlFragmentVisitor类,所以我想在ScriptDom库生成从可以导航一个TSqlFragment一个T-SQL DOM 。但我找不到这样做...

你能帮助我吗? 谢谢!

回答

2

如果您的目标是分析解析器获得的结果语法树,您可以参考this链接。当您获得分析树的根节点fragment = parser.Parse(sr, out parseErrors)时,您可以使用访问者浏览该树,方法是扩展TSqlFragmentVisitor类,如链接所示。有关ScriptDom可用类的完整参考,您可以查看here