164 |
return result; |
return result; |
165 |
} |
} |
166 |
|
|
|
/*--------------------------------------------------. |
|
|
| Save the content of the obstack OBS in FILENAME. | |
|
|
`--------------------------------------------------*/ |
|
|
|
|
|
static void |
|
|
obstack_save (struct obstack *obs, const char *filename) |
|
|
{ |
|
|
FILE *out = xfopen (filename, "w"); |
|
|
size_t size = obstack_object_size (obs); |
|
|
fwrite (obstack_finish (obs), 1, size, out); |
|
|
xfclose (out); |
|
|
} |
|
167 |
|
|
168 |
/*------------------------------------------------------------------. |
/*------------------------------------------------------------------. |
169 |
| Return the path to the skeleton which locaction might be given in | |
| Return the path to the skeleton which locaction might be given in | |
424 |
attrsfile = stringappend (attrsfile, header_extension); |
attrsfile = stringappend (attrsfile, header_extension); |
425 |
#endif /* MSDOS */ |
#endif /* MSDOS */ |
426 |
} |
} |
|
|
|
|
|
|
|
/*---------------------------. |
|
|
| Produce the output files. | |
|
|
`---------------------------*/ |
|
|
|
|
|
void |
|
|
output_files (void) |
|
|
{ |
|
|
#if 0 |
|
|
/* Seems to be invalid now --akim. */ |
|
|
|
|
|
/* If we output only the table, dump the actions in ACTFILE. */ |
|
|
if (no_parser_flag) |
|
|
obstack_save (&action_obstack, stringappend (short_base_name, ".act")); |
|
|
obstack_free (&action_obstack, NULL); |
|
|
#endif |
|
|
|
|
|
/* If we produced a semantic parser ATTRS_OBSTACK must be dumped |
|
|
into its own file, ATTTRSFILE. */ |
|
|
if (semantic_parser) |
|
|
{ |
|
|
char *temp_name; |
|
|
|
|
|
obstack_save (&attrs_obstack, attrsfile); |
|
|
temp_name = stringappend (short_base_name, EXT_GUARD_C); |
|
|
#ifndef MSDOS |
|
|
temp_name = stringappend (temp_name, src_extension); |
|
|
#endif /* MSDOS */ |
|
|
obstack_save (&guard_obstack, temp_name); |
|
|
} |
|
|
|
|
|
obstack_free (&guard_obstack, NULL); |
|
|
obstack_free (&attrs_obstack, NULL); |
|
|
} |
|