private static MiniSqlParserParser CreateParser(string inputStr , DBMSType dbmsType , bool forSqlAccessor) { var input = new AntlrInputStream(inputStr); var lexer = new MiniSqlParserLexer(input); var tokens = new CommonTokenStream(lexer); var parser = new MiniSqlParserParser(tokens); var astListener = new MakeASTListener(tokens, dbmsType, forSqlAccessor); var errorListener = new CumulativeErrorListener(); var lexerErrorListener = new CumulativeLexerErrorListener(); MiniSqlParserAST.SetDbmsType(lexer, parser, dbmsType); // 文法で曖昧な箇所は動的にしか発見できないらしい //parser.AddErrorListener(new DiagnosticErrorListener()); //parser.Interpreter.PredictionMode = PredictionMode.LlExactAmbigDetection; lexer.RemoveErrorListeners(); lexer.AddErrorListener(lexerErrorListener); parser.AddParseListener(astListener); parser.RemoveErrorListeners(); parser.AddErrorListener(errorListener); return(parser); }