FileDescriptorLoaderImpl.java 文件源码

java
阅读 29 收藏 0 点赞 0 评论 0

项目:protostuff-compiler 作者:
private ProtoContext parse(String filename, CharStream stream) {
    ProtoLexer lexer = new ProtoLexer(stream);
    lexer.removeErrorListeners();
    lexer.addErrorListener(errorListener);
    CommonTokenStream tokenStream = new CommonTokenStream(lexer);
    ProtoParser parser = new ProtoParser(tokenStream);
    parser.removeErrorListeners();
    parser.addErrorListener(errorListener);

    ProtoParser.ProtoContext tree = parser.proto();
    int numberOfSyntaxErrors = parser.getNumberOfSyntaxErrors();
    if (numberOfSyntaxErrors > 0) {
        String format = "Could not parse %s: %d syntax errors found";
        throw new ParserException(format, filename, numberOfSyntaxErrors);
    }
    ProtoContext context = new ProtoContext(filename);
    ProtoParserListener composite = CompositeParseTreeListener.create(ProtoParserListener.class,
            new ProtoParseListener(tokenStream, context),
            new MessageParseListener(tokenStream, context),
            new EnumParseListener(tokenStream, context),
            new OptionParseListener(tokenStream, context),
            new ServiceParseListener(tokenStream, context)
    );
    ParseTreeWalker.DEFAULT.walk(composite, tree);
    return context;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号