(* This module defines and exports the type [t] of conditional
   expressions of C# directives.

   To avoid over-engineering, we moved the definition of the function
   [eval] below into the module [Preproc] itself.
*)

type t =
  Or  of t * t
| And of t * t
| Eq  of t * t
| Neq of t * t
| Not of t
| True
| False
| Ident of string

(*
let rec eval env = function
   Or (e1,e2) -> eval env e1 || eval env e2
| And (e1,e2) -> eval env e1 && eval env e2
|  Eq (e1,e2) -> eval env e1 = eval env e2
| Neq (e1,e2) -> eval env e1 != eval env e2
|       Not e -> not (eval env e)
|        True -> true
|       False -> false
|    Ident id -> Preproc.Env.mem id env
*)