mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
Reported by Uxio Prego. https://lists.gnu.org/archive/html/help-bison/2018-11/msg00031.html We also need to move the unreachable 'goto' to a reachable place, otherwise clang complains about the code being unreachable anyway. See also https://bugs.llvm.org/show_bug.cgi?id=39736. Interestingly, we don't have to apply that trick to `#define YYCDEBUG if (false) std::cerr`, clang does not warn when the code comes from macro expansion. * configure.ac: Use -Wunreachable-code when supported. * data/lalr1.cc, data/yacc.c: Pacify clang's warning about `if (0)` by using a macro. Another possibility was to move this statement to a reachable place. * tests/actions.at, tests/c++.at: Avoid generating unreachable code.
This directory contains calc++, a simple Bison grammar file in C++. Please, read the corresponding chapter in the documentation: "A Complete C++ Example". It is also available on line (maybe with a different version of Bison): https://www.gnu.org/software/bison/manual/html_node/A-Complete-C_002b_002b-Example.html To use it, copy this directory into some work directory, and run `make` to compile the executable, and try it. It is a simple calculator which accepts several variable definitions, one per line, and then a single expression to evaluate. The program calc++ expects the file to parse as argument; pass `-` to read the standard input (and then hit <Ctrl-d>, control-d, to end your input). $ ./calc++ - one := 1 two := 2 three := 3 (one + two * three) * two * three <Ctrl-d> 42 You may pass `-p` to activate the parser debug traces, and `-s` to activate the scanner's. ----- Local Variables: mode: outline fill-column: 76 ispell-dictionary: "american" 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 MERCHANTABILITY Ctrl ispell american