- private static StatementContext parseYangSource(final InputStream stream) throws IOException,
- YangSyntaxErrorException {
- final YangStatementLexer lexer = new YangStatementLexer(new ANTLRInputStream(stream));
- final CommonTokenStream tokens = new CommonTokenStream(lexer);
- final YangStatementParser parser = new YangStatementParser(tokens);
- //disconnect from console error output
- parser.removeErrorListeners();
-
- final YangErrorListener errorListener = new YangErrorListener();
- parser.addErrorListener(errorListener);
-
- final StatementContext result = parser.statement();
- errorListener.validate();
-
- // Walk the resulting tree and replace each children with an immutable list, lowering memory requirements
- // and making sure the resulting tree will not get accidentally modified. An alternative would be to use
- // org.antlr.v4.runtime.Parser.TrimToSizeListener, but that does not make the tree immutable.
- ParseTreeWalker.DEFAULT.walk(MAKE_IMMUTABLE_LISTENER, result);
-
- return result;
- }
-