mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
Rewrite to simplify the logic. (language_argmatch): Likewise. * doc/bison.texinfo (Decl Summary, Bison Options): Don't claim Java is supported. * src/complain.c (program_name): Remove decl; no longer needed. * src/main.c (program_name): Remove; now belongs to getargs. 2006-12-18 Paolo Bonzini <bonzini@gnu.org> * NEWS: Document %language. * data/Makefile.am (dist_pkgdata_DATA): Add c-skel.m4, c++-skel.m4. * data/c-skel.m4, data/c++-skel.m4: New files. * data/glr.c: Complain on push parsers. * doc/bison.texinfo (C++ Parser Interface): Prefer %language over %skeleton. (Directives): Document %language and %skeleton. (Command line): Document -L. * examples/extexi: Rewrite %require directive. * examples/calc++/Makefile.am: Pass VERSION to extexi. * src/files.c (compute_exts_from_gc): Look in language structure for .y extension. (compute_file_name_parts): Check whether .tab should be added. * src/getargs.c (valid_languages, skeleton_prio, language_prio): (language, skeleton_arg, language_argmatch): New. (long_options): Add --language. (getargs): Use skeleton_arg, add -L/--language. * src/getargs.h: Include location.h. (struct bison_language, language, skeleton_arg, language_argmatch): New. * src/output.c (prepare): Pick default skeleton from struct language. Don't dispatch C skeletons here. * src/parse-gram.y (PERCENT_LANGUAGE): New. (prologue_declaration): Add "%language" rule, use skeleton_arg. * src/scan-gram.l ("%language"): New rule. * tests/calc.at: Test %skeleton and %language. * tests/local.at (AT_SKEL_CC_IF): Look for %language. (AT_GLR_IF): Look for %skeleton "glr.cc". (AT_LALR1_CC_IF, AT_GLR_CC_IF): Rewrite. (AT_YACC_IF): Reject %language. 2006-12-18 Paul Eggert <eggert@cs.ucla.edu>
88 lines
3.0 KiB
Makefile
88 lines
3.0 KiB
Makefile
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
|
## Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
|
|
## This program 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 of the License, or
|
|
## (at your option) any later version.
|
|
|
|
## This program 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 this program; if not, write to the Free Software
|
|
## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
## 02110-1301 USA
|
|
|
|
## ------------------------------------- ##
|
|
## Running the bison from this tarball. ##
|
|
## ------------------------------------- ##
|
|
|
|
BISON = $(top_builddir)/tests/bison
|
|
BISON_IN = $(top_srcdir)/tests/bison.in
|
|
|
|
$(BISON): $(BISON_IN)
|
|
cd $(top_builddir)/tests && $(MAKE) $(AM_MAKEFLAGS) bison
|
|
|
|
## ------------ ##
|
|
## Extracting. ##
|
|
## ------------ ##
|
|
|
|
doc = $(top_srcdir)/doc/bison.texinfo
|
|
extexi = $(top_srcdir)/examples/extexi
|
|
# Extract in src.
|
|
$(calc_extracted): $(doc) $(extexi)
|
|
cd $(srcdir) && \
|
|
$(AWK) -f ../extexi -v VERSION="@VERSION@" \
|
|
../../doc/bison.texinfo -- calc++-parser.yy \
|
|
calc++-scanner.ll calc++.cc calc++-driver.hh calc++-driver.cc
|
|
|
|
|
|
## ------------------- ##
|
|
## Parser generation. ##
|
|
## ------------------- ##
|
|
|
|
BUILT_SOURCES = $(calc_extracted) $(calc_sources_generated)
|
|
CLEANFILES = $(srcdir)/*.output *.tmp
|
|
MAINTAINERCLEANFILES = $(srcdir)/*.stamp $(BUILT_SOURCES)
|
|
|
|
# Compile the parser and save cycles.
|
|
# This code comes from "Handling Tools that Produce Many Outputs",
|
|
# from the Automake documentation.
|
|
EXTRA_DIST = $(srcdir)/calc++-parser.stamp $(srcdir)/calc++-parser.yy
|
|
# Don't depend on $(BISON) otherwise we would rebuild these files
|
|
# in srcdir, including during distcheck, which is forbidden.
|
|
$(srcdir)/calc++-parser.stamp: $(srcdir)/calc++-parser.yy $(BISON_IN)
|
|
@rm -f calc++-parser.tmp
|
|
@touch calc++-parser.tmp
|
|
$(BISON) -d -ra -S lalr1.cc -o $(srcdir)/calc++-parser.cc \
|
|
$(srcdir)/calc++-parser.yy
|
|
@mv -f calc++-parser.tmp $@
|
|
|
|
$(calc_sources_generated): $(srcdir)/calc++-parser.stamp
|
|
@if test -f $@; then :; else \
|
|
rm -f $(srcdir)/calc++-parser.stamp && \
|
|
$(MAKE) $(AM_MAKEFLAGS) $(srcdir)/calc++-parser.stamp; \
|
|
fi
|
|
|
|
|
|
## --------------------------- ##
|
|
## Building & testing calc++. ##
|
|
## --------------------------- ##
|
|
|
|
check_PROGRAMS = calc++
|
|
|
|
calc_sources_extracted = $(srcdir)/calc++-scanner.ll $(srcdir)/calc++.cc \
|
|
$(srcdir)/calc++-driver.hh $(srcdir)/calc++-driver.cc
|
|
calc_extracted = $(calc_sources_extracted) $(srcdir)/calc++-parser.yy
|
|
calc_sources_generated = \
|
|
$(srcdir)/stack.hh $(srcdir)/position.hh $(srcdir)/location.hh \
|
|
$(srcdir)/calc++-parser.hh $(srcdir)/calc++-parser.cc
|
|
|
|
calc___SOURCES = $(calc_sources_extracted) $(calc_sources_generated)
|
|
|
|
TESTS = test
|
|
EXTRA_DIST += $(TESTS)
|