0 | module Language.JSON.String.Lexer
3 | import Language.JSON.String.Tokens
13 | esc : Lexer -> Lexer
14 | esc = escape (is '\\')
17 | unicodeEscape : Lexer
18 | unicodeEscape = esc $
is 'u' <+> count (exactly 4) hexDigit
21 | simpleEscape : Lexer
22 | simpleEscape = esc $
oneOf "\"\\/bfnrt"
26 | legalChar = non (quo <|> is '\\' <|> control)
29 | jsonStringTokenMap : TokenMap JSONStringToken
30 | jsonStringTokenMap = toTokenMap $
32 | , (unicodeEscape, JSTUnicodeEscape)
33 | , (simpleEscape, JSTSimpleEscape)
34 | , (legalChar, JSTChar)
38 | lexString : String -> Maybe (List (WithBounds JSONStringToken))
39 | lexString x = case lex jsonStringTokenMap x of
40 | (toks, _, _, "") => Just $
toks