Rui Barreiroadded jsonbb6aaad6 years agoHistory
41 lines · 1.0 KB · Text
RawDownload
module Language.JSON.Lexer import Language.JSON.Stringimport Text.Lexerimport Text.Token import public Language.JSON.Tokens %default total privatenumberLit : LexernumberLit  = let sign  = is '-'        whole = is '0' <|> range '1' '9' <+> many digit        frac  = is '.' <+> digits        exp   = like 'e' <+> opt (oneOf "+-") <+> digits in        opt sign <+> whole <+> opt frac <+> opt exp privatejsonTokenMap : TokenMap JSONTokenjsonTokenMap = toTokenMap $  [ (spaces, JTIgnore)  , (is ',', JTPunct Comma)  , (is ':', JTPunct Colon)  , (is '[', JTPunct $ Square Open)  , (is ']', JTPunct $ Square Close)  , (is '{', JTPunct $ Curly Open)  , (is '}', JTPunct $ Curly Close)  , (exact "null", JTNull)  , (exact strTrue <|> exact strFalse, JTBoolean)  , (numberLit, JTNumber)  , (permissiveStringLit, JTString)  ] exportlexJSON : String -> Maybe (List JSONToken)lexJSON str  = case lex jsonTokenMap str of         (tokens, _, _, "") => Just $ map TokenData.tok tokens         _ => Nothing

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t