{-# LANGUAGE CPP #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE Trustworthy #-}
#if __GLASGOW_HASKELL__ < 709
{-# OPTIONS_GHC -fcontext-stack=50 #-}
#endif
module RERE.Examples.JSON where
import Prelude hiding (exponent)
import Data.Vec.Lazy (Vec (..))
import Data.Void (Void)
import qualified Data.Type.Nat as N
import qualified Data.Vec.Lazy as V
import RERE
import qualified RERE.CharSet as CS
#if !MIN_VERSION_base(4,11,0)
import Data.Semigroup (Semigroup (..))
#endif
type Size = N.Mult2 (N.Plus N.Nat5 N.Nat6)
jsonRE' :: RE Void
jsonRE' :: RE Void
jsonRE' = forall a. Ord a => RE a -> RE a
compact (forall (n :: Nat) a.
(SNatI n, Ord a) =>
Vec ('S n) Name -> CFG ('S n) a -> RE a
cfgToRE Vec Size Name
jsonNames forall a. Ord a => CFG Size a
jsonCFG)
jsonNames :: Vec Size Name
jsonNames :: Vec Size Name
jsonNames = forall (n :: Nat) a. Vec n a -> Vec n a
V.reverse forall a b. (a -> b) -> a -> b
$
Name
"json" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"value" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"object" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"members" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"member" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"array" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"elements" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"element" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"string" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"characters" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"character" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"escape" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"hex" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"number" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"integer" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"digits" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"digit" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"onenine" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"fraction" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"exponent" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"sign" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: Name
"ws" forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: forall a. Vec 'Z a
VNil
jsonCFG :: forall a. Ord a => CFG Size a
jsonCFG :: forall a. Ord a => CFG Size a
jsonCFG = forall (n :: Nat) a. Vec n a -> Vec n a
V.reverse forall a b. (a -> b) -> a -> b
$
CFGBase Size a
json forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
value forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
object forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
members forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
member forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
array forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
elements forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
element forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
string forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
characters forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
character forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
escape forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
hex forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
number forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
integer forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
digits forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
digit forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: forall {a}. RE a
onenine forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
fraction forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
exponent forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
sign forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
ws forall a (n1 :: Nat). a -> Vec n1 a -> Vec ('S n1) a
::: forall a. Vec 'Z a
VNil
where
_jsonV, valueV, objectV, membersV, memberV, arrayV, elementsV, elementV, stringV, charactersV, characterV, escapeV, hexV, numberV, integerV, digitsV, digitV, onenineV, fractionV, exponentV, signV, wsV :: CFGBase Size a
_jsonV :: CFGBase Size a
_jsonV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
21
valueV :: CFGBase Size a
valueV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
20
objectV :: CFGBase Size a
objectV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
19
membersV :: CFGBase Size a
membersV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
18
memberV :: CFGBase Size a
memberV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
17
arrayV :: CFGBase Size a
arrayV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
16
elementsV :: CFGBase Size a
elementsV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
15
elementV :: CFGBase Size a
elementV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
14
stringV :: CFGBase Size a
stringV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
13
charactersV :: CFGBase Size a
charactersV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
12
characterV :: CFGBase Size a
characterV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
11
escapeV :: CFGBase Size a
escapeV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
10
hexV :: CFGBase Size a
hexV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
9
numberV :: CFGBase Size a
numberV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
8
integerV :: CFGBase Size a
integerV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
7
digitsV :: CFGBase Size a
digitsV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
6
digitV :: CFGBase Size a
digitV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
5
onenineV :: CFGBase Size a
onenineV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
4
fractionV :: CFGBase Size a
fractionV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
3
exponentV :: CFGBase Size a
exponentV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
2
signV :: CFGBase Size a
signV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
1
wsV :: CFGBase Size a
wsV = forall a. a -> RE a
Var forall a b. (a -> b) -> a -> b
$ forall a b. a -> Either a b
Left Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S ('S ('S ('S ('S ('S ('S ('S 'Z))))))))))))))))))))))
0
json :: CFGBase Size a
json = CFGBase Size a
elementV
value :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
value = [RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
'Z)))))))))))))))))))))))
a)]
-> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
'Z)))))))))))))))))))))))
a)
unions [ CFGBase Size a
objectV, CFGBase Size a
arrayV, CFGBase Size a
stringV, CFGBase Size a
numberV, RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"true", RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"false", RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"null" ]
object :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
object = RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"{" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
wsV forall a. Semigroup a => a -> a -> a
<> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"}" forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"{" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
membersV forall a. Semigroup a => a -> a -> a
<> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"}"
members :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
members = CFGBase Size a
memberV forall a. Ord a => RE a -> RE a -> RE a
\/ CFGBase Size a
memberV forall a. Semigroup a => a -> a -> a
<> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"," forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
membersV
member :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
member = CFGBase Size a
wsV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
stringV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
wsV forall a. Semigroup a => a -> a -> a
<> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
":" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
elementV
array :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
array = RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"[" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
wsV forall a. Semigroup a => a -> a -> a
<> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"]" forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"[" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
elementsV forall a. Semigroup a => a -> a -> a
<> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"]"
elements :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
elements = CFGBase Size a
elementV forall a. Ord a => RE a -> RE a -> RE a
\/ CFGBase Size a
elementV forall a. Semigroup a => a -> a -> a
<> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"," forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
elementsV
element :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
element = CFGBase Size a
wsV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
valueV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
wsV
string :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
string = RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"\"" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
charactersV forall a. Semigroup a => a -> a -> a
<> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"\""
characters :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
characters = RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"" forall a. Ord a => RE a -> RE a -> RE a
\/ CFGBase Size a
characterV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
charactersV
character :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
character = forall a. CharSet -> RE a
Ch CharSet
chars forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"\\" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
escapeV
chars :: CharSet
chars = String -> CharSet
CS.fromList [ Char
c | Char
c <- [Char
'\x20' .. forall a. Bounded a => a
maxBound ], Char
c forall a. Eq a => a -> a -> Bool
/= Char
'"', Char
c forall a. Eq a => a -> a -> Bool
/= Char
'\\' ]
escape :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
escape =
forall a. CharSet -> RE a
Ch (String -> CharSet
CS.fromList String
"\"\\/bfnrt")
forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"u" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
hexV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
hexV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
hexV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
hexV
hex :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
hex = CFGBase Size a
digitV forall a. Semigroup a => a -> a -> a
<> forall a. CharSet -> RE a
Ch (String -> CharSet
CS.fromList String
"ABCDEFabcdef")
number :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
number = CFGBase Size a
integerV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
fractionV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
exponentV
integer :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
integer = CFGBase Size a
digitV forall a. Ord a => RE a -> RE a -> RE a
\/ CFGBase Size a
onenineV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
digitsV forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"-" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
digitV forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"-" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
onenineV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
digitsV
digits :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
digits = CFGBase Size a
digitV forall a. Ord a => RE a -> RE a -> RE a
\/ CFGBase Size a
digitV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
digitsV
digit :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
digit = RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"0" forall a. Ord a => RE a -> RE a -> RE a
\/ CFGBase Size a
onenineV
onenine :: RE a
onenine = forall a. CharSet -> RE a
Ch (String -> CharSet
CS.fromList String
"123456789")
fraction :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
fraction = RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"" forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"." forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
digitsV
exponent :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
exponent = RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"" forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"E" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
signV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
digitsV forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"e" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
signV forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
digitsV
sign :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
sign = RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"" forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"+" forall a. Ord a => RE a -> RE a -> RE a
\/ RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"-"
ws :: RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
ws = [RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
'Z)))))))))))))))))))))))
a)]
-> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
'Z)))))))))))))))))))))))
a)
unions [RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"", RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"\x20" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
wsV, RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"\x0A" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
wsV, RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"\x0D" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
wsV, RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S 'Z)))))))))))))))))))))))
a)
"\x09" forall a. Semigroup a => a -> a -> a
<> CFGBase Size a
wsV ]
unions :: [RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
'Z)))))))))))))))))))))))
a)]
-> RE
(Either
(Fin
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
('S
'Z)))))))))))))))))))))))
a)
unions = forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr forall a. Ord a => RE a -> RE a -> RE a
(\/) forall {a}. RE a
Null
jsonRE :: RE Void
jsonRE :: RE Void
jsonRE =
forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"ws" (forall a. Name -> RE (Var a) -> RE a
Fix Name
"ws" (forall a. RE a -> RE a -> RE a
Alt forall {a}. RE a
Eps (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
" ") (forall a. a -> RE a
Var forall a. Var a
B)) (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"\n") (forall a. a -> RE a
Var forall a. Var a
B)) (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"\r") (forall a. a -> RE a
Var forall a. Var a
B)) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"\t") (forall a. a -> RE a
Var forall a. Var a
B))))))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"hex" (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"0123456789") (forall a. CharSet -> RE a
Ch CharSet
"ABCDEFabcdef")) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"escape" (forall a. RE a -> RE a -> RE a
Alt (forall a. CharSet -> RE a
Ch CharSet
"\"/\\bfnrt") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"u") (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. a -> RE a
Var forall a. Var a
B)))))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"character" (forall a. RE a -> RE a -> RE a
Alt (forall a. CharSet -> RE a
Ch ([(Char, Char)] -> CharSet
CS.fromIntervalList [(Char
'\32',Char
'\33'),(Char
'\35',Char
'\91'),(Char
'\93',Char
'\1114111')])) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"\\") (forall a. a -> RE a
Var forall a. Var a
B))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"characters" (forall a. Name -> RE (Var a) -> RE a
Fix Name
"characters" (forall a. RE a -> RE a -> RE a
Alt forall {a}. RE a
Eps (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F forall a. Var a
B)) (forall a. a -> RE a
Var forall a. Var a
B)))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"string" (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"\"") (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. CharSet -> RE a
Ch CharSet
"\""))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"digits" (forall a. Name -> RE (Var a) -> RE a
Fix Name
"digits" (forall a. RE a -> RE a -> RE a
Alt (forall a. CharSet -> RE a
Ch CharSet
"0123456789") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"0123456789") (forall a. a -> RE a
Var forall a. Var a
B)))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"integer" (forall a. RE a -> RE a -> RE a
Alt (forall a. CharSet -> RE a
Ch CharSet
"0123456789") (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"123456789") (forall a. a -> RE a
Var forall a. Var a
B)) (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"-") (forall a. CharSet -> RE a
Ch CharSet
"0123456789")) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"-") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"123456789") (forall a. a -> RE a
Var forall a. Var a
B)))))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"fraction" (forall a. RE a -> RE a -> RE a
Alt forall {a}. RE a
Eps (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
".") (forall a. a -> RE a
Var (forall a. a -> Var a
F forall a. Var a
B)))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"sign" (forall a. RE a -> RE a -> RE a
Alt forall {a}. RE a
Eps (forall a. CharSet -> RE a
Ch CharSet
"+-")) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"exponent" (forall a. RE a -> RE a -> RE a
Alt forall {a}. RE a
Eps (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"E") (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))))) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"e") (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))))))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"number" (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B))) (forall a. a -> RE a
Var forall a. Var a
B))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"value" (forall a. Name -> RE (Var a) -> RE a
Fix Name
"value" (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"element" (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B))))))))))))) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B))))))))))))))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"member" (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))))))))))))) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B))))))))) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))))))))))))) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
":") (forall a. a -> RE a
Var forall a. Var a
B))))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"members" (forall a. Name -> RE (Var a) -> RE a
Fix Name
"members" (forall a. RE a -> RE a -> RE a
Alt (forall a. a -> RE a
Var (forall a. a -> Var a
F forall a. Var a
B)) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F forall a. Var a
B)) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
",") (forall a. a -> RE a
Var forall a. Var a
B))))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"object" (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"{") (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))))))))))))))) (forall a. CharSet -> RE a
Ch CharSet
"}"))) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"{") (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. CharSet -> RE a
Ch CharSet
"}")))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"elements" (forall a. Name -> RE (Var a) -> RE a
Fix Name
"elements" (forall a. RE a -> RE a -> RE a
Alt (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B))))) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B))))) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
",") (forall a. a -> RE a
Var forall a. Var a
B))))) (forall a. Name -> RE a -> RE (Var a) -> RE a
Let Name
"array" (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"[") (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))))))))))))))))) (forall a. CharSet -> RE a
Ch CharSet
"]"))) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"[") (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. CharSet -> RE a
Ch CharSet
"]")))) (forall a. RE a -> RE a -> RE a
Alt (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B))) (forall a. RE a -> RE a -> RE a
Alt (forall a. a -> RE a
Var forall a. Var a
B) (forall a. RE a -> RE a -> RE a
Alt (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))))))))))))) (forall a. RE a -> RE a -> RE a
Alt (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))))))) (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"t") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"r") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"u") (forall a. CharSet -> RE a
Ch CharSet
"e")))) (forall a. RE a -> RE a -> RE a
Alt (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"f") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"a") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"l") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"s") (forall a. CharSet -> RE a
Ch CharSet
"e"))))) (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"n") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"u") (forall a. RE a -> RE a -> RE a
App (forall a. CharSet -> RE a
Ch CharSet
"l") (forall a. CharSet -> RE a
Ch CharSet
"l"))))))))))))))))) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B))))))))))))) (forall a. RE a -> RE a -> RE a
App (forall a. a -> RE a
Var forall a. Var a
B) (forall a. a -> RE a
Var (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F (forall a. a -> Var a
F forall a. Var a
B)))))))))))))))))))))))))))
#ifdef RERE_SLOW_DOCTEST
_doctest1 :: ()
_doctest1 = ()
#endif