From c9c599977f46316c098a4c51c6fc78daad4d2db2 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Tue, 27 Aug 2013 22:39:26 +0000 Subject: [PATCH] linearization in the Java binding --- src/runtime/java/Test.java | 4 +++- src/runtime/java/jpgf.c | 22 +++++++++++++++++++ .../org/grammaticalframework/pgf/Concr.java | 2 ++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/runtime/java/Test.java b/src/runtime/java/Test.java index d565e294f..c4d7b710c 100644 --- a/src/runtime/java/Test.java +++ b/src/runtime/java/Test.java @@ -20,8 +20,10 @@ public class Test { System.out.println(entry.getKey()+" "+entry.getValue()+" "+entry.getValue().getName()); } - for (ExprProb ep : gr.getLanguages().get("ParseEng").parse("Phr", "test")) { + Concr eng = gr.getLanguages().get("ParseEng"); + for (ExprProb ep : eng.parse("Phr", "where are you")) { System.out.println("["+ep.getProb()+"] "+ep.getExpr()); + System.out.println(eng.linearize(ep.getExpr())); } } } diff --git a/src/runtime/java/jpgf.c b/src/runtime/java/jpgf.c index 41761a5a0..58c7eb743 100644 --- a/src/runtime/java/jpgf.c +++ b/src/runtime/java/jpgf.c @@ -244,6 +244,28 @@ Java_org_grammaticalframework_pgf_ExprIterator_fetchExprProb return jexpprob; } +JNIEXPORT jstring JNICALL +Java_org_grammaticalframework_pgf_Concr_linearize(JNIEnv* env, jobject self, jobject jexpr) +{ + GuPool* tmp_pool = gu_local_pool(); + GuExn* err = gu_new_exn(NULL, gu_kind(type), tmp_pool); + GuStringBuf* sbuf = gu_string_buf(tmp_pool); + GuWriter* wtr = gu_string_buf_writer(sbuf); + + pgf_linearize(get_ref(env, self), gu_variant_from_ptr((void*) get_ref(env, jexpr)), wtr, err); + if (!gu_ok(err)) { + // + return NULL; + } + + GuString str = gu_string_buf_freeze(sbuf, tmp_pool); + jstring jstr = gu2j_string(env, str); + + gu_pool_free(tmp_pool); + + return jstr; +} + JNIEXPORT void JNICALL Java_org_grammaticalframework_pgf_Pool_free(JNIEnv* env, jobject self, jlong ref) { diff --git a/src/runtime/java/org/grammaticalframework/pgf/Concr.java b/src/runtime/java/org/grammaticalframework/pgf/Concr.java index f7ec88b60..e486de906 100644 --- a/src/runtime/java/org/grammaticalframework/pgf/Concr.java +++ b/src/runtime/java/org/grammaticalframework/pgf/Concr.java @@ -9,6 +9,8 @@ public class Concr { public Iterable parse(String startCat, String s) { return new Parser(this, startCat, s); } + + public native String linearize(Expr expr); ////////////////////////////////////////////////////////////////// // private stuff