4

我正在使用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。但是我找不到这样做的方法...

你能帮助我吗?谢谢!

4

2 回答 2

3

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

于 2014-04-03T15:03:30.210 回答
2

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

https://github.com/gertd/sqlscriptdom

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

问候。

于 2013-04-21T14:54:57.193 回答