package org.aksw.sparqlify.config.lang; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import org.aksw.sparqlify.config.syntax.Config; import org.antlr.runtime.ANTLRInputStream; import org.antlr.runtime.CharStream; import org.antlr.runtime.CommonTokenStream; import org.antlr.runtime.RecognitionException; import org.antlr.runtime.tree.CommonTree; import org.antlr.runtime.tree.CommonTreeNodeStream; import org.slf4j.Logger; public class ConfigParser { //private static final Logger fallbackLogger = LoggerFactory.getLogger(ConfigParser.class); public Config parse(String str, Logger logger) throws RecognitionException { ByteArrayInputStream bais = new ByteArrayInputStream(str.getBytes()); Config result; try { result = parse(bais, logger); } catch (IOException e) { // Should not happen - we are reading from a string throw new RuntimeException(e); } finally { try { bais.close(); } catch (IOException e) { // Should still not happen throw new RuntimeException(e); } } return result; } public Config parse(InputStream in, Logger logger) throws IOException, RecognitionException { CharStream cs = new ANTLRInputStream(in); SparqlifyConfigLexer lexer = new SparqlifyConfigLexer(cs); CommonTokenStream tokens = new CommonTokenStream(); tokens.setTokenSource(lexer); SparqlifyConfigParser parser = new SparqlifyConfigParser(tokens); parser.setLogger(logger); CommonTree ast = (CommonTree)parser.sparqlifyConfig().getTree(); //printAst(ast, 0); SparqlifyConfigTree treeParser = new SparqlifyConfigTree(new CommonTreeNodeStream(ast)); Config config = treeParser.sparqlifyConfig(); return config; } }