]> git.draconx.ca Git - gob-dx.git/blobdiff - src/lexer.c
Release 1.0.9
[gob-dx.git] / src / lexer.c
index fe904e563e84f8076d90e91a269aad709b447422..73353799097f1927096d7c80605f82839eef0e7d 100644 (file)
@@ -1552,27 +1552,46 @@ YY_RULE_SETUP
 {
                        int maj = 0,min = 0,pl = 0;
                        int rmaj = 0,rmin = 0,rpl = 0;
+                       int effective_maj = 0;
+                       int effective_rmaj = 0;
                        char *p;
                        
                        sscanf(VERSION,"%d.%d.%d",&rmaj,&rmin,&rpl);
+                       effective_rmaj = rmaj;
+                       if (rmin >= 90)
+                               effective_rmaj = rmaj + 1;
+
                        p = strchr(yytext,'r');
                        g_assert(p); /* we MUST have found it */
                        sscanf(p,"requires %d.%d.%d",&maj,&min,&pl);
+                       effective_maj = maj;
+                       if (min >= 90)
+                               effective_maj = maj + 1;
+
                        if(rmaj < maj ||
                           (rmaj == maj && rmin < min) ||
                           (rmaj == maj && rmin == min && rpl < pl)) {
                                error_printf(GOB_ERROR, line_no,
-                                            "GOB version %d.%d.%d required "
+                                            "GOB version at least %d.%d.%d required "
                                             "(this is %s)\n"
                                             "To upgrade your gob, see: "
                                             "http://www.5z.com/jirka/gob.html",
                                             maj, min, pl, VERSION);
                        }
+
+                       if(effective_rmaj != effective_maj) {
+                               error_printf(GOB_ERROR, line_no,
+                                            "GOB major version %d required "
+                                            "(this is %s)\n"
+                                            "To upgrade your gob, see: "
+                                            "http://www.5z.com/jirka/gob.html",
+                                            maj, VERSION);
+                       }
                }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 365 "lexer.l"
+#line 384 "lexer.l"
 {
                        if(for_cpp) {
                                error_printf(GOB_WARN, line_no,
@@ -1585,122 +1604,122 @@ YY_RULE_SETUP
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 375 "lexer.l"
+#line 394 "lexer.l"
 {return FROM;}
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 377 "lexer.l"
+#line 396 "lexer.l"
 {return VOID;}
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 378 "lexer.l"
+#line 397 "lexer.l"
 {return STRUCT;}
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 379 "lexer.l"
+#line 398 "lexer.l"
 {return UNION;}
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 380 "lexer.l"
+#line 399 "lexer.l"
 {return ENUM;}
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 381 "lexer.l"
+#line 400 "lexer.l"
 {return SIGNED;}
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 382 "lexer.l"
+#line 401 "lexer.l"
 {return UNSIGNED;}
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 383 "lexer.l"
+#line 402 "lexer.l"
 {return LONG;}
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 384 "lexer.l"
+#line 403 "lexer.l"
 {return SHORT;}
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 385 "lexer.l"
+#line 404 "lexer.l"
 {return INT;}
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 386 "lexer.l"
+#line 405 "lexer.l"
 {return FLOAT;}
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 387 "lexer.l"
+#line 406 "lexer.l"
 {return DOUBLE;}
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 388 "lexer.l"
+#line 407 "lexer.l"
 {return CHAR;}
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 389 "lexer.l"
+#line 408 "lexer.l"
 {return CONST;}
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 391 "lexer.l"
+#line 410 "lexer.l"
 {return THREEDOTS;}
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 393 "lexer.l"
+#line 412 "lexer.l"
 {yylval.line = line_no; return PUBLIC;}
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 394 "lexer.l"
+#line 413 "lexer.l"
 {yylval.line = line_no; return PRIVATE;}
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 395 "lexer.l"
+#line 414 "lexer.l"
 {yylval.line = line_no; return PROTECTED;}
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 396 "lexer.l"
+#line 415 "lexer.l"
 {yylval.line = line_no; return CLASSWIDE;}
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 397 "lexer.l"
+#line 416 "lexer.l"
 {yylval.line = line_no; return ARGUMENT;}
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 398 "lexer.l"
+#line 417 "lexer.l"
 {yylval.line = line_no; return VIRTUAL;}
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 399 "lexer.l"
+#line 418 "lexer.l"
 {yylval.line = line_no; return SIGNAL;}
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 400 "lexer.l"
+#line 419 "lexer.l"
 {yylval.line = line_no; return OVERRIDE;}
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 401 "lexer.l"
+#line 420 "lexer.l"
 {
                        yylval.id = g_strdup(yytext);
                        return NUMBER;
@@ -1708,7 +1727,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 405 "lexer.l"
+#line 424 "lexer.l"
 {
                        /* this one is for a classname with a namespace */
                        yylval.id = g_strdup(yytext);
@@ -1717,7 +1736,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 410 "lexer.l"
+#line 429 "lexer.l"
 {
                        /* this is for a classname with an empty namespace */
                        yylval.id = g_strdup(yytext);
@@ -1726,7 +1745,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 415 "lexer.l"
+#line 434 "lexer.l"
 {
                        yylval.id = g_strdup(yytext);
                        return TOKEN;
@@ -1734,7 +1753,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 420 "lexer.l"
+#line 439 "lexer.l"
 {
                        yylval.id = g_strdup(yytext);
                        return ARRAY_DIM;
@@ -1742,7 +1761,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 425 "lexer.l"
+#line 444 "lexer.l"
 {
                        BEGIN(CLASS_CODE_I);
                        return '{';
@@ -1750,7 +1769,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 429 "lexer.l"
+#line 448 "lexer.l"
 {
                        BEGIN(C_CODE);
                        parenth_depth=1;
@@ -1763,7 +1782,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 438 "lexer.l"
+#line 457 "lexer.l"
 {
                                BEGIN(INITIAL);
                                return '}';
@@ -1771,12 +1790,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 443 "lexer.l"
+#line 462 "lexer.l"
 ;  /*ignore*/
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 445 "lexer.l"
+#line 464 "lexer.l"
 {
                        yylval.line = line_no;
                        return yytext[0];
@@ -1784,15 +1803,15 @@ YY_RULE_SETUP
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 450 "lexer.l"
+#line 469 "lexer.l"
 ;  /*ignore*/
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 452 "lexer.l"
+#line 471 "lexer.l"
 ECHO;
        YY_BREAK
-#line 1796 "lex.yy.c"
+#line 1815 "lex.yy.c"
                        case YY_STATE_EOF(INITIAL):
                        case YY_STATE_EOF(COMMENT):
                        case YY_STATE_EOF(C_CODE):
@@ -2682,7 +2701,7 @@ int main()
        return 0;
        }
 #endif
-#line 452 "lexer.l"
+#line 471 "lexer.l"
 
 
 /* Ugly warning avoiding */