+^[ \t]*requires[ \t]+[0-9]+\.[0-9]+\.[0-9]+[\t ]*$ {
+ int maj = 0,min = 0,pl = 0;
+ int rmaj = 0,rmin = 0,rpl = 0;
+ char *p;
+
+ sscanf(VERSION,"%d.%d.%d",&rmaj,&rmin,&rpl);
+ p = strchr(yytext,'r');
+ g_assert(p); /* we MUST have found it */
+ sscanf(p,"requires %d.%d.%d",&maj,&min,&pl);
+ if(rmaj < maj ||
+ (rmaj == maj && rmin < min) ||
+ (rmaj == maj && rmin == min && rpl < pl)) {
+ char *s;
+ s = g_strdup_printf(
+ "GOB version %d.%d.%d required "
+ "(this is %s)\n"
+ "To upgrade your gob, see: "
+ "http://www.5z.com/jirka/gob.html",
+ maj,min,pl,VERSION);
+ print_error(FALSE, s, line_no);
+ g_free(s);
+ }
+ }
+
+<CLASS_CODE,CLASS_CODE_I>class|this {
+ if(for_cpp) {
+ char *s;
+ s = g_strdup_printf("'%s' keyword should not "
+ "be used when generating "
+ "C++ code", yytext);
+ print_error(TRUE, s, line_no);
+ g_free(s);
+ }
+ REJECT;
+ }
+