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); } }
/** <summary> * Provide a new debug event listener for this parser. Notify the * input stream too that it should send events to this listener. * </summary> */ public virtual void SetDebugListener(IDebugEventListener value) { DebugTokenStream debugTokenStream = input as DebugTokenStream; if (debugTokenStream != null) { debugTokenStream.DebugListener = value; } dbg = value; }
public InterpParser(ITokenStream input, int port, RecognizerSharedState state) : base(input, state) { InitializeCyclicDFAs(dbg); DebugEventSocketProxy proxy = new DebugEventSocketProxy(this, port, adaptor); DebugListener = proxy; TokenStream = new DebugTokenStream(input,proxy); try { proxy.Handshake(); } catch (IOException ioe) { ReportError(ioe); } ITreeAdaptor adap = new CommonTreeAdaptor(); TreeAdaptor = adap; proxy.TreeAdaptor = adap; }
public DebugGrammarParser( ITokenStream input, int port, RecognizerSharedState state ) : base( input, state ) { DebugEventSocketProxy proxy = new DebugEventSocketProxy( this, port, adaptor ); DebugListener = proxy; // TODO: I had to manually correct this line from ITokenStream TokenStream = new DebugTokenStream( input, proxy ); try { proxy.Handshake(); } catch ( IOException ioe ) { ReportError( ioe ); } ITreeAdaptor adap = new CommonTreeAdaptor(); TreeAdaptor = adap; proxy.TreeAdaptor = adap; }
public TemplateParser(ITokenStream input, int port, RecognizerSharedState state) : base(input, state) { DebugEventSocketProxy dbg = new DebugEventSocketProxy(this, port, adaptor); DebugListener = dbg; TokenStream = new DebugTokenStream(input,dbg); try { dbg.Handshake(); } catch (IOException ioe) { ReportError(ioe); } InitializeCyclicDFAs(dbg); ITreeAdaptor adap = new CommonTreeAdaptor(); TreeAdaptor = adap; dbg.TreeAdaptor = adap; }