# Module type Cf_lex.Expr_Op_T

    module type Expr_Op_T = sig .. end

The module type containing the subexpression composition operators. This module type is included in the signatures of the `Op` and `X.Op` modules.

    val ($|) : Cf_lex.x -> Cf_lex.x -> Cf_lex.x

Alternating composition. Use `a $| b` to compose an expression that matches either expression `a` or expression `b`.

    val ($&) : Cf_lex.x -> Cf_lex.x -> Cf_lex.x

Serial composition. Use `a $& b` to compose an expression that matches expression `a` followed by expression `b`.

    val ( !* ) : Cf_lex.x -> Cf_lex.x

Star composition. Use `!*a` to compose an expression that matches zero or any number of instances of `a`.

    val (!+) : Cf_lex.x -> Cf_lex.x

Plus composition. Use `!+a` to compose an expression that matches one or more instances of `a`.

    val (!?) : Cf_lex.x -> Cf_lex.x

Optional composition. Use `!?a` to compose an expression that matches zero or one instance of `a`.

    val (!:) : char -> Cf_lex.x

Character literal. Use `!:c` to compose an expression that matches the character `c`.

    val (!^) : (char -> bool) -> Cf_lex.x

Character set. Use `!^f` to compose an expression that matches any character for which the satisfier function `f` returns `true`.

    val (!~) : char Cf_seq.t -> Cf_lex.x

Regular expression sequence. Use `!~z` to parse the sequence `z` according to the grammar defined in `Cf_regex` module and compose an expression that matches input accordingly. Raises `Cf_regex.Error` if the sequence is not a regular expression.

    val (!$) : string -> Cf_lex.x

Regular expression string. Use `!~s` to parse the string `s` according to the grammar defined in `Cf_regex` module and compose an expression that matches input accordingly. Raises `Cf_regex.Error` if the string is not a regular expression.