package comby-kernel

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file omega_parser.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
open Core_kernel

open Angstrom

open Ast

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

let alphanum =
  satisfy (function
      | 'a' .. 'z'
      | 'A' .. 'Z'
      | '0' .. '9' -> true
      | _ -> false)

let variable_parser =
  (string Syntax.variable_left_delimiter
   *> (many (alphanum <|> char '_') |>> String.of_char_list)
   <* string Syntax.variable_right_delimiter)

let escaped_char_s  =
  any_char

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

let value_parser =
  (string {|"|}
   *> (many_till char_token_s (string {|"|})))
  |>> String.concat

let operator_parser =
  choice
    [ string Syntax.equal
    ; string Syntax.not_equal
    ]

let atom_parser =
  choice
    [ (variable_parser >>= fun variable -> return (Variable variable))
    ; (value_parser >>= fun value -> return (String value))
    ]

let rewrite_template_parser =
  value_parser >>= fun value -> return (RewriteTemplate value)
OCaml

Innovation. Community. Security.