diff --git a/edify/expr.h b/edify/expr.h
new file mode 100644
index 0000000..ac5df18
--- /dev/null
+++ b/edify/expr.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _EXPRESSION_H
+#define _EXPRESSION_H
+
+#define MAX_STRING_LEN 1024
+
+typedef struct Expr Expr;
+
+typedef char* (*Function)(const char* name, void* cookie,
+                          int argc, Expr* argv[]);
+
+struct Expr {
+  Function fn;
+  char* name;
+  int argc;
+  Expr** argv;
+};
+
+char* Evaluate(void* cookie, Expr* expr);
+
+// Glue to make an Expr out of a literal.
+char* Literal(const char* name, void* cookie, int argc, Expr* argv[]);
+
+// Functions corresponding to various syntactic sugar operators.
+// ("concat" is also available as a builtin function, to concatenate
+// more than two strings.)
+char* ConcatFn(const char* name, void* cookie, int argc, Expr* argv[]);
+char* LogicalAndFn(const char* name, void* cookie, int argc, Expr* argv[]);
+char* LogicalOrFn(const char* name, void* cookie, int argc, Expr* argv[]);
+char* LogicalNotFn(const char* name, void* cookie, int argc, Expr* argv[]);
+char* SubstringFn(const char* name, void* cookie, int argc, Expr* argv[]);
+char* EqualityFn(const char* name, void* cookie, int argc, Expr* argv[]);
+char* InequalityFn(const char* name, void* cookie, int argc, Expr* argv[]);
+char* SequenceFn(const char* name, void* cookie, int argc, Expr* argv[]);
+
+// Convenience function for building expressions with a fixed number
+// of arguments.
+Expr* Build(Function fn, int count, ...);
+
+// Global builtins, registered by RegisterBuiltins().
+char* IfElseFn(const char* name, void* cookie, int argc, Expr* argv[]);
+char* AssertFn(const char* name, void* cookie, int argc, Expr* argv[]);
+char* AbortFn(const char* name, void* cookie, int argc, Expr* argv[]);
+
+typedef struct {
+  const char* name;
+  Function fn;
+} NamedFunction;
+
+// Register a new function.  The same Function may be registered under
+// multiple names, but a given name should only be used once.
+void RegisterFunction(const char* name, Function fn);
+
+// Register all the builtins.
+void RegisterBuiltins();
+
+// Call this after all calls to RegisterFunction() but before parsing
+// any scripts to finish building the function table.
+void FinishRegistration();
+
+// Find the Function for a given name; return NULL if no such function
+// exists.
+Function FindFunction(const char* name);
+
+#endif  // _EXPRESSION_H
