IList <Statement> ParseStatements(string text) { // The parser internally works in Unicode. byte[] buffer = Encoding.Unicode.GetBytes(text); using (Stream stream = new MemoryStream(buffer)) { ANTLRInputStream input = new ANTLRLowerCaseInputStream(stream, Encoding.Unicode); Lexer lexer = new TransactSqlLexer(input); CommentedTokenStream tokens = new CommentedTokenStream(lexer); SetupCommentHandling(tokens); TransactSqlParser parser = new TransactSqlParser(tokens); IList <Statement> statements; using (StringWriter errorWriter = new StringWriter()) { parser.TraceDestination = errorWriter; statements = parser.sql(); PrintParseErrors(errorWriter.ToString()); } return(statements); } }
void SetupCommentHandling(CommentedTokenStream tokens) { _commentedNodes.Clear(); tokens.PrecedingComments += HandlePrecedingComments; }