static void Main(string[] args) { int port = 49101; string sql = "select * from t1 left join t2"; MemoryStream ms = new MemoryStream(ASCIIEncoding.ASCII.GetBytes(sql.ToUpper())); ANTLRInputStream input = new ANTLRInputStream(ms); MySQL51Lexer lexer = new MySQL51Lexer(input); // I need a Tree adaptor to build a DebugEventSocketProxy, but I need a // DebugEventSocketProxy to build a Tree Adaptor. // Solution: Create the DebugEventSocketProxy //ITreeAdaptor adaptor = new DebugTreeAdaptor(/*dbg*/ null, new CommonTreeAdaptor()); // To create a DebugTokenStream I need a DebugEventSocketProxy and viceversa // Solution: Create DebugEventSocketProxy in the DebugTokenStream contructor // How do I get a ITokenStream implementation? // Another Caveat: The instance of DebugEventProxySocket must be the same for the lexer than for the parser. //DebugEventSocketProxy proxy = new DebugEventSocketProxy(this, port, adaptor); DebugTokenStream tokens = new DebugTokenStream(new BufferedTokenStream(lexer), port, null); //CommonTokenStream tokens = new CommonTokenStream(lexer); MySQL51Parser parser = new MySQL51Parser(tokens, port, null); StringBuilder sb = new StringBuilder(); TextWriter tw = new StringWriter(sb); try { parser.TraceDestination = tw; MySQL51Parser.statement_list_return r = parser.statement_list(); } catch (RecognitionException re) { Console.WriteLine(re.StackTrace); } }
void ReParse() { ITextSnapshot newSnapshot = buffer.CurrentSnapshot; List <Region> newRegions = new List <Region>(); string sql = newSnapshot.GetText(); StringBuilder sb = new StringBuilder(); MySQL51Parser.statement_list_return r = LanguageServiceUtil.ParseSql(sql, false, out sb); if (sb.Length != 0) { return; } CommonTree ct = (CommonTree)r.Tree; foreach (ITree c in ct.Children) { newRegions.Add(new Region() { Level = 1, StartLine = c.Line, StartOffset = c.TokenStartIndex, EndLine = -1, EndOffset = c.TokenStopIndex, PartialParent = null }); } ITextSnapshot snap = this.snapshot; if (this.TagsChanged != null) { this.TagsChanged(this, new SnapshotSpanEventArgs( new SnapshotSpan(this.snapshot, Span.FromBounds(0, snap.Length)))); } }