Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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))));
            }
        }