diff --git a/lib/Minilisp.pm b/lib/Minilisp.pm index 41be544..bcce925 100644 --- a/lib/Minilisp.pm +++ b/lib/Minilisp.pm @@ -80,8 +80,17 @@ sub tokenize { elsif($str =~ s/^([^\s()"]+)//) { my $ident = $1; - if($ident =~ /^[0-9]+$/) + if($ident eq ".") { + die "short cons not supported" + } + elsif($ident =~ /^-?([0-9]+|[0-9]*\.[0-9]*)$/) + { + if($ident =~ s/^-//) + { + $ident = 0 - $ident; + } + push @tokens, { type => NUMBER, value => 0+ $ident,