Parser for ron documents
Identifier = identifier | rawIdentifier;
Value = Option | Tuple | Struct | Map | Primitive
Some = 'Some' '(' Value ')';
None = 'None';
Option = Some | None;
ValueSet = Value { Value ',' } [',']
NamedValue = Identifier ':' Value
NamedValueSet = NamedValue { ',' NamedValue } [',']
MapItem = Value ':' Value;
MapItemSet = { MapItem } [','];
RonMap
RonList
Tuple = '(' [ValueSet] ')';
TupleStruct = Identifier Tuple;
NamedFieldStruct = Identifier '(' [NamedValueSet] ')';
Summary MapStruct = Identifier Map
UnitStruct = Identifier;
Struct = TupleStruct | NamedFieldStruct | UnitStruct;
Boolean = 'true' | 'false';
Number = Integer;
Ron range operator
RangeOperator = '..' | '..=';
RangeBinary = Number RangeOperator Number;
RangeFrom = Number '..';
RangeTo = RangeOperator Number;
RangeFull = '..';
Range = RangeBinary | RangeFrom | RangeTo | RangeFull;
String parser
Character parser
Primitive = Boolean;
Ron = Extensions Value;