json5-parser 0.0.0

Command line build example
Documentation
grammar Json5 {
    patterns: ("*.json5")
}

entry union Value {
    | Object  #Object
    | Array   #Array
    | String  #String
    | Number  #Number
    | Boolean #Boolean
    | Null    #Null
}

class Object {
    '{' (ObjectPair (COMMA ObjectPair)* COMMA)? '}'
}

class ObjectPair {
    ObjectKey COLON Value
}

union ObjectKey {
    | Identifier
    | String
}

class Array {
    '[' (Value (COMMA Value)* COMMA)? ']'
}

atomic class String {
    | '"' StringElement* '"'
    | "'" StringElement* "'"
}

atomic union StringElement {
    | '\' HexDigit #HexDigit
    | '\' Escaped  #Escaped
    | StringText   #StringText
}

text class  HexDigit {
    /[0-9a-fA-F]{4}/
}
text class Escaped {
    ANY
}
text class StringText {
    /[^"'\\\\]+/
}

atomic text class Number {
    /[+-]?(0|[1-9][0-9]*)/
}

union Boolean {
    | "true"  #True
    | "false" #False
}

class Null {
    "null"
}

class Identifier {
    /[_\p{XID_start}][\p{XID_continue}]*/
}


token {
    COLON: ':'
    COMMA: ','
}

hide class Comment {
    | '#' ROL
}

hide class WhiteSpace {
    // UNICODE_WHITE_SPACE
    ' ' | '\n' | '\r'
}