diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2014-04-11 07:50:22 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2014-04-11 07:50:22 +0000 |
| commit | b82f9a5035b069d4d758f7f1df87080a22ddef75 (patch) | |
| tree | 276da2705db9a84e84acc2001d98707c8541cca0 /src/runtime/java/org | |
| parent | 65b4ba245973efc94398d5e3681646e4b3235f9b (diff) | |
expose Java API for word completion
Diffstat (limited to 'src/runtime/java/org')
6 files changed, 71 insertions, 4 deletions
diff --git a/src/runtime/java/org/grammaticalframework/pgf/Concr.java b/src/runtime/java/org/grammaticalframework/pgf/Concr.java index 9bc73ea5a..2612a8827 100644 --- a/src/runtime/java/org/grammaticalframework/pgf/Concr.java +++ b/src/runtime/java/org/grammaticalframework/pgf/Concr.java @@ -20,6 +20,10 @@ public class Concr { } } + public Iterable<TokenProb> complete(String startCat, String s, String prefix) throws ParseError { + return new Completer(this, startCat, s, prefix); + } + public native String linearize(Expr expr); public native Map<String, String> tabularLinearize(Expr expr); diff --git a/src/runtime/java/org/grammaticalframework/pgf/ExprIterator.java b/src/runtime/java/org/grammaticalframework/pgf/ExprIterator.java index 6babda66d..ffd8a45cb 100644 --- a/src/runtime/java/org/grammaticalframework/pgf/ExprIterator.java +++ b/src/runtime/java/org/grammaticalframework/pgf/ExprIterator.java @@ -18,7 +18,7 @@ class ExprIterator implements Iterator<ExprProb> { this.fetched = false; } - private native ExprProb fetchExprProb(long ref, Pool pool, PGF gr); + private native static ExprProb fetchExprProb(long ref, Pool pool, PGF gr); private void fetch() { if (!fetched) { diff --git a/src/runtime/java/org/grammaticalframework/pgf/FullFormIterator.java b/src/runtime/java/org/grammaticalframework/pgf/FullFormIterator.java index 6a4c5efd7..556a9539d 100644 --- a/src/runtime/java/org/grammaticalframework/pgf/FullFormIterator.java +++ b/src/runtime/java/org/grammaticalframework/pgf/FullFormIterator.java @@ -18,7 +18,7 @@ class FullFormIterator implements Iterator<FullFormEntry> { this.fetched = false; } - private native FullFormEntry fetchFullFormEntry(long ref, Pool pool, Concr concr); + private native static FullFormEntry fetchFullFormEntry(long ref, Pool pool, Concr concr); private void fetch() { if (!fetched) { diff --git a/src/runtime/java/org/grammaticalframework/pgf/Generator.java b/src/runtime/java/org/grammaticalframework/pgf/Generator.java index c9ffde10b..5f28568fe 100644 --- a/src/runtime/java/org/grammaticalframework/pgf/Generator.java +++ b/src/runtime/java/org/grammaticalframework/pgf/Generator.java @@ -16,7 +16,7 @@ class Generator implements Iterable<ExprProb> { 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. + // the same results then we have to generate again. return generateAll(gr, startCat); } else { ExprIterator tmp_iter = iter; @@ -25,5 +25,5 @@ class Generator implements Iterable<ExprProb> { } } - static native ExprIterator generateAll(PGF gr, String startCat); + private native static ExprIterator generateAll(PGF gr, String startCat); } diff --git a/src/runtime/java/org/grammaticalframework/pgf/TokenIterator.java b/src/runtime/java/org/grammaticalframework/pgf/TokenIterator.java new file mode 100644 index 000000000..4ce8f4d27 --- /dev/null +++ b/src/runtime/java/org/grammaticalframework/pgf/TokenIterator.java @@ -0,0 +1,44 @@ +package org.grammaticalframework.pgf; + +import java.util.*; + +class TokenIterator implements Iterator<TokenProb> { + private Pool pool; + private long ref; + private TokenProb tp; + private boolean fetched; + + public TokenIterator(long pool, long ref) { + this.pool = new Pool(pool); + this.ref = ref; + this.tp = null; + this.fetched = false; + } + + private native static TokenProb fetchTokenProb(long ref, Pool pool); + + private void fetch() { + if (!fetched) { + tp = fetchTokenProb(ref, pool); + fetched = true; + } + } + + public boolean hasNext() { + fetch(); + return (tp != null); + } + + public TokenProb next() { + fetch(); + fetched = false; + + if (tp == null) + throw new NoSuchElementException(); + return tp; + } + + public void remove() { + throw new UnsupportedOperationException(); + } +} diff --git a/src/runtime/java/org/grammaticalframework/pgf/TokenProb.java b/src/runtime/java/org/grammaticalframework/pgf/TokenProb.java new file mode 100644 index 000000000..b064e747b --- /dev/null +++ b/src/runtime/java/org/grammaticalframework/pgf/TokenProb.java @@ -0,0 +1,19 @@ +package org.grammaticalframework.pgf; + +public class TokenProb { + private String tok; + private double prob; + + public TokenProb(String tok, double prob) { + this.tok = tok; + this.prob = prob; + } + + public String getToken() { + return tok; + } + + public double getProb() { + return prob; + } +} |
