mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
`bison ', use m4_index instead of m4_substr since chopping up a string containing M4-special characters causes problems here. Fix a couple of bugs related to special characters in user-specified file names, and make it easier for skeletons to compute output file names with the same file name prefix as Bison-computed output file names. * data/glr.cc, data/push.c, data/yacc.c: In @output, use b4_parser_file_name and b4_spec_defines_file instead of @output_parser_name@ and @output_header_name@, which are now redundant. * data/glr.c, data/lalr1.cc: Likewise. Also, in header #include's, use b4_parser_file_name, b4_spec_defines_file, and the new @basename(FILENAME@) instead of @output_parser_name@ and @output_header_name@, which inappropriately escaped the file names as C string literals. * src/files.c (all_but_ext): Remove static qualifier. (compute_output_file_names): Move `free (all_but_ext)' to... (output_file_names_free): ... here since all_but_ext is needed later. * src/files.h (all_but_ext): Extern. * src/muscle_tab.h (MUSCLE_INSERT_STRING_RAW): New macro that does exactly what MUSCLE_INSERT_STRING used to do. (MUSCLE_INSERT_STRING): Use MUSCLE_OBSTACK_SGROW so that M4-special characters are escaped properly. * src/output.c (prepare): Define muscle file_name_all_but_ext as all_but_ext. For pkgdatadir muscle, maintain previous functionality by using MUSCLE_INSERT_STRING_RAW instead of MUSCLE_INSERT_STRING. The problem is that b4_pkgdatadir is used inside m4_include in the skeletons, so digraphs would never be expanded. Hopefully no one has M4-special characters in his Bison installation path. * src/scan-skel.l: Don't parse @output_header_name@ and @output_parser_name@ anymore since they're now redundant. In @output, use decode_at_digraphs. Parse a new @basename command that invokes last_component. (decode_at_digraphs): New. (BASE_QPUTS): Remove unused. * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): New macro. (Output file name): New tests.
-*- outline -*- This directory contains Bison skeletons: the general shapes of the different parser kinds, that are specialized for specific grammars by the bison program. Currently, there are only three supported skeletons: - yacc.c It used to be named bison.simple: it corresponds to C Yacc compatible LALR(1) parsers. - lalr1.cc Produces a C++ parser class. It is still very experimental, and not yet supported. Please, subscribe to bison-patches@gnu.org. - glr.c A Generalized LR C parser based on Bison's LALR(1) tables. These skeletons are the only ones supported by the Bison team. Because the interface between skeletons and the bison program is not finished, *we are not bound to it*. In particular, Bison is not mature enough for us to consider that ``foreign skeletons'' are supported. ----- Copyright (C) 2002 Free Software Foundation, Inc. This file is part of GNU Bison. GNU 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. GNU 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.