usando el TSqlParser

Estoy intentando analizar SQL usando el TSql100Parser proporcionado por microsoft. En este momento estoy teniendo problemas para usarlo de la manera que parece que se pretende usar. Además, la falta de documentación no ayuda. (ejemplo:http://msdn.microsoft.com/en-us/library/microsoft.data.schema.scriptdom.sql.tsql100parser.aspx )

Cuando ejecuto una simple instrucción SELECT a través del analizador, devuelve una colección de TSqlStatements que contiene una instrucción SELECT. El problema es que la instrucción TSqlSelect no contiene atributos como una cláusula WHERE, a pesar de que la cláusula se implementa como una clase.http://msdn.microsoft.com/en-us/library/microsoft.data.schema.scriptdom.sql.whereclause.aspx El analizador reconoce la cláusula WHERE como tal, mirando la secuencia del token. Entonces, mi pregunta es, ¿estoy usando el analizador correctamente? En este momento, la secuencia de token parece ser la característica más útil del analizador ...

Mi proyecto de prueba:

public static void Main(string[] args)
{
    var parser = new TSql100Parser(false);

            IList<ParseError> Errors;
            IScriptFragment result = parser.Parse(
                new StringReader("Select col from T1 where 1 = 1 group by 1;" +
                    "select col2 from T2;" +
                    "select col1 from tbl1 where id in (select id from tbl);"),
                    out Errors);

            var Script = result as TSqlScript;

            foreach (var ts in Script.Batches)
            {
                Console.WriteLine("new batch");

                foreach (var st in ts.Statements)
                {
                    IterateStatement(st);
                }
            }
}

static void IterateStatement(TSqlStatement statement)
{
            Console.WriteLine("New Statement");

            if (statement is SelectStatement)
            {
                PrintStatement(sstmnt);
            }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta