PEG

Undocumented in source.
enum PEG = ` TOML: Document <- (ValueLine)* KeyGroup* KeyGroup <- Header ValueLine* Header <- ignore "[" HeaderName "]" line_end HeaderName <- qualifiedIdentifier ValueLine <- :ignore Name :ws :"=" :ws Value line_end Name <- identifier Value <- DatetimeValue / StringValue / FloatValue / IntegerValue / BooleanValue / Array # # Strings # ----------------------------------------------------------------- StringValue <~ :doublequote (!doublequote Char)* :doublequote Char <~ backslash ( doublequote # '\' Escapes / quote / backslash / [bfnrt] / [0-2][0-7][0-7] / [0-7][0-7]? / 'x' Hex Hex / 'u' Hex Hex Hex Hex / 'U' Hex Hex Hex Hex Hex Hex Hex Hex ) / . # Or any char, really Hex <- [0-9a-fA-F] # # Numbers # ------------------------------------------- Digit <- [0-9] IntegerValue <~ "-"? [1-9] digit* FloatValue <~ IntegerValue "." digit+ # # DateTime # ------------------------------------------- DatetimeValue <~ ([1-9] digit digit digit) "-" (digit digit) "-" (digit digit) "T" (digit digit) ":" (digit digit) ":" (digit digit) "Z" # # Boolean # ------------------------------------------- BooleanValue <- ("true" / "false") # # Arrays # ------------------------------------------- Array <- EmptyArray / DatetimeArray / StringArray / IntegerArray / FloatArray / ArrayOfArray EmptyArray <- :"[" ws :"]" StringArray <- :"[" ws StringValue (ws :"," ws StringValue)* ws :"]" IntegerArray <- :"[" ws IntegerValue (ws :"," ws IntegerValue)* ws :"]" FloatArray <- :"[" ws FloatValue (ws :"," ws FloatValue)* ws :"]" DatetimeArray <- :"[" ws DatetimeValue (ws :"," ws DatetimeValue)* ws :"]" ArrayOfArray <- :"[" ws Array (ws :"," ws Array)* ws :"]" # # Helpers # ----------------------------------------- line_end <- ws comment? !(!eol .) ignore <- :(comment / space / eol)* comment <- "#" (!eol .)* ws <- :space* `;

Meta