git.annexia.org
/
whenjobs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement inequality operator (use: != or <>)
[whenjobs.git]
/
lib
/
whenexpr.ml
diff --git
a/lib/whenexpr.ml
b/lib/whenexpr.ml
index
c2ffa33
..
1301e5e
100644
(file)
--- a/
lib/whenexpr.ml
+++ b/
lib/whenexpr.ml
@@
-41,6
+41,7
@@
type whenexpr =
| Expr_eq of whenexpr * whenexpr
| Expr_ge of whenexpr * whenexpr
| Expr_gt of whenexpr * whenexpr
| Expr_eq of whenexpr * whenexpr
| Expr_ge of whenexpr * whenexpr
| Expr_gt of whenexpr * whenexpr
+ | Expr_ne of whenexpr * whenexpr
| Expr_not of whenexpr
| Expr_add of whenexpr * whenexpr
| Expr_sub of whenexpr * whenexpr
| Expr_not of whenexpr
| Expr_add of whenexpr * whenexpr
| Expr_sub of whenexpr * whenexpr
@@
-212,6
+213,9
@@
and expr_of_iexpr _loc = function
| IExpr_app (">", exprs) ->
two_params _loc ">" exprs (fun e1 e2 -> Expr_gt (e1, e2))
| IExpr_app (">", exprs) ->
two_params _loc ">" exprs (fun e1 e2 -> Expr_gt (e1, e2))
+ | IExpr_app (("!="|"<>"), exprs) ->
+ two_params _loc "<>" exprs (fun e1 e2 -> Expr_ne (e1, e2))
+
| IExpr_app ("!", exprs) ->
one_param _loc "!" exprs (fun e1 -> Expr_not e1)
| IExpr_app ("!", exprs) ->
one_param _loc "!" exprs (fun e1 -> Expr_not e1)
@@
-294,6
+298,8
@@
let rec string_of_whenexpr = function
sprintf "%s >= %s" (string_of_whenexpr e1) (string_of_whenexpr e2)
| Expr_gt (e1, e2) ->
sprintf "%s > %s" (string_of_whenexpr e1) (string_of_whenexpr e2)
sprintf "%s >= %s" (string_of_whenexpr e1) (string_of_whenexpr e2)
| Expr_gt (e1, e2) ->
sprintf "%s > %s" (string_of_whenexpr e1) (string_of_whenexpr e2)
+ | Expr_ne (e1, e2) ->
+ sprintf "%s <> %s" (string_of_whenexpr e1) (string_of_whenexpr e2)
| Expr_not e -> sprintf "! %s" (string_of_whenexpr e)
| Expr_add (e1, e2) ->
sprintf "%s + %s" (string_of_whenexpr e1) (string_of_whenexpr e2)
| Expr_not e -> sprintf "! %s" (string_of_whenexpr e)
| Expr_add (e1, e2) ->
sprintf "%s + %s" (string_of_whenexpr e1) (string_of_whenexpr e2)
@@
-336,6
+342,7
@@
let rec dependencies_of_whenexpr = function
| Expr_eq (e1, e2)
| Expr_ge (e1, e2)
| Expr_gt (e1, e2)
| Expr_eq (e1, e2)
| Expr_ge (e1, e2)
| Expr_gt (e1, e2)
+ | Expr_ne (e1, e2)
| Expr_add (e1, e2)
| Expr_sub (e1, e2)
| Expr_mul (e1, e2)
| Expr_add (e1, e2)
| Expr_sub (e1, e2)
| Expr_mul (e1, e2)
@@
-419,6
+426,14
@@
let rec eval_whenexpr variables prev_variables onload = function
else
T_bool false
else
T_bool false
+ | Expr_ne (e1, e2) ->
+ let e1 = eval_whenexpr variables prev_variables onload e1
+ and e2 = eval_whenexpr variables prev_variables onload e2 in
+ if compare_values e1 e2 <> 0 then
+ T_bool true
+ else
+ T_bool false
+
| Expr_not e ->
if not (eval_whenexpr_as_bool variables prev_variables onload e) then
T_bool true
| Expr_not e ->
if not (eval_whenexpr_as_bool variables prev_variables onload e) then
T_bool true