+ if(value == 0 && errno == ERANGE) {
+ error_set(error, lex, "real number underflow");
+ goto out;
+ }
+
+ /* Cannot test for +/-HUGE_VAL because the HUGE_VAL constant is
+ only defined in C99 mode. So let's trust in sole errno. */
+ else if(errno == ERANGE) {
+ error_set(error, lex, "real number overflow");
+ goto out;
+ }
+
+ lex->token = TOKEN_REAL;
+ lex->value.real = value;
+ return 0;
+