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); } }
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); } }
public static MySQL51Parser.program_return ParseSql(string sql, bool expectErrors, out StringBuilder sb) { // The grammar supports upper case only MemoryStream ms = new MemoryStream(ASCIIEncoding.ASCII.GetBytes(sql/*.ToUpper() */)); CaseInsensitiveInputStream input = new CaseInsensitiveInputStream(ms); //ANTLRInputStream input = new ANTLRInputStream(ms); MySQL51Lexer lexer = new MySQL51Lexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); MySQL51Parser parser = new MySQL51Parser(tokens); sb = new StringBuilder(); TextWriter tw = new StringWriter(sb); parser.TraceDestination = tw; MySQL51Parser.program_return r = parser.program(); if (!expectErrors) { if (0 != parser.NumberOfSyntaxErrors) Assert.AreEqual("", sb.ToString()); //Assert.AreEqual( 0, parser.NumberOfSyntaxErrors); } else { Assert.AreNotEqual(0, parser.NumberOfSyntaxErrors); } return r; }