Fix up float parsing.
This commit is contained in:
		
							parent
							
								
									494fc5acbb
								
							
						
					
					
						commit
						f872262e08
					
				
					 2 changed files with 3 additions and 2 deletions
				
			
		|  | @ -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"); | ||||
|     } | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue