parse function
Implementation
dynamic parse(String? s) {
if (s == null) return null;
if (s == '') return '';
if (_parsers.isEmpty) {
_ensureInitialized();
}
s = s.replaceAllMapped(RegExp(r'\\+$'), (match) {
return match.group(0)!.length % 2 == 0
? match.group(0)!
: match.group(0)!.substring(0, match.group(0)!.length - 1);
});
try {
return jsonDecode(s);
} catch (e) {
ParseResult data;
if (s.trimLeft().startsWith(':')) {
data = _parseAny(s, e);
} else {
data = _parseAny(s, e, fallback: _parseStringWithoutQuote);
}
lastParseReminding = data[1];
if (onExtraToken != null && (data[1] as String).trimRight().isNotEmpty) {
onExtraToken!(s, data[0], (data[1] as String).trimRight());
}
return data[0];
}
}