From b82f9a5035b069d4d758f7f1df87080a22ddef75 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Fri, 11 Apr 2014 07:50:22 +0000 Subject: expose Java API for word completion --- .../java/org/grammaticalframework/pgf/Concr.java | 4 ++ .../org/grammaticalframework/pgf/ExprIterator.java | 2 +- .../grammaticalframework/pgf/FullFormIterator.java | 2 +- .../org/grammaticalframework/pgf/Generator.java | 4 +- .../grammaticalframework/pgf/TokenIterator.java | 44 ++++++++++++++++++++++ .../org/grammaticalframework/pgf/TokenProb.java | 19 ++++++++++ 6 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 src/runtime/java/org/grammaticalframework/pgf/TokenIterator.java create mode 100644 src/runtime/java/org/grammaticalframework/pgf/TokenProb.java (limited to 'src/runtime/java/org/grammaticalframework') 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 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 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 { 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 { 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 { public Iterator 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 { } } - 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 { + 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; + } +} -- cgit v1.2.3