version 1.7, 2025/04/10 01:24:38
|
version 1.11, 2025/05/05 23:09:19
|
Line 24
|
Line 24
|
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* |
* |
* $Log$ |
* $Log$ |
|
* Revision 1.11 2025/05/05 23:09:19 snw |
|
* Revert errors in E notation parsing |
|
* |
|
* Revision 1.10 2025/05/05 23:02:39 snw |
|
* More fixes around E notation |
|
* |
|
* Revision 1.9 2025/05/05 22:52:32 snw |
|
* Make E notation error message more appropriate |
|
* |
|
* Revision 1.8 2025/05/05 19:34:46 snw |
|
* Fix E notation code to disallow more than one minus sign after the E |
|
* |
* Revision 1.7 2025/04/10 01:24:38 snw |
* Revision 1.7 2025/04/10 01:24:38 snw |
* Remove C++ style comments |
* Remove C++ style comments |
* |
* |
Line 41
|
Line 53
|
#include "mpsdef.h" |
#include "mpsdef.h" |
#include <stdlib.h> |
#include <stdlib.h> |
#include <math.h> |
#include <math.h> |
|
#include <ctype.h> |
|
|
int unit (char *str); |
int unit (char *str); |
extern void cond_round (char *a, int digits); /* defined in expr.c */ |
extern void cond_round (char *a, int digits); /* defined in expr.c */ |
Line 1973 int numlit (char *str)
|
Line 1986 int numlit (char *str)
|
} |
} |
continue; |
continue; |
} |
} |
if (expflg) { |
if (expflg) { |
if (ch == MINUS) { |
if (ch == MINUS) { |
|
/* TODO: revisit this; it breaks string coercion |
|
if (str[i + 1] == '-') { |
|
merr_raise (INVEXPR); |
|
return (0); |
|
} |
|
if (!isdigit (str[i + 1])) { |
|
merr_raise (INVEXPR); |
|
return (0); |
|
} |
|
*/ |
expflg = (-expflg); |
expflg = (-expflg); |
continue; |
continue; |
} |
} |
if (ch == PLUS) |
if (ch == PLUS) { |
|
/* TODO: revisit this; it breaks string coercion |
|
if (str[i + 1] == '+') { |
|
merr_raise (INVEXPR); |
|
return (0); |
|
} |
|
if (!isdigit (str[i + 1])) { |
|
merr_raise (INVEXPR); |
|
return (0); |
|
} |
|
*/ |
continue; |
continue; |
|
} |
} |
} |
if ((result = unit (&str[i]))) |
if ((result = unit (&str[i]))) |
ch = str[i] = EOL; |
ch = str[i] = EOL; |