# Module Cf_lex.X.Op

    module Op: sig .. end

Open this module to bring the operator functions for woven parsers into the current scope.

    include Cf_lex.Expr_Op_T

Include the expression operators common among lexical analyzers.

    val ($=) : Cf_lex.x -> 'a -> (char #Cf_parser.cursor, 'a) Cf_lex.X.r

Literal token rule. Use `e $= obj` to compose a rule that outputs the literal object `obj` when the expression `e` is recognized.

    val ($>) : Cf_lex.x -> (string -> 'a) -> (char #Cf_parser.cursor, 'a) Cf_lex.X.r

String token rule. Use `e $> f` to compose a rule that applies the string recognized by the expression `e` to the tokenizer function `f` to produce its result.

    val ($@) : Cf_lex.x ->
           (int -> (char #Cf_parser.cursor as 'b, 'a) Cf_lex.X.t) -> ('b, 'a) Cf_lex.X.r

Advanced token rule. Use `e $@ f` to compose a rule that applies the length of the character sequence recognized by the expression `e` to the advanced tokenizer function `f` to obtain a parser that produces the output of the rule and makes any other manipulations necessary to continue parsing the input stream. If the parser returned by `f` does not recognize the input, then no output is produced and no other rules are matched.

    val (!@) : (char #Cf_parser.cursor as 'b, 'a) Cf_lex.X.r list -> ('b, 'a) Cf_lex.X.r

Rule aggregation. Use this operator to combine a list of rules into a single rule.

    val ?~ : Cf_lex.x -> (char #Cf_parser.cursor, string) Cf_lex.X.t

String parser. Use `?~x` to create a simple parser that recognizes any string that matches the expression `x`. Note: Care should be taken when composing parsers with this operator to keep the lazy DFA from being recreated in every pass.

    val ?$ : string -> (char #Cf_parser.cursor, string) Cf_lex.X.t

String parser. Use `?$s` to create a simple parser that recognizes any string that matches the regular expression specified in the string `s` according to the grammar in the `Cf_regex` module. Raises `Cf_regex.Error` if the string is not a regular expression. Note: Care should be taken when composing parsers with this operator to keep from parsing the argument string in every pass.