# HG changeset patch # User Teemu Piippo # Date 1342401987 -10800 # Node ID 6c4efed2dbdd1b446338f03e80786c35bb7754d3 # Parent b4e09ae24bf178010d540b4c88011f2b604dfae3 Negative numbers are now considered numbers too... diff -r b4e09ae24bf1 -r 6c4efed2dbdd scriptreader.cxx --- a/scriptreader.cxx Mon Jul 16 04:15:49 2012 +0300 +++ b/scriptreader.cxx Mon Jul 16 04:26:27 2012 +0300 @@ -273,9 +273,19 @@ } void ScriptReader::MustNumber () { + str num; MustNext (); - if (!token.isnumber()) - ParserError ("expected a number, got `%s`", token.chars()); + num += token; + + // Cater for a possible minus sign, since it + // breaks the token, read a new one with the number. + if (!token.compare ("-")) { + MustNext (); + num += token; + } + + if (!num.isnumber()) + ParserError ("expected a number, got `%s`", num.chars()); } void ScriptReader::MustBool () { diff -r b4e09ae24bf1 -r 6c4efed2dbdd str.cxx --- a/str.cxx Mon Jul 16 04:15:49 2012 +0300 +++ b/str.cxx Mon Jul 16 04:26:27 2012 +0300 @@ -309,9 +309,16 @@ // ============================================================================ bool str::isnumber () { - ITERATE_STRING (u) + ITERATE_STRING (u) { + // Minus sign as the first character is allowed for negatives + if (!u && text[u] == '-') { + printf ("%u was minus sign\n", u); + continue; + } + if (text[u] < '0' || text[u] > '9') return false; + } return true; }