1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace Antlr.Runtime.Debug
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    using System;
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    using System.Collections.Generic;
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    using System.Linq;
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    using System.Text;
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    using IOException = System.IO.IOException;
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    using Antlr.Runtime.Tree;
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public class ParserDebugger
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    {
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        IDebugEventListener dbg;
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public ParserDebugger( Parser parser )
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            : this( parser, DebugEventSocketProxy.DEFAULT_DEBUGGER_PORT )
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        {
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public ParserDebugger( Parser parser, int port )
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        {
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            DebugEventSocketProxy proxy = new DebugEventSocketProxy( parser, port, null );
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            DebugListener = proxy;
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            parser.TokenStream = new DebugTokenStream( parser.TokenStream, proxy );
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            try
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                proxy.handshake();
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            catch ( IOException e )
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            {
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                reportError( ioe );
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            }
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            ITreeAdaptor adap = new CommonTreeAdaptor();
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            TreeAdaptor = adap;
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            proxy.TreeAdaptor = adap;
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public ParserDebugger( Parser parser, IDebugEventListener dbg )
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        {
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            ITreeAdaptor adap = new CommonTreeAdaptor();
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            TreeAdaptor = adap;
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        protected virtual bool EvalPredicate( bool result, string predicate )
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        {
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            dbg.SemanticPredicate( result, predicate );
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            return result;
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
50