`type expression =`

1. `| And of expression * expression`
2. `| Or of expression * expression`
3. `| Not of expression`
4. `| Binary of string * string * string`
5. `| Unary of string * string`
6. `| Single of string`

`exception Parse_error`
`val parse : ?bracket:bool -> string list -> expression option`

`parse ~bracket wl` parses the list of words `wl` as a test expression (or `None` if `wl` is empty). If `bracket` is `true` then the last word of `wl` must be a right bracket.