Files
bison/examples
Akim Demaille 744171ddbf yacc.c: push: initialize the pstate variables in pstate_new
Currently pstate_new does not set up its variables, this task is left
to yypush_parse.  This was probably to share more code with usual pull
parsers, where these (local) variables are indeed initialized by
yyparse.

But as a consequence yyexpected_tokens crashes at the very beginning
of the parse, since, for instance, the stacks are not even set up.
See https://lists.gnu.org/r/bison-patches/2020-03/msg00001.html.

The fix could have very simple, but the documentation actually makes
it very clear that we can reuse a pstate for several parses:

    After yypush_parse returns a status other than YYPUSH_MORE, the
    parser instance yyps may be reused for a new parse.

so we need to restore the parser to its pristine state so that (i) it
is ready to run the next parse, (ii) it properly supports
yyexpected_tokens for the next run.

* data/skeletons/yacc.c (b4_initialize_parser_state_variables): New,
extracted from the top of yyparse/yypush_parse.
(yypstate_clear): New.
(yypstate_new): Use it when push parsers are enabled.
Define after the yyps macros so that we can use the same code as the
regular pull parsers.
(yyparse): Use it when push parsers are _not_ enabled.

* examples/c/bistromathic/bistromathic.test: Check the completion on
the beginning of the line.
2020-03-05 07:13:23 +01:00
..
2020-01-05 10:26:35 +01:00
2020-01-05 10:26:35 +01:00
2020-01-05 10:26:35 +01:00
2020-01-05 10:26:35 +01:00
2020-02-29 12:22:31 +01:00

This directory contains examples of Bison grammar files, sorted per language.

Several of them come from the documentation, which should be installed together with Bison. The URLs are provided for convenience.

These examples come with a README and a Makefile. Not only can they be used to toy with Bison, they can also be starting points for your own grammars.

Please, be sure to read the C examples before looking at the other languages, as these examples are simpler.