package org.aksw.sparqlify.config.lang;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.aksw.sparqlify.config.syntax.ConstructConfig;
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;
import org.slf4j.LoggerFactory;
public class ConstructConfigParser {
private static final Logger logger = LoggerFactory.getLogger("Parser");
public ConstructConfig parse(String str) throws RecognitionException {
ByteArrayInputStream bais = new ByteArrayInputStream(str.getBytes());
ConstructConfig result;
try {
result = this.parse(bais);
} 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 ConstructConfig parse(InputStream in)
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);
CommonTree ast = (CommonTree)parser.constructViewConfig().getTree();
//printAst(ast, 0);
SparqlifyConfigTree treeParser = new SparqlifyConfigTree(new CommonTreeNodeStream(ast));
ConstructConfig config = treeParser.constructConfig();
return config;
}
}