Value: Null Boolean Number String Vector Struct List Symbol Keyword Type Instance Value ::= Null | Boolean | Number | String | Vector | Struct | List | Symbol | Keyword | Type | Instance referenced by: Instance List Struct Vector Null: null Null ::= 'null' referenced by: Value Boolean: true false Boolean ::= 'true' | 'false' referenced by: Value Number: - 0 NonZeroDigit Digit . Digit e E + - Digit Number ::= '-'? ( '0' | NonZeroDigit Digit* ( '.' Digit+ )? ) ( ( 'e' | 'E' ) ( '+' | '-' )? Digit+ )? referenced by: Value Digit: [0-9] Digit ::= [0-9] referenced by: Number NonZeroDigit: [1-9] NonZeroDigit ::= [1-9] referenced by: Number String: " Printable UNICODE character except " or \\ \\ " \\ / b f n r t u Hex Hex Hex Hex " String ::= '"' ( 'Printable UNICODE character except " or \\' | '\\' ( '"' | '\\' | '/' | 'b' | 'f' | 'n' | 'r' | 't' | 'u' Hex Hex Hex Hex ) )* '"' referenced by: Key Value Hex: [0-9] [a-f] [A-F] Hex ::= [0-9a-fA-F] referenced by: String Vector: [ Value , ] Vector ::= '[' Value ( ','? Value )* ']' referenced by: Value List: ( Value , ) List ::= '(' Value ( ','? Value )* ')' referenced by: Value Struct: { Key : Value , } Struct ::= '{' Key ':'? Value ( ','? Key ':'? Value )* '}' referenced by: Value Key: String Symbol Key ::= String | Symbol referenced by: Struct Symbol: [a-z] [A-Z] _ # [a-z] [A-Z] [0-9] _ # ! ? - Symbol ::= [a-zA-Z_#] ( [a-zA-Z0-9_#!?] | '-' )* referenced by: Key Keyword Type Value Keyword: Symbol : Keyword ::= Symbol ':' referenced by: Value Type: < Symbol > Type ::= '<' Symbol '>' referenced by: Instance Value Instance: # Type Value Instance ::= '#' Type Value referenced by: Value   ... generated by Railroad Diagram Generator R R