diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2013-09-06 07:21:38 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2013-09-06 07:21:38 +0000 |
| commit | 5a4454aa8f910bc701da5cd4057eed77196764ad (patch) | |
| tree | c043135e06f030c181c7a173090e6caf6a06994e /src/runtime/java/org/grammaticalframework | |
| parent | 14f8b96b563dda9f7d61f5dc1cde14436ef6ea69 (diff) | |
added exhaustive generation in the Java binding
Diffstat (limited to 'src/runtime/java/org/grammaticalframework')
| -rw-r--r-- | src/runtime/java/org/grammaticalframework/pgf/Generator.java | 29 | ||||
| -rw-r--r-- | src/runtime/java/org/grammaticalframework/pgf/PGF.java | 4 |
2 files changed, 32 insertions, 1 deletions
diff --git a/src/runtime/java/org/grammaticalframework/pgf/Generator.java b/src/runtime/java/org/grammaticalframework/pgf/Generator.java new file mode 100644 index 000000000..c9ffde10b --- /dev/null +++ b/src/runtime/java/org/grammaticalframework/pgf/Generator.java @@ -0,0 +1,29 @@ +package org.grammaticalframework.pgf; + +import java.util.Iterator; + +class Generator implements Iterable<ExprProb> { + private PGF gr; + private String startCat; + private ExprIterator iter; + + public Generator(PGF gr, String startCat) { + this.gr = gr; + this.startCat = startCat; + this.iter = generateAll(gr, startCat); + } + + 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 generateAll(gr, startCat); + } else { + ExprIterator tmp_iter = iter; + iter = null; + return tmp_iter; + } + } + + static native ExprIterator generateAll(PGF gr, String startCat); +} diff --git a/src/runtime/java/org/grammaticalframework/pgf/PGF.java b/src/runtime/java/org/grammaticalframework/pgf/PGF.java index 02e5d0c50..c08462b80 100644 --- a/src/runtime/java/org/grammaticalframework/pgf/PGF.java +++ b/src/runtime/java/org/grammaticalframework/pgf/PGF.java @@ -22,7 +22,9 @@ public class PGF { public native Type getFunctionType(String fun); - public native Iterator<ExprProb> generate(Type type); + public Iterable<ExprProb> generateAll(String startCat) { + return new Generator(this, startCat); + } public native Expr compute(Expr expr); |
