summaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2014-12-08 15:18:01 +0000
committerkr.angelov <kr.angelov@gmail.com>2014-12-08 15:18:01 +0000
commit3fd53b907e55d5e9a84ff15b548ea73fc822549b (patch)
treefd1a633642765aba3869c3077f79cd67f856822b /src/runtime
parent8ec5910ae21e99e721302f9b6a589c443d31d03b (diff)
added a callback for unknown words
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/UnknownLiteralCallback.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/runtime/java/org/grammaticalframework/pgf/UnknownLiteralCallback.java b/src/runtime/java/org/grammaticalframework/pgf/UnknownLiteralCallback.java
new file mode 100644
index 000000000..1cd5806b6
--- /dev/null
+++ b/src/runtime/java/org/grammaticalframework/pgf/UnknownLiteralCallback.java
@@ -0,0 +1,35 @@
+package org.grammaticalframework.pgf;
+
+import java.util.Collections;
+import java.util.Iterator;
+
+public class UnknownLiteralCallback implements LiteralCallback {
+ private Concr concr;
+
+ public UnknownLiteralCallback(PGF pgf, Concr concr) {
+ this.concr = concr;
+ }
+
+ public CallbackResult match(int lin_idx, String sentence, int offset) {
+ if (!Character.isUpperCase(sentence.charAt(offset))) {
+ int start_offset = offset;
+ while (offset < sentence.length() &&
+ !Character.isWhitespace(sentence.charAt(offset))) {
+ offset++;
+ }
+ int end_offset = offset;
+ String word = sentence.substring(start_offset,end_offset);
+
+ if (concr.lookupMorpho(word).size() == 0) {
+ Expr expr = new Expr("MkSymb", new Expr(word));
+ return new CallbackResult(new ExprProb(expr, 0), end_offset);
+ }
+ }
+
+ return null;
+ }
+
+ public Iterator<TokenProb> predict(int lin_idx, String prefix) {
+ return Collections.<TokenProb>emptyList().iterator();
+ }
+}