package app; import graphexpr.ExprResolver; import graphexpr.GraphExprParser; import graphexpr.GraphExprLexer; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import com.hp.hpl.jena.rdf.model.Statement; import latex.TikzReduction; import xmllexicon.InputException; import xmllexicon.SemanticLexicon; import xmllexicon.TagLexicon; import xmllexicon.XmlLexicon; import pregroup.PhraseString; import pregroup.SimpleType; import pregroup.Parser; import rdf.GraphCompiler; import rdf.GraphString; import rdf.TypeException; import tagging.StanfordTagger; import util.InternalException; import util.TokenizerException; import util.UnknownTagException; public class App { public static void main(String[] args) { org.apache.jena.atlas.logging.Log.setLog4j(); SemanticLexicon sem = new SemanticLexicon(); try { sem.load("semantics.xml"); } catch (InternalException e1) { e1.printStackTrace(); } //lex.loadTagger(); String input = "John loves Mary who loves Peter."; List<String> sentence; try { sentence = new SimpleTokenizer(input).toList(); SimpleType target = new SimpleType("s", 0); StanfordTagger tagger = new StanfordTagger(); tagger.load("taggers/english-left3words-distsim.tagger"); try { GraphString phrase = new GraphString(sem, tagger.tagSentence(sentence), target); Parser p = new Parser(phrase, sem.getComparator()); System.out.println(phrase.toString()); if(p.run()) { System.out.println("Valid sentence."); PrintWriter out; try { ExprResolver resolver = new ExprResolver(phrase, p.getReduction()); GraphCompiler compiler = new GraphCompiler(resolver); // TODO /* try { /* Statement res = compiler.compileStmt(phrase.getPattern(resolver.getEntryPoint())); compiler.assume(res); System.out.println("## OUTPUT ##"); System.out.println(compiler.dumpTriples()); } catch (TypeException e) { System.out.println(e.what); }*/ out = new PrintWriter("output.tex"); out.println(TikzReduction.draw(phrase, sentence, p.getReduction())); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } else System.out.println("Invalid sentence."); } catch(UnknownTagException e) { System.out.println("Invalid input sentence:\n"+e.what); } catch(TypeException e) { System.out.println("Type exception:\n"+e.what); } } catch (TokenizerException e1) { System.out.println("The following token failed: \""+e1.what+"\""); e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }