mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
* doc/gpl-3.0.texi: New file. * doc/gpl.texi: Remove. * COPYING, GNUmakefile, HACKING, Makefile.am, Makefile.cfg: * Makefile.maint, NEWS, PACKAGING, README, README-alpha: * README-hacking, TODO, bootstrap, bootstrap.conf: * configure.ac, data/Makefile.am, data/README, data/bison.m4: * data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4: * data/glr.c, data/glr.cc, data/java-skel.m4, data/java.m4: * data/lalr1.cc, data/lalr1.java, data/location.cc: * data/push.c, data/yacc.c, data/m4sugar/m4sugar.m4: * djgpp/Makefile.maint, djgpp/README.in, djgpp/config.bat: * djgpp/config.sed, djgpp/config.site, djgpp/config_h.sed: * djgpp/djunpack.bat, djgpp/subpipe.c, djgpp/subpipe.h: * djgpp/testsuite.sed, doc/Makefile.am, doc/bison.texinfo: * doc/fdl.texi, doc/refcard.tex, etc/Makefile.am, etc/README: * etc/bench.pl.in, examples/Makefile.am, examples/extexi: * examples/calc++/Makefile.am, lib/Makefile.am, lib/abitset.c: * lib/abitset.h, lib/bbitset.h, lib/bitset.c, lib/bitset.h: * lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c: * lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h: * lib/ebitset.c, lib/ebitset.h, lib/get-errno.c: * lib/get-errno.h, lib/lbitset.c, lib/lbitset.h: * lib/libiberty.h, lib/main.c, lib/subpipe.c, lib/subpipe.h: * lib/timevar.c, lib/timevar.def, lib/timevar.h: * lib/vbitset.c, lib/vbitset.h, lib/yyerror.c: * m4/c-working.m4, m4/cxx.m4, m4/m4.m4, m4/subpipe.m4: * m4/timevar.m4, src/LR0.c, src/LR0.h, src/Makefile.am: * src/assoc.c, src/assoc.h, src/closure.c, src/closure.h: * src/complain.c, src/complain.h, src/conflicts.c: * src/conflicts.h, src/derives.c, src/derives.h, src/files.c: * src/files.h, src/flex-scanner.h, src/getargs.c: * src/getargs.h, src/gram.c, src/gram.h, src/graphviz.c: * src/lalr.c, src/lalr.h, src/location.c, src/location.h: * src/main.c, src/muscle_tab.c, src/muscle_tab.h: * src/nullable.c, src/nullable.h, src/output.c, src/output.h: * src/parse-gram.c, src/parse-gram.h, src/parse-gram.y: * src/print.c, src/print.h, src/print_graph.c: * src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c: * src/reduce.h, src/relation.c, src/relation.h: * src/revision.h, src/scan-code.h, src/scan-code.l: * src/scan-gram.h, src/scan-gram.l, src/scan-skel.h: * src/scan-skel.l, src/state.c, src/state.h, src/symlist.c: * src/symlist.h, src/symtab.c, src/symtab.h, src/system.h: * src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h: * tests/Makefile.am, tests/actions.at, tests/c++.at: * tests/calc.at, tests/conflicts.at, tests/cxx-type.at: * tests/existing.at, tests/glr-regression.at: * tests/headers.at, tests/input.at, tests/java.at: * tests/local.at, tests/output.at, tests/push.at: * tests/reduce.at, tests/regression.at, tests/sets.at: * tests/skeletons.at, tests/synclines.at, tests/testsuite.at: * tests/torture.at: Update to GPLv3.
138 lines
3.5 KiB
Awk
138 lines
3.5 KiB
Awk
# Extract all examples from the manual source. -*- AWK -*-
|
|
|
|
# This file is part of GNU Bison
|
|
# Copyright 1992, 2000, 2001, 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 3 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, see <http://www.gnu.org/licenses/>.
|
|
|
|
# This script is for use with any Awk that conforms to POSIX.
|
|
# It was derived from a similar script tests/generate.awk in GNU m4.
|
|
#
|
|
# Usage: extexi input-file.texi ... -- [FILES to extract]
|
|
BEGIN {
|
|
if (!output_dir)
|
|
output_dir = ".";
|
|
for (argc = 1; argc < ARGC; ++argc)
|
|
if (ARGV[argc] == "--")
|
|
break;
|
|
for (i = argc + 1; i < ARGC; ++i)
|
|
file_wanted[ARGV[i]] = 1;
|
|
ARGC = argc;
|
|
}
|
|
|
|
/^@node / {
|
|
if (seq > 0)
|
|
print "AT_CLEANUP";
|
|
|
|
split ($0, tmp, ",");
|
|
node = substr(tmp[1], 7);
|
|
seq = 0;
|
|
}
|
|
|
|
/^@comment file: / {
|
|
if (!file_wanted[$3])
|
|
message("ignoring " $3);
|
|
else
|
|
{
|
|
message("extracting " $3);
|
|
file = $3;
|
|
}
|
|
}
|
|
|
|
/^@example$/, /^@end example$/ {
|
|
if (!file)
|
|
next;
|
|
|
|
if ($0 ~ /^@example$/)
|
|
{
|
|
input = files_output[file] ? "\n" : "";
|
|
|
|
# FNR is starting at 0 instead of 1, and
|
|
# #line report the line number of the *next* line.
|
|
# => + 2.
|
|
# Note that recent Bison support it, but not Flex.
|
|
if (file ~ /\.[chy]*$/)
|
|
input = "#line " (FNR + 1) " \"" FILENAME "\"\n";
|
|
next;
|
|
}
|
|
|
|
if ($0 ~ /^@end example$/)
|
|
{
|
|
if (input == "")
|
|
fatal("no contents: " file);
|
|
|
|
input = normalize(input);
|
|
# No spurious end of line: use printf.
|
|
if (files_output[file])
|
|
# The parens around the output file seem to be required
|
|
# by awk on Mac OS X Tiger (darwin 8.4.6).
|
|
printf ("%s", input) >> (output_dir "/" file);
|
|
else
|
|
printf ("%s", input) > (output_dir "/" file);
|
|
close (output_dir "/" file);
|
|
files_output[file] = 1;
|
|
|
|
file = input = "";
|
|
next;
|
|
}
|
|
|
|
input = input $0 "\n";
|
|
}
|
|
|
|
|
|
# We have to handle CONTENTS line per line, since anchors in AWK are
|
|
# referring to the whole string, not the lines.
|
|
function normalize(contents, i, lines, n, line, res) {
|
|
# Remove the Texinfo tags.
|
|
n = split (contents, lines, "\n");
|
|
# We don't want the last field which empty: it's behind the last \n.
|
|
for (i = 1; i < n; ++i)
|
|
{
|
|
line = lines[i];
|
|
|
|
# Whole line commands.
|
|
if (line ~ /^@(c |comment|dots|end (ignore|group)|ignore|group)/)
|
|
# Gperf accepts empty lines as valid input!!!
|
|
if (file ~ /\.gperf$/)
|
|
continue;
|
|
else
|
|
line = "";
|
|
|
|
gsub (/"@value\{VERSION\}"/, "\"" VERSION "\"", line)
|
|
gsub (/^@result\{\}/, "", line);
|
|
gsub (/^@error\{\}/, "", line);
|
|
gsub ("@[{]", "{", line);
|
|
gsub ("@}", "}", line);
|
|
gsub ("@@", "@", line);
|
|
gsub ("@comment.*", "", line);
|
|
|
|
res = res line "\n";
|
|
}
|
|
return res;
|
|
}
|
|
|
|
|
|
function message(msg) {
|
|
if (! message_printed[msg])
|
|
{
|
|
print "extexi: " msg > "/dev/stderr";
|
|
message_printed[msg] = 1;
|
|
}
|
|
}
|
|
|
|
function fatal(msg) {
|
|
message(msg);
|
|
exit 1
|
|
}
|