X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Feval.mli;h=e1d73f0e1a401fa34ea426636215c564dfd27eb2;hb=f36210fd16a8e4e4d6ecdd8825bf8b8307943472;hp=2e559810b6c525efa0e5d660753246bf20e82f05;hpb=4d0527cd7ced1d96720e3af56da29a19551944f7;p=goals.git diff --git a/src/eval.mli b/src/eval.mli index 2e55981..e1d73f0 100644 --- a/src/eval.mli +++ b/src/eval.mli @@ -17,6 +17,22 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *) -val evaluate : Ast.file -> (string, Ast.expr) Hashtbl.t -> Ast.expr list -> unit -(** This drives evaluation of the list of expressions (in parallel) - until they are complete or we reach an error. *) +(** Take any expression and simplify it down to a constant. + If the expression cannot be simplified then this raises + [Failure _]. *) +val to_constant : Ast.env -> Ast.expr -> Ast.constant + +(** Take a substitution list and try to turn it into a simple + string by evaluating every variable. If not possible this + raises [Failure _]. *) +val substitute : Ast.env -> Ast.loc -> Ast.substs -> string + +(** Similar to {!substitute} except this is used where we will + pass the result immediately to the shell to execute. Variables + are substituted with shell quoted strings. Raises [Failure _] + on error. *) +val to_shell_script : Ast.env -> Ast.loc -> Ast.substs -> string + +(** Evaluate a goal argument. This substitutes any variables found, + and recursively calls functions. *) +val evaluate_goal_arg : Ast.env -> Ast.expr -> Ast.expr