]> git.mxchange.org Git - simgear.git/commitdiff
Fix broken lex.c checkin
authorandy <andy>
Tue, 30 Sep 2008 19:06:34 +0000 (19:06 +0000)
committerandy <andy>
Tue, 30 Sep 2008 19:06:34 +0000 (19:06 +0000)
simgear/nasal/lex.c

index d3d525c316c52bfcf095b3a06a91d603871a9ef8..685393ad24447b0159f5306e61789e9b4f736104 100644 (file)
@@ -257,7 +257,7 @@ static int lexHexLiteral(struct Parser* p, int index)
 }
 
 #define ISNUM(c) ((c) >= '0' && (c) <= '9')
-
+#define NUMSTART(c) (ISNUM(c) || (c)=='+' || (c) == '-')
 static int lexNumLiteral(struct Parser* p, int index)
 {
     int len = p->len, i = index;
@@ -267,17 +267,15 @@ static int lexNumLiteral(struct Parser* p, int index)
     if(buf[0] == '0' && i+1<len && buf[i+1] == 'x')
         return lexHexLiteral(p, index+2);
 
-    while(i<len && buf[i] >= '0' && buf[i] <= '9') i++;
+    while(i<len && ISNUM(buf[i])) i++;
     if(i<len && buf[i] == '.') {
         i++;
-        while(i<len && buf[i] >= '0' && buf[i] <= '9') i++;
+        while(i<len && ISNUM(buf[i])) i++;
     }
-    if(i+1<len && (buf[i] == 'e' || buf[i] == 'E') && ISNUM(buf[i+1])) {
+    if(i+1<len && (buf[i] == 'e' || buf[i] == 'E') && NUMSTART(buf[i+1])) {
         i++;
-        if(i<len
-           && (buf[i] == '-' || buf[i] == '+')
-           && (i+1<len && buf[i+1] >= '0' && buf[i+1] <= '9')) i++;
-        while(i<len && buf[i] >= '0' && buf[i] <= '9') i++;
+        if(buf[i] == '-' || buf[i] == '+') i++;
+        while(i<len && ISNUM(buf[i])) i++;
     }
     naStr_parsenum(p->buf + index, i - index, &d);
     newToken(p, index, TOK_LITERAL, 0, 0, d);