public IParseRootNode parse(IParseState parseState) throws Exception { String source = new String(parseState.getSource()); GrammarScanner scanner = new GrammarScanner(new StringReader(source)); GrammarParser parser = new GrammarParser(); IParseRootNode result = null; Object parseResult = parser.parse(scanner); if (parseResult instanceof GrammarTreeRoot) { GrammarTreeRoot grammarRoot = (GrammarTreeRoot) parseResult; result = new BeaverParseRootNode(grammarRoot); parseState.setParseResult(result); } return result; }