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;
}
FileDescriptorLoaderImpl.java 文件源码
java
阅读 29
收藏 0
点赞 0
评论 0
项目:protostuff-compiler
作者:
评论列表
文章目录