summaryrefslogtreecommitdiff
path: root/src/runtime/java/org
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2014-04-11 07:50:22 +0000
committerkr.angelov <kr.angelov@gmail.com>2014-04-11 07:50:22 +0000
commitb82f9a5035b069d4d758f7f1df87080a22ddef75 (patch)
tree276da2705db9a84e84acc2001d98707c8541cca0 /src/runtime/java/org
parent65b4ba245973efc94398d5e3681646e4b3235f9b (diff)
expose Java API for word completion
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/ExprIterator.java2
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/FullFormIterator.java2
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/Generator.java4
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/TokenIterator.java44
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/TokenProb.java19
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;
+ }
+}