diff options
-rw-r--r-- | README | 3 | ||||
-rw-r--r-- | data/README | 6 | ||||
-rw-r--r-- | examples/README | 39 | ||||
-rw-r--r-- | examples/local.mk | 7 | ||||
-rw-r--r-- | examples/variant.yy | 8 |
5 files changed, 55 insertions, 8 deletions
@@ -37,13 +37,12 @@ test case in each bug report. For any copyright year range specified as YYYY-ZZZZ in this package, note that the range specifies every single year in that closed interval. +----- Local Variables: mode: outline End: ------ - Copyright (C) 1992, 1998-1999, 2003-2005, 2008-2015, 2018 Free Software Foundation, Inc. diff --git a/data/README b/data/README index 629599cc..798750f7 100644 --- a/data/README +++ b/data/README @@ -1,5 +1,3 @@ --*- outline -*- - This directory contains data needed by Bison. * Skeletons @@ -52,6 +50,10 @@ into various formats. ----- +Local Variables: +mode: outline +End: + Copyright (C) 2002, 2008-2015, 2018 Free Software Foundation, Inc. This file is part of GNU Bison. diff --git a/examples/README b/examples/README new file mode 100644 index 00000000..1a0c65d1 --- /dev/null +++ b/examples/README @@ -0,0 +1,39 @@ +This directory contains examples of Bison grammar files. + +* mfcalc +A C example of a multi-function calculator. Extracted from the +documentation. + +* calc++ +A C++ version of the canonical example for parsers: a calculator. +Also uses Flex for the scanner. + +* variant.yy +A C++ examples that uses variants (they allow to use any C++ type as +semantic value type) and symbol constructors (they ensure consistency +between declared token type and effective semantic value). + +----- + +Local Variables: +mode: outline +End: + +Copyright (C) 2018 Free Software Foundation, Inc. + +This file is part of Bison, the GNU Compiler Compiler. + +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/>. + +# LocalWords: mfcalc calc parsers yy diff --git a/examples/local.mk b/examples/local.mk index 3a23d808..6dfbf2eb 100644 --- a/examples/local.mk +++ b/examples/local.mk @@ -41,6 +41,13 @@ $(extracted): %D%/extracted.stamp @test -f $@ || rm -f %D%/extracted.stamp @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) %D%/extracted.stamp +## ---------- ## +## Examples. ## +## ---------- ## + +examplesdir = $(docdir)/examples +dist_examples_DATA = %D%/README %D%/variant.yy + include %D%/calc++/local.mk include %D%/mfcalc/local.mk include %D%/rpcalc/local.mk diff --git a/examples/variant.yy b/examples/variant.yy index b6d97c9c..6c8e4635 100644 --- a/examples/variant.yy +++ b/examples/variant.yy @@ -88,13 +88,13 @@ result: ; list: - /* nothing */ { /* Generates an empty string list */ } -| list item { std::swap ($$, $1); $$.push_back ($2); } + %empty { /* Generates an empty string list */ } +| list item { std::swap ($$, $1); $$.push_back ($2); } ; item: - TEXT { std::swap ($$, $1); } -| NUMBER { $$ = string_cast ($1); } + TEXT { std::swap ($$, $1); } +| NUMBER { $$ = string_cast ($1); } ; %% |