Files
bison/src/files.h
Akim Demaille f499b06243 * src/gram.h (rule_t): guard' and guard_line' are new members.
* src/reader.c (symbol_list): `guard' and `guard_line' are new
members.
(symbol_list_new): Adjust.
(copy_action): action_line is the first line, not the last.
(copy_guard): Just as for actions, store the `action' only, not
the switch/case/break flesh.
Don't parse the user action that might follow the guard, let...
(readgram): do it, i.e., now, there can be an action after a
guard.
In other words the guard is just explicitly optional.
(packgram): Adjust.
* src/output.c (guards_output): New.
(output_parser): Call it when needed.
(output): Also free the guard and attrs obstacks.
* src/files.c, src/files.h (obstack_save): Remove.
(output_files): Remove.
As a result, if one needs the former `.act' file, using an
appropriate skeleton which requires actions and guards is now
required.
* src/main.c (main): Adjust.
* tests/semantic.at: New.
* tests/regression.at: Use `input.y' as input file name.
Avoid 8+3 problems by requiring input.c when the test needs the
parser.
2001-12-27 18:06:06 +00:00

75 lines
2.2 KiB
C

/* File names and variables for bison,
Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef FILES_H_
# define FILES_H_
/* File name specified with -o for the output file, or 0 if no -o. */
extern char *spec_outfile;
/* File name for the parser (i.e., the one above, or its default.) */
extern char *parser_file_name;
/* For -a. */
extern const char *spec_name_prefix;
/* File name pfx specified with -b, or 0 if no -b. */
extern char *spec_file_prefix;
/* --verbose. */
extern char *spec_verbose_file;
/* File name specified for the output VCG graph. */
extern char *spec_graph_file;
/* File name specified with --defines. */
extern char *spec_defines_file;
/* Read grammar specifications. */
extern FILE *finput;
/* Output all the action code; precise form depends on which parser. */
extern struct obstack action_obstack;
/* If semantic parser, output a .h file that defines YYSTYPE... */
extern struct obstack attrs_obstack;
/* ... and output yyguard, containing all the guard code. */
extern struct obstack guard_obstack;
/* The verbose output. */
extern struct obstack output_obstack;
extern char *infile;
extern char *attrsfile;
void compute_output_file_names PARAMS((void));
FILE *xfopen PARAMS ((const char *name, const char *mode));
int xfclose PARAMS ((FILE *ptr));
/* Compute the double inclusion guard's name. */
char *compute_header_macro PARAMS ((void));
const char *skeleton_find PARAMS ((const char *envvar,
const char *skeleton_name));
#endif /* !FILES_H_ */