Diff for /freem/src/operator.c between versions 1.7 and 1.11

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;

Removed from v.1.7  
changed lines
  Added in v.1.11


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>