finalFloatParser property

Parser<TomlFloat> finalFloatParser
final

Parser for a regular TOML floating point value.

float-int-part = dec-int
frac = decimal-point zero-prefixable-int
decimal-point = %x2E               ; .
zero-prefixable-int = DIGIT *( DIGIT / underscore DIGIT )

exp = "e" float-exp-part
float-exp-part = [ minus / plus ] zero-prefixable-int

Implementation

static final Parser<TomlFloat> finalFloatParser = (() {
  var floatIntPart = ChoiceParser([
    char('0'),
    digit().plus().plusSeparated(char('_')),
  ]);
  var zeroPrefixableInt = digit().plus().plusSeparated(char('_'));
  var decimal = anyOf('+-').optional() & floatIntPart;
  var exp = anyOf('eE') & anyOf('+-').optional() & zeroPrefixableInt;
  var frac = char('.') & zeroPrefixableInt;
  var float = decimal & ChoiceParser([exp, frac & exp.optional()]);
  return float
      .flatten('Floating point number expected')
      .map((str) => TomlFloat(double.parse(str.replaceAll('_', ''))));
})();