mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
Let's use c++/glr to demonstrate custom error messages in C++ (not just in glr2.cc). * examples/c++/glr/c++-types.yy (report_syntax_error): New. * examples/c++/glr/c++-types.test: Adjust. * examples/c/bistromathic/parse.y: Comment changes. * tests/local.at (AT_YYERROR_DEFINE(c++)): Use a nicer way to print the lookakead's name.
69 lines
2.3 KiB
Markdown
69 lines
2.3 KiB
Markdown
# Examples in C++
|
|
|
|
This directory contains examples of Bison grammar files in C++.
|
|
|
|
You can run `make` to compile these examples. And `make clean` to tidy
|
|
afterwards.
|
|
|
|
## simple.yy - Simple example in C++14
|
|
A very simple example in C++, based on variants and symbol constructors.
|
|
Variants allow to use any C++ type as semantic value type, and symbol
|
|
constructors ensure consistency between declared token kind and effective
|
|
semantic value.
|
|
|
|
Run as `./simple`.
|
|
|
|
Extracted from the documentation: [A Simple C++
|
|
Example](https://www.gnu.org/software/bison/manual/html_node/A-Simple-C_002b_002b-Example.html).
|
|
|
|
## variant.yy - Self-contained example in C++98
|
|
A variation of simple.yy, in C++98.
|
|
|
|
Run as `./variant`.
|
|
|
|
## variant-11.yy - Self-contained example in modern C++
|
|
Another variation of simple.yy, closely related to the previous one, but
|
|
exhibiting support for C++11's move semantics.
|
|
|
|
Run as `./variant` or `./variant NUMBER`.
|
|
|
|
## calc++ - A Complete C++ Example
|
|
A fully featured C++ version of the canonical example for parsers: a
|
|
calculator. Also uses Flex for the scanner.
|
|
|
|
Don't look at this example first: it is fully featured and can serve as a
|
|
starting point for a clean parser in C++. The previous examples are better
|
|
introductory examples, and the C examples are also useful introductory
|
|
examples.
|
|
|
|
Extracted from the documentation: [A Complete C++
|
|
Example](https://www.gnu.org/software/bison/manual/html_node/A-Complete-C_002b_002b-Example.html).
|
|
|
|
## glr
|
|
|
|
This example demonstrates the use of GLR parsers to handle (local)
|
|
ambiguities in the C++ language. See the node "Merging GLR Parses" in
|
|
Bison's documentation.
|
|
|
|
It uses (Bison) variants to store objects as semantic values. It also
|
|
demonstrates custom error messages in C++.
|
|
|
|
<!---
|
|
|
|
Local Variables:
|
|
fill-column: 76
|
|
ispell-dictionary: "american"
|
|
End:
|
|
|
|
Copyright (C) 2018-2021 Free Software Foundation, Inc.
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
|
any later version published by the Free Software Foundation; with no
|
|
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
|
Texts. A copy of the license is included in the "GNU Free
|
|
Documentation License" file as part of this distribution.
|
|
|
|
LocalWords: mfcalc calc parsers yy ispell american
|
|
--->
|