private PythonParser setupParser(boolean single) { PythonLexer lexer = new PyLexer(charStream, single); lexer.setErrorHandler(errorHandler); CommonTokenStream tokens = new CommonTokenStream(lexer); PythonTokenSource indentedSource = new PythonTokenSource(tokens, filename, single); tokens = new CommonTokenStream(indentedSource); PythonParser parser = new PythonParser(tokens, encoding); parser.setErrorHandler(errorHandler); parser.setTreeAdaptor(new PythonTreeAdaptor()); return parser; }
public mod parseExpression() { mod tree = null; PythonParser parser = setupParser(false); try { PythonParser.eval_input_return r = parser.eval_input(); tree = (mod) r.tree; } catch (RecognitionException e) { // XXX: this can't happen. Need to strip the throws from antlr // generated code. } return tree; }
public mod parseInteractive() { mod tree = null; PythonParser parser = setupParser(true); try { PythonParser.single_input_return r = parser.single_input(); tree = (mod) r.tree; } catch (RecognitionException e) { // I am only throwing ParseExceptions, but "throws RecognitionException" still gets // into the generated code. System.err.println("FIXME: pretty sure this can't happen -- but needs to be checked"); } return tree; }