-
Notifications
You must be signed in to change notification settings - Fork 0
/
CST.purs
61 lines (38 loc) · 1.25 KB
/
CST.purs
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
module Type.Regex.CST where
import Type.Char (Char')
--------------------------------------------------------------------------------
--- Types
--------------------------------------------------------------------------------
--- Regex
foreign import data Regex :: Type
-- | Empty Regex
foreign import data Nil :: Regex
-- | `.`
foreign import data Wildcard :: Regex
-- | `[a-z123]`
foreign import data RegexCharClass :: CharClass -> Boolean -> Regex
foreign import data Lit :: Char' -> Regex
-- | `\\a`
foreign import data Quote :: Char' -> Regex
-- | `$`
foreign import data EndOfStr :: Regex
-- | `^`
foreign import data StartOfStr :: Regex
-- | `?`
foreign import data Optional :: Regex -> Regex
-- | `+`
foreign import data OneOrMore :: Regex -> Regex
-- | `*`
foreign import data Many :: Regex -> Regex
-- | `(` .. `)`
foreign import data Group :: Regex -> Regex
-- | `ab`
foreign import data Cat :: Regex -> Regex -> Regex
-- | `|`
foreign import data Alt :: Regex -> Regex -> Regex
infixr 6 type Cat as ~
--- CharClass
foreign import data CharClass :: Type
foreign import data CharClassNil :: CharClass
foreign import data CharClassLit :: Char' -> CharClass -> CharClass
foreign import data CharClassRange :: Char' -> Char' -> CharClass -> CharClass