summaryrefslogtreecommitdiff
path: root/src/runtime/java/org
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2017-05-12 11:12:29 +0000
committerkrasimir <krasimir@chalmers.se>2017-05-12 11:12:29 +0000
commit2b911792ee5202db041defedebe21da1c2fd63a6 (patch)
tree4f8bfedbc1c0bef71cbf647bfad15432cd678b78 /src/runtime/java/org
parent7db25c5a744c9c3a5484c733663bc855be60e3b4 (diff)
sentence lookup API from Java
Diffstat (limited to 'src/runtime/java/org')
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/Concr.java4
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/SentenceExtractor.java39
2 files changed, 43 insertions, 0 deletions
diff --git a/src/runtime/java/org/grammaticalframework/pgf/Concr.java b/src/runtime/java/org/grammaticalframework/pgf/Concr.java
index af814b4a9..4f082eac8 100644
--- a/src/runtime/java/org/grammaticalframework/pgf/Concr.java
+++ b/src/runtime/java/org/grammaticalframework/pgf/Concr.java
@@ -39,6 +39,10 @@ public class Concr {
return new Completer(this, startCat, s, prefix);
}
+ public Iterable<ExprProb> lookupSentence(String startCat, String s) {
+ return new SentenceExtractor(this, startCat, s);
+ }
+
/** Computes the linearization of the abstract expression. */
public native String linearize(Expr expr);
diff --git a/src/runtime/java/org/grammaticalframework/pgf/SentenceExtractor.java b/src/runtime/java/org/grammaticalframework/pgf/SentenceExtractor.java
new file mode 100644
index 000000000..28aa12682
--- /dev/null
+++ b/src/runtime/java/org/grammaticalframework/pgf/SentenceExtractor.java
@@ -0,0 +1,39 @@
+package org.grammaticalframework.pgf;
+
+import java.util.*;
+
+class SentenceExtractor implements Iterable<ExprProb> {
+ private Concr concr;
+ private String s;
+ private String startCat;
+ private double heuristics;
+ private Map<String,LiteralCallback> callbacks;
+ private ExprIterator iter;
+
+ public SentenceExtractor(Concr concr, String startCat, String s) {
+ this.concr = concr;
+ this.startCat = startCat;
+ this.s = s;
+ this.iter = doExtract();
+ }
+
+ public Iterator<ExprProb> iterator() {
+ if (iter == null) {
+ // If someone has asked for a second iterator over
+ // the same parse results then we have to parse again.
+ return doExtract();
+ } else {
+ ExprIterator tmp_iter = iter;
+ iter = null;
+ return tmp_iter;
+ }
+ }
+
+ private ExprIterator doExtract()
+ {
+ Pool pool = new Pool();
+ return lookupSentence(concr, startCat, s, pool);
+ }
+
+ static native ExprIterator lookupSentence(Concr concr, String startCat, String s, Pool pool);
+}