package tuffy.parse; import java.io.FileInputStream; import java.io.InputStream; import java.util.zip.GZIPInputStream; import org.antlr.runtime.ANTLRInputStream; import org.antlr.runtime.ANTLRStringStream; import org.antlr.runtime.CharStream; import org.antlr.runtime.CommonTokenStream; import tuffy.mln.MarkovLogicNetwork; import tuffy.util.Config; import tuffy.util.ExceptionMan; import tuffy.util.UIMan; public class InputParser { MarkovLogicNetwork mln; public InputParser(MarkovLogicNetwork amln){ mln = amln; } public void parseProgramFile(String fprog){ MLNParser parser = new MLNParser(getTokens(fprog)); parser.ml = this.mln; try { parser.definitions(); } catch (Exception e) { mln.closeFiles(); ExceptionMan.handle(e); } } public void parseEvidenceFile(String fevid){ MLNParser parser = new MLNParser(getTokens(fevid)); parser.ml = this.mln; try { parser.evidenceList(); } catch (Exception e) { mln.closeFiles(); ExceptionMan.handle(e); } } public void parseEvidenceString(String chunk, long lineOffset){ ANTLRStringStream input = new ANTLRStringStream(chunk); MLNLexer lexer = new MLNLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); MLNParser parser = new MLNParser(tokens); parser.lineOffset = lineOffset; parser.ml = this.mln; try { parser.evidenceList(); parser.reset(); tokens.reset(); lexer.reset(); input.reset(); parser.ml = null; parser = null; } catch (Exception e) { mln.closeFiles(); ExceptionMan.handle(e); } } public void parseQueryFile(String fquery){ MLNParser parser = new MLNParser(getTokens(fquery)); parser.ml = this.mln; try { parser.queryList(); } catch (Exception e) { mln.closeFiles(); ExceptionMan.handle(e); } } public void parseQueryCommaList(String queryAtoms){ CharStream input = new ANTLRStringStream(queryAtoms); MLNLexer lexer = new MLNLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); MLNParser parser = new MLNParser(tokens); parser.ml = this.mln; try { parser.queryCommaList(); } catch (Exception e) { mln.closeFiles(); ExceptionMan.handle(e); } } private CommonTokenStream getTokens(String fname){ try { InputStream is; FileInputStream fis = new FileInputStream(fname); if(fname.toLowerCase().endsWith(".gz")){ is = new GZIPInputStream(fis); }else{ is = fis; } ANTLRInputStream input = new ANTLRInputStream(is); MLNLexer lexer = new MLNLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); is.close(); return tokens; } catch (Exception e) { ExceptionMan.handle(e); } return null; } }