Fix up float parsing.

This commit is contained in:
Christian Theune 2016-01-05 09:46:37 +01:00
parent 494fc5acbb
commit f872262e08
2 changed files with 3 additions and 2 deletions

View file

@ -130,6 +130,7 @@ static void printValue(std::ostream & str, std::set<const Value *> & active, con
break;
case tFloat:
str << v.fpoint;
break;
default:
throw Error("invalid value");
}

View file

@ -85,7 +85,7 @@ static Expr * unescapeStr(SymbolTable & symbols, const char * s)
ID [a-zA-Z\_][a-zA-Z0-9\_\'\-]*
INT [0-9]+
FLOAT {INT}\.{INT}
FLOAT (([1-9][0-9]*\.?[0-9]*)|(\.[0-9]+))([Ee][+-]?[0-9]+)?
PATH [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+
HPATH \~(\/[a-zA-Z0-9\.\_\-\+]+)+
SPATH \<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\>
@ -125,7 +125,7 @@ or { return OR_KW; }
return INT;
}
{FLOAT} { errno = 0;
yylval->n = strtod(yytext, 0);
yylval->nf = strtod(yytext, 0);
if (errno != 0)
throw ParseError(format("invalid float %1%") % yytext);
return FLOAT;