break;
}
}
- if(start == nil)
+ if(start == nil) {
+ yyerror("malformed hex constant: %s", as);
goto bad;
+ }
mphextofix(&a->val, start, s-start);
- if(a->val.ovf)
+ if(a->val.ovf) {
+ yyerror("constant too large: %s", as);
goto bad;
+ }
a->exp = 0;
mpnorm(a);
}
for(;;) {
switch(c = *s++) {
default:
+ yyerror("malformed constant: %s (at %c)", as, c);
goto bad;
case '-':
continue;
case '.':
- if(base == 16)
+ if(base == 16) {
+ yyerror("decimal point in hex constant: %s", as);
goto bad;
+ }
dp = 1;
continue;
}
if(eb) {
- if(dp)
+ if(dp) {
+ yyerror("decimal point and binary point in constant: %s", as);
goto bad;
+ }
mpsetexp(a, a->exp+ex);
goto out;
}
return;
bad:
- yyerror("constant too large: %s", as);
mpmovecflt(a, 0.0);
}
c = *s++;
continue;
}
+ yyerror("malformed decimal constant: %s", as);
goto bad;
}
goto out;
c = *s++;
continue;
}
+ yyerror("malformed octal constant: %s", as);
goto bad;
}
goto out;
c = *s;
continue;
}
+ yyerror("malformed hex constant: %s", as);
goto bad;
}
mphextofix(a, s0, s-s0);
- if(a->ovf)
+ if(a->ovf) {
+ yyerror("constant too large: %s", as);
goto bad;
+ }
out:
if(f)
return;
bad:
- yyerror("constant too large: %s", as);
mpmovecfix(a, 0);
}