+
+ if (comment_lines > 0)
+ comment_lines++;
+
+ if ((lineno - (a_lineno + comment_lines)) > 2)
+ {
+ char mname[20];
+ char line_define[256];
+
+ sprintf(mname, "case_%d()", nrules - 2);
+
+ putc(' ', f); putc(' ', f);
+ fputs(mname, f);
+ fprintf(f, ";");
+ if (nmethods == 0)
+ {
+ maxmethods = 100;
+ methods = NEW2(maxmethods, char *);
+ }
+ else if (nmethods == maxmethods)
+ {
+ maxmethods += 500;
+ methods = REALLOC (methods, maxmethods*sizeof(char *));
+ }
+
+ sprintf(line_define, line_format, a_lineno, input_file_name);
+
+ mbody = NEW2(5+strlen(line_define)+1+strlen(mname)+strlen(buffer)+1, char);
+ strcpy(mbody, "void ");
+ strcat(mbody, mname);
+ strcat(mbody, "\n");
+ strcat(mbody, line_define);
+ strcat(mbody, buffer);
+ methods[nmethods++] = mbody;
+ }
+ else
+ {
+ fprintf(f, line_format, lineno, input_file_name);
+ putc(' ', f); putc(' ', f);
+ fwrite(buffer, 1, len, f);
+ }
+
+ fprintf(f, "\n break;\n");