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 () {