diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2014-04-11 07:52:10 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2014-04-11 07:52:10 +0000 |
| commit | f72fe45c32deccacb81de613ff9e7272b2500fa5 (patch) | |
| tree | 1c0be6131a38d613a35f00211ebc58824c2e58cb | |
| parent | b82f9a5035b069d4d758f7f1df87080a22ddef75 (diff) | |
forgoten Completer.java
| -rw-r--r-- | src/runtime/java/org/grammaticalframework/pgf/Completer.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/runtime/java/org/grammaticalframework/pgf/Completer.java b/src/runtime/java/org/grammaticalframework/pgf/Completer.java new file mode 100644 index 000000000..21d3ea127 --- /dev/null +++ b/src/runtime/java/org/grammaticalframework/pgf/Completer.java @@ -0,0 +1,37 @@ +package org.grammaticalframework.pgf; + +import java.util.*; + +class Completer implements Iterable<TokenProb> { + private Concr concr; + private String s; + private String prefix; + private String startCat; + private TokenIterator iter; + + public Completer(Concr concr, String startCat, String s, String prefix) throws ParseError { + this.concr = concr; + this.startCat = startCat; + this.s = s; + this.prefix = prefix; + this.iter = complete(concr, startCat, s, prefix); + } + + public Iterator<TokenProb> iterator() { + if (iter == null) { + // If someone has asked for a second iterator over + // the same parse results then we have to parse again. + try { + return complete(concr, startCat, s, prefix); + } catch (ParseError e) { + return null; + } + } else { + TokenIterator tmp_iter = iter; + iter = null; + return tmp_iter; + } + } + + static native TokenIterator complete(Concr concr, String startCat, String s, String prefix) throws ParseError; +} |
