diff options
Diffstat (limited to 'src/runtime/java/org')
| -rw-r--r-- | src/runtime/java/org/grammaticalframework/pgf/Concr.java | 4 | ||||
| -rw-r--r-- | src/runtime/java/org/grammaticalframework/pgf/SentenceExtractor.java | 39 |
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); +} |
