2013-03-03 3 views
4

Я играю с Microsoft.SqlServer.TransactSql.ScriptDom библиотеки. Я нашел способ навигации все жетоны я могу получить от TSqlFragment:Где я могу найти T-SQL Dom, созданный парсером SQL Server ScriptDom?

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 генерирует T-SQL DOM из TSqlFragment, что можно перемещаться , Но я не могу найти способ это сделать ...

Вы можете мне помочь? Спасибо!

ответ

2

я был направлен к некоторым проектам, разделяемых Герт Drapers в GitHub:

https://github.com/gertd/sqlscriptdom

Здесь есть пример того, как для навигации Повсеместно посетители фрагмента.

С уважением.

2

Если ваша цель анализирует полученное синтаксическое дерево, полученное парсером, вы можете обратиться к ссылке this. Когда вы получите корневой узел вашего дерева разбора с помощью fragment = parser.Parse(sr, out parseErrors), вы можете использовать посетителя для навигации по дереву, расширив класс TSqlFragmentVisitor, как показано на ссылке. Для полной ссылки на классы, доступные с помощью ScriptDom, вы можете посмотреть here.