package comby

  1. Overview
  2. Docs
A tool for structural code search and replace that supports ~every language

Install

Dune Dependency

Authors

Maintainers

Sources

1.4.0.tar.gz
md5=58295a68289d68231cb3c9e0377e44ef
sha512=3f0154f26cc6016c12f57d0b8e43da32b9329572bf67fb5719008eaf3377b8d5a2ab6f775ffe8d16bc85f2c4db52f567ef64da52ccb77d6ba8e496a0dc9eddf7

doc/src/comby.parsers/omega_string_literals.ml.html

Source file omega_string_literals.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
open Core

open Angstrom

let (|>>) p f =
  p >>= fun x -> return (f x)

module Escapable = struct
  module type S = sig
    val delimiter : string
    val escape : char
  end

  module Make (M : S) = struct
    (* delimiters can be escaped and parsing continues within the string body *)
    let escaped_char_s  =
      any_char

    let char_token_s =
      ((char M.escape *> escaped_char_s >>= fun c -> return (Format.sprintf {|%c%c|} M.escape c))
       <|> (any_char |>> String.of_char)
      )

    let base_string_literal =
      ((string M.delimiter *> (many_till char_token_s (string M.delimiter))
        |>> String.concat)
       >>= fun result ->
       return (Format.sprintf {|%s%s%s|} M.delimiter result M.delimiter)
      )
  end
end

module Raw = struct
  module type S = sig
    val left_delimiter : string
    val right_delimiter : string
  end

  module Make (M : S) = struct
    let char_token_s =
      (any_char |>> String.of_char)

    let base_string_literal =
      ((
        string M.left_delimiter *> (many_till char_token_s (string M.right_delimiter))
        |>> String.concat)
       >>= fun result ->
       return (Format.sprintf {|%s%s%s|} M.left_delimiter result M.right_delimiter)
      )
  end
end
OCaml

Innovation. Community. Security.