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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
open Core_kernel
open Languages
module Make (Make : Types.Language.S -> Types.Metasyntax.S -> Types.External.S -> Types.Matcher.S) : Types.Engine.S = struct
module Make = Make
let create
?(metasyntax = Metasyntax.default_metasyntax)
?(external_handler = External.default_external)
Types.Language.Syntax.
{ user_defined_delimiters
; escapable_string_literals
; raw_string_literals
;
} =
let module Info = struct
let name = "User_defined_language"
let extensions = []
end
in
let module Syntax = struct
let user_defined_delimiters = user_defined_delimiters
let escapable_string_literals = escapable_string_literals
let raw_string_literals = raw_string_literals
let = comments
end
in
let module User_language = struct
module Info = Info
module Syntax = Syntax
end
in
let (module Metasyntax : Metasyntax.S) = Metasyntax.(create metasyntax) in
let module External = struct let handler = external_handler end in
(module Make (User_language) (Metasyntax) (External) : Types.Matcher.S)
module Text = Make (Text) (Metasyntax.Default) (External.Default)
module Paren = Make (Paren) (Metasyntax.Default) (External.Default)
module Dyck = Make (Dyck) (Metasyntax.Default) (External.Default)
module JSON = Make (JSON) (Metasyntax.Default) (External.Default)
module JSONC = Make (JSONC) (Metasyntax.Default) (External.Default)
module GraphQL = Make (GraphQL) (Metasyntax.Default) (External.Default)
module Dhall = Make (Dhall) (Metasyntax.Default) (External.Default)
module Latex = Make (Latex) (Metasyntax.Default) (External.Default)
module Assembly = Make (Assembly) (Metasyntax.Default) (External.Default)
module Clojure = Make (Clojure) (Metasyntax.Default) (External.Default)
module Lisp = Make (Lisp) (Metasyntax.Default) (External.Default)
module Generic = Make (Generic) (Metasyntax.Default) (External.Default)
module Bash = Make (Bash) (Metasyntax.Default) (External.Default)
module Ruby = Make (Ruby) (Metasyntax.Default) (External.Default)
module Elixir = Make (Elixir) (Metasyntax.Default) (External.Default)
module Python = Make (Python) (Metasyntax.Default) (External.Default)
module Html = Make (Html) (Metasyntax.Default) (External.Default)
module Xml = Make (Xml) (Metasyntax.Default) (External.Default)
module SQL = Make (SQL) (Metasyntax.Default) (External.Default)
module Erlang = Make (Erlang) (Metasyntax.Default) (External.Default)
module C = Make (C) (Metasyntax.Default) (External.Default)
module Csharp = Make (Csharp) (Metasyntax.Default) (External.Default)
module Java = Make (Java) (Metasyntax.Default) (External.Default)
module CSS = Make (CSS) (Metasyntax.Default) (External.Default)
module Kotlin = Make (Kotlin) (Metasyntax.Default) (External.Default)
module Scala = Make (Scala) (Metasyntax.Default) (External.Default)
module Nim = Make (Nim) (Metasyntax.Default) (External.Default)
module Matlab = Make (Matlab) (Metasyntax.Default) (External.Default)
module Dart = Make (Dart) (Metasyntax.Default) (External.Default)
module Php = Make (Php) (Metasyntax.Default) (External.Default)
module Go = Make (Go) (Metasyntax.Default) (External.Default)
module Javascript = Make (Javascript) (Metasyntax.Default) (External.Default)
module Jsx = Make (Jsx) (Metasyntax.Default) (External.Default)
module Typescript = Make (Typescript) (Metasyntax.Default) (External.Default)
module Tsx = Make (Tsx) (Metasyntax.Default) (External.Default)
module Swift = Make (Swift) (Metasyntax.Default) (External.Default)
module Rust = Make (Rust) (Metasyntax.Default) (External.Default)
module R = Make (R) (Metasyntax.Default) (External.Default)
module OCaml = Make (OCaml) (Metasyntax.Default) (External.Default)
module Reason = Make (Reason) (Metasyntax.Default) (External.Default)
module Fsharp = Make (Fsharp) (Metasyntax.Default) (External.Default)
module Pascal = Make (Pascal) (Metasyntax.Default) (External.Default)
module Julia = Make (Julia) (Metasyntax.Default) (External.Default)
module Fortran = Make (Fortran) (Metasyntax.Default) (External.Default)
module Haskell = Make (Haskell) (Metasyntax.Default) (External.Default)
module HCL = Make (HCL) (Metasyntax.Default) (External.Default)
module Elm = Make (Elm) (Metasyntax.Default) (External.Default)
module Zig = Make (Zig) (Metasyntax.Default) (External.Default)
module Coq = Make (Coq) (Metasyntax.Default) (External.Default)
module Move = Make (Move) (Metasyntax.Default) (External.Default)
module Solidity = Make (Solidity) (Metasyntax.Default) (External.Default)
let all : (module Types.Matcher.S) list =
[ (module Assembly)
; (module Bash)
; (module C)
; (module Csharp)
; (module CSS)
; (module Dart)
; (module Dyck)
; (module Clojure)
; (module Coq)
; (module Elm)
; (module Erlang)
; (module Elixir)
; (module Fortran)
; (module Fsharp)
; (module Go)
; (module Html)
; (module Haskell)
; (module HCL)
; (module Java)
; (module Javascript)
; (module Jsx)
; (module JSON)
; (module JSONC)
; (module GraphQL)
; (module Dhall)
; (module Julia)
; (module Kotlin)
; (module Latex)
; (module Lisp)
; (module Move)
; (module Nim)
; (module Matlab)
; (module OCaml)
; (module Paren)
; (module Pascal)
; (module Php)
; (module Python)
; (module Reason)
; (module R)
; (module Ruby)
; (module Rust)
; (module Scala)
; (module Solidity)
; (module SQL)
; (module Swift)
; (module Text)
; (module Typescript)
; (module Tsx)
; (module Xml)
; (module Zig)
; (module Generic)
]
let select_with_extension
?(metasyntax = Metasyntax.default_metasyntax)
?(external_handler = External.default_external)
extension
: (module Types.Matcher.S) option =
let open Option in
Languages.select_with_extension extension >>| fun (module Language : Types.Language.S) ->
let (module Metasyntax) = Metasyntax.(create metasyntax) in
let module External = struct let handler = external_handler end in
(module (Make (Language) (Metasyntax) (External)) : Types.Matcher.S)
end