我在哪里可以找到SQL Server ScriptDom解析器生成的T-SQL Dom?

时间:2013-03-03 11:05:59

标签: sql-server tsql parsing dom sql-server-data-tools

我正在使用 Microsoft.SqlServer.TransactSql.ScriptDom 库。 我找到了导航所有可以从TSqlFragment获得的标记的方法:

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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

我被引导到Gert Drapers在GitHub中分享的一些项目:

https://github.com/gertd/sqlscriptdom

这里有一个关于如何通过访问者导航片段的示例。

问候。