summaryrefslogtreecommitdiff
path: root/src/runtime/java/org/grammaticalframework
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/java/org/grammaticalframework')
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/Expr.java6
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/ExprApplication.java19
2 files changed, 25 insertions, 0 deletions
diff --git a/src/runtime/java/org/grammaticalframework/pgf/Expr.java b/src/runtime/java/org/grammaticalframework/pgf/Expr.java
index 2c6882203..cdc62d1d1 100644
--- a/src/runtime/java/org/grammaticalframework/pgf/Expr.java
+++ b/src/runtime/java/org/grammaticalframework/pgf/Expr.java
@@ -83,6 +83,12 @@ public class Expr implements Serializable {
return new Expr(pool, master, initApp(fun, args, pool.ref));
}
+ /** If the method is called on an expression which is
+ * a function application, then it is decomposed into
+ * a function name and a list of arguments. If this is not
+ * an application then the result is null. */
+ public native ExprApplication unApply();
+
/** Returns the expression as a string in the GF syntax */
public String toString() {
return showExpr(ref);
diff --git a/src/runtime/java/org/grammaticalframework/pgf/ExprApplication.java b/src/runtime/java/org/grammaticalframework/pgf/ExprApplication.java
new file mode 100644
index 000000000..d33269448
--- /dev/null
+++ b/src/runtime/java/org/grammaticalframework/pgf/ExprApplication.java
@@ -0,0 +1,19 @@
+package org.grammaticalframework.pgf;
+
+public class ExprApplication {
+ private String fun;
+ private Expr[] arguments;
+
+ public ExprApplication(String fun, Expr[] arguments) {
+ this.fun = fun;
+ this.arguments = arguments;
+ }
+
+ public String getFunction() {
+ return fun;
+ }
+
+ public Expr[] getArguments() {
+ return arguments;
+ }
+}