}
}
+sub tokenize_float {
+ use bignum;
+ my $self = shift;
+ my $toml = shift;
+ $toml =~ s/_//g;
+ return 0 + $toml;
+}
+
+sub tokenize_integer {
+ use bigint;
+
+ my $self = shift;
+ my $toml = shift;
+
+ $toml =~ s/_//g;
+
+ for ($toml) {
+ when (/(?&Oct) $TOML/x) {
+ $toml =~ s/^0o/0/; # convert to perl's octal format
+ return oct $toml;
+ }
+
+ when (/(?&Bin) $TOML/x) {
+ return oct $toml;
+ }
+
+ when (/(?&Hex) $TOML/x) {
+ return hex $toml;
+ }
+ }
+
+ return 0 + $toml;
+}
+
sub tokenize_string {
my $self = shift;
my $toml = shift;
$self->{line} += scalar( grep{ defined $_ } @newlines );
$str =~ s/^(?&WS) (?&NL) $TOML//x;
+ $str =~ s/\\(?&NL)\s* $TOML//xgs;
$str = unescape_str($str);
}
$self->{line} += scalar( grep{ defined $_ } @newlines );
$str =~ s/^(?&WS) (?&NL) $TOML//x;
+ $str =~ s/\\(?&NL)\s* $TOML//xgs;
}
when (/^ ((?&StringLiteral)) $TOML/x) {
return ''.$str;
}
-sub tokenize_float { goto \&tokenize_number }
-sub tokenize_integer { goto \&tokenize_number }
-
-sub tokenize_number {
- my $self = shift;
- my $toml = shift;
-
- $toml =~ s/_//g;
-
- for ($toml) {
- when (/(?&Oct) $TOML/x) {
- $toml =~ s/^0o/0/; # convert to perl's octal format
- return oct $toml;
- }
-
- when (/(?&Bin) $TOML/x) {
- return oct $toml;
- }
-
- when (/(?&Hex) $TOML/x) {
- return hex $toml;
- }
- }
-
- return 0 + $toml;
-}
-
# Adapted from TOML::Parser::Util
sub unescape_str {
my $str = shift;