This module implements a json parser. It is used and exported by the json standard library module, but can also be used in its own right.
JsonEventKind = enum
  jsonError,                  ## an error occurred during parsing
  jsonEof,                    ## end of file reached
  jsonString,                 ## a string literal
  jsonInt,                    ## an integer literal
  jsonFloat,                  ## a float literal
  jsonTrue,                   ## the value ``true``
  jsonFalse,                  ## the value ``false``
  jsonNull,                   ## the value ``null``
  jsonObjectStart,            ## start of an object: the ``{`` token
  jsonObjectEnd,              ## end of an object: the ``}`` token
  jsonArrayStart,             ## start of an array: the ``[`` token
  jsonArrayEnd                ## start of an array: the ``]`` tokenTokKind = enum tkError, tkEof, tkString, tkInt, tkFloat, tkTrue, tkFalse, tkNull, tkCurlyLe, tkCurlyRi, tkBracketLe, tkBracketRi, tkColon, tkComma
JsonError = enum errNone, ## no error errInvalidToken, ## invalid token errStringExpected, ## string expected errColonExpected, ## ``:`` expected errCommaExpected, ## ``,`` expected errBracketRiExpected, ## ``]`` expected errCurlyRiExpected, ## ``}`` expected errQuoteExpected, ## ``"`` or ``'`` expected errEOC_Expected, ## ``*/`` expected errEofExpected, ## EOF expected errExprExpected ## expr expected
JsonParser = object of BaseLexer a*: string tok*: TokKind kind: JsonEventKind err: JsonError state: seq[ParserState] filename: string rawStringLiterals: bool
JsonKindError = object of ValueError
to macro if the JSON kind is incorrect.   JsonParsingError = object of ValueError
errorMessages: array[JsonError, string] = ["no error", "invalid token",
                                       "string expected", "\':\' expected",
                                       "\',\' expected", "\']\' expected",
                                       "\'}\' expected",
                                       "\'\"\' or \"\'\" expected",
                                       "\'*/\' expected", "EOF expected",
                                       "expression expected"]proc open(my: var JsonParser; input: Stream; filename: string; rawStringLiterals = false) {...}{.
    raises: [Exception], tags: [ReadIOEffect].}proc close(my: var JsonParser) {...}{.inline, raises: [Exception], tags: [].}proc str(my: JsonParser): string {...}{.inline, raises: [], tags: [].}jsonInt, jsonFloat, jsonString   proc getInt(my: JsonParser): BiggestInt {...}{.inline, raises: [ValueError], tags: [].}jsonInt   proc getFloat(my: JsonParser): float {...}{.inline, raises: [ValueError], tags: [].}jsonFloat   proc kind(my: JsonParser): JsonEventKind {...}{.inline, raises: [], tags: [].}proc getColumn(my: JsonParser): int {...}{.inline, raises: [], tags: [].}proc getLine(my: JsonParser): int {...}{.inline, raises: [], tags: [].}proc getFilename(my: JsonParser): string {...}{.inline, raises: [], tags: [].}proc errorMsg(my: JsonParser): string {...}{.raises: [ValueError], tags: [].}jsonError   proc errorMsgExpected(my: JsonParser; e: string): string {...}{.raises: [ValueError],
    tags: [].}proc parseEscapedUTF16(buf: cstring; pos: var int): int {...}{.raises: [], tags: [].}proc getTok(my: var JsonParser): TokKind {...}{.raises: [Exception], tags: [ReadIOEffect].}proc next(my: var JsonParser) {...}{.raises: [Exception], tags: [ReadIOEffect].}proc raiseParseErr(p: JsonParser; msg: string) {...}{.noinline, noreturn,
    raises: [JsonParsingError, ValueError], tags: [].}proc eat(p: var JsonParser; tok: TokKind) {...}{.raises: [Exception, JsonParsingError,
    ValueError], tags: [ReadIOEffect].}
    © 2006–2018 Andreas Rumpf
Licensed under the MIT License.
    https://nim-lang.org/docs/parsejson.html