[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
doc: clearly state that %yacc only makes sense with yacc.c
From: |
Akim Demaille |
Subject: |
doc: clearly state that %yacc only makes sense with yacc.c |
Date: |
Mon, 10 Feb 2020 08:03:47 +0100 |
%yacc is really the weirdest feature of Bison, it hardly makes sense (contrary
to --yacc). But none of them make sense with Java or D, or C++, etc.
commit 6f5465c917de40c7513a9cb92db6eeb350d7defb
Author: Akim Demaille <address@hidden>
Date: Sun Feb 9 15:33:21 2020 +0100
doc: clearly state that %yacc only makes sense with yacc.c
* doc/bison.texi: here.
* tests/calc.at: Stop testing %yacc with non yacc.c skeletons.
diff --git a/doc/bison.texi b/doc/bison.texi
index 35dbaff4..b66a981e 100644
--- a/doc/bison.texi
+++ b/doc/bison.texi
@@ -5821,7 +5821,10 @@ states and what is done for each type of lookahead token
in that state.
@deffn {Directive} %yacc
Pretend the option @option{--yacc} was given, i.e., imitate Yacc, including
-its naming conventions. @xref{Tuning the Parser}, for more.
+its naming conventions. Only makes sense with the @file{yacc.c}
+skeleton. @xref{Tuning the Parser}, for more.
+
+Of course @code{%yacc} is a Bison extension@dots{}
@end deffn
@@ -10924,11 +10927,10 @@ different diagnostics to be generated (it implies
@option{-Wyacc}), and may
change behavior in other minor ways. Most importantly, imitate Yacc's
output file name conventions, so that the parser implementation file is
called @file{y.tab.c}, and the other outputs are called @file{y.output} and
-@file{y.tab.h}. Also, if generating a deterministic parser in C, generate
-@code{#define} statements in addition to an @code{enum} to associate token
-numbers with token names. Thus, the following shell script can substitute
-for Yacc, and the Bison distribution contains such a script for
-compatibility with POSIX:
+@file{y.tab.h}. Also, generate @code{#define} statements in addition to an
+@code{enum} to associate token numbers with token names. Thus, the
+following shell script can substitute for Yacc, and the Bison distribution
+contains such a script for compatibility with POSIX:
@example
#! /bin/sh
@@ -10936,9 +10938,9 @@ bison -y "$@@"
@end example
The @option{-y}/@option{--yacc} option is intended for use with traditional
-Yacc grammars. If your grammar uses Bison extensions like
-@samp{%glr-parser}, Bison might not be Yacc-compatible even if this option
-is specified.
+Yacc grammars. This option only makes sense for the default C skeleton,
+@file{yacc.c}. If your grammar uses Bison extensions Bison cannot be
+Yacc-compatible, even if this option is specified.
@end table
@node Output Files
diff --git a/tests/calc.at b/tests/calc.at
index 1754b6f8..23dd2133 100644
--- a/tests/calc.at
+++ b/tests/calc.at
@@ -1061,26 +1061,25 @@ AT_CHECK_CALC_GLR([%locations %define api.location.type
{Span}])
AT_CHECK_CALC_GLR([%name-prefix "calc"])
AT_CHECK_CALC_GLR([%define api.prefix {calc}])
AT_CHECK_CALC_GLR([%verbose])
-AT_CHECK_CALC_GLR([%yacc])
AT_CHECK_CALC_GLR([%define parse.error verbose])
AT_CHECK_CALC_GLR([%define api.pure %locations])
AT_CHECK_CALC_GLR([%define parse.error verbose %locations])
-AT_CHECK_CALC_GLR([%define parse.error custom %locations %defines %name-prefix
"calc" %verbose %yacc])
-AT_CHECK_CALC_GLR([%define parse.error detailed %locations %defines
%name-prefix "calc" %verbose %yacc])
-AT_CHECK_CALC_GLR([%define parse.error verbose %locations %defines
%name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_GLR([%define parse.error custom %locations %defines %name-prefix
"calc" %verbose])
+AT_CHECK_CALC_GLR([%define parse.error detailed %locations %defines
%name-prefix "calc" %verbose])
+AT_CHECK_CALC_GLR([%define parse.error verbose %locations %defines
%name-prefix "calc" %verbose])
AT_CHECK_CALC_GLR([%debug])
-AT_CHECK_CALC_GLR([%define parse.error verbose %debug %locations %defines
%name-prefix "calc" %verbose %yacc])
-AT_CHECK_CALC_GLR([%define parse.error verbose %debug %locations %defines
%define api.prefix {calc} %define api.token.prefix {TOK_} %verbose %yacc])
+AT_CHECK_CALC_GLR([%define parse.error verbose %debug %locations %defines
%name-prefix "calc" %verbose])
+AT_CHECK_CALC_GLR([%define parse.error verbose %debug %locations %defines
%define api.prefix {calc} %define api.token.prefix {TOK_} %verbose])
-AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug
%locations %defines %name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug
%locations %defines %name-prefix "calc" %verbose])
-AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug
%locations %defines %name-prefix "calc" %verbose %yacc %parse-param
{semantic_value *result}{int *count}{int *nerrs}])
-AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug
%locations %defines %define api.prefix {calc} %verbose %yacc %parse-param
{semantic_value *result}{int *count}{int *nerrs}])
+AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug
%locations %defines %name-prefix "calc" %verbose %parse-param {semantic_value
*result}{int *count}{int *nerrs}])
+AT_CHECK_CALC_GLR([%define api.pure %define parse.error verbose %debug
%locations %defines %define api.prefix {calc} %verbose %parse-param
{semantic_value *result}{int *count}{int *nerrs}])
-AT_CHECK_CALC_GLR([%no-lines %define api.pure %define parse.error verbose
%debug %locations %defines %define api.prefix {calc} %verbose %yacc
%parse-param {semantic_value *result}{int *count}{int *nerrs}])
+AT_CHECK_CALC_GLR([%no-lines %define api.pure %define parse.error verbose
%debug %locations %defines %define api.prefix {calc} %verbose %parse-param
{semantic_value *result}{int *count}{int *nerrs}])
# ---------------------- #
@@ -1099,18 +1098,18 @@ AT_CHECK_CALC_LALR1_CC([])
AT_CHECK_CALC_LALR1_CC([%locations])
AT_CHECK_CALC_LALR1_CC([%locations], [$NO_EXCEPTIONS_CXXFLAGS])
AT_CHECK_CALC_LALR1_CC([%locations %define api.location.type {Span}])
-AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose
%name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose
%name-prefix "calc" %verbose])
-AT_CHECK_CALC_LALR1_CC([%locations %define parse.error verbose %define
api.prefix {calc} %verbose %yacc])
-AT_CHECK_CALC_LALR1_CC([%locations %define parse.error verbose %debug
%name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_LALR1_CC([%locations %define parse.error verbose %define
api.prefix {calc} %verbose])
+AT_CHECK_CALC_LALR1_CC([%locations %define parse.error verbose %debug
%name-prefix "calc" %verbose])
-AT_CHECK_CALC_LALR1_CC([%locations %define parse.error verbose %debug %define
api.prefix {calc} %verbose %yacc])
-AT_CHECK_CALC_LALR1_CC([%locations %define parse.error verbose %debug %define
api.prefix {calc} %define api.token.prefix {TOK_} %verbose %yacc])
+AT_CHECK_CALC_LALR1_CC([%locations %define parse.error verbose %debug %define
api.prefix {calc} %verbose])
+AT_CHECK_CALC_LALR1_CC([%locations %define parse.error verbose %debug %define
api.prefix {calc} %define api.token.prefix {TOK_} %verbose])
-AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose %debug
%name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result}{int
*count}{int *nerrs}])
+AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose %debug
%name-prefix "calc" %verbose %parse-param {semantic_value *result}{int
*count}{int *nerrs}])
-AT_CHECK_CALC_LALR1_CC([%define parse.error verbose %debug %define api.prefix
{calc} %verbose %yacc %parse-param {semantic_value *result}{int *count}{int
*nerrs}])
-AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose %debug
%define api.prefix {calc} %verbose %yacc %parse-param {semantic_value
*result}{int *count}{int *nerrs}])
+AT_CHECK_CALC_LALR1_CC([%define parse.error verbose %debug %define api.prefix
{calc} %verbose %parse-param {semantic_value *result}{int *count}{int *nerrs}])
+AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose %debug
%define api.prefix {calc} %verbose %parse-param {semantic_value *result}{int
*count}{int *nerrs}])
AT_CHECK_CALC_LALR1_CC([%defines %locations %define api.location.file none])
AT_CHECK_CALC_LALR1_CC([%defines %locations %define api.location.file
"my-location.hh"])
@@ -1135,18 +1134,18 @@ m4_define([AT_CHECK_CALC_GLR_CC],
AT_CHECK_CALC_GLR_CC([])
AT_CHECK_CALC_GLR_CC([%locations])
AT_CHECK_CALC_GLR_CC([%locations %define api.location.type {Span}])
-AT_CHECK_CALC_GLR_CC([%defines %define parse.error verbose %name-prefix "calc"
%verbose %yacc])
-AT_CHECK_CALC_GLR_CC([%define parse.error verbose %define api.prefix {calc}
%verbose %yacc])
+AT_CHECK_CALC_GLR_CC([%defines %define parse.error verbose %name-prefix "calc"
%verbose])
+AT_CHECK_CALC_GLR_CC([%define parse.error verbose %define api.prefix {calc}
%verbose])
AT_CHECK_CALC_GLR_CC([%debug])
-AT_CHECK_CALC_GLR_CC([%define parse.error verbose %debug %name-prefix "calc"
%verbose %yacc])
-AT_CHECK_CALC_GLR_CC([%define parse.error verbose %debug %name-prefix "calc"
%define api.token.prefix {TOK_} %verbose %yacc])
+AT_CHECK_CALC_GLR_CC([%define parse.error verbose %debug %name-prefix "calc"
%verbose])
+AT_CHECK_CALC_GLR_CC([%define parse.error verbose %debug %name-prefix "calc"
%define api.token.prefix {TOK_} %verbose])
-AT_CHECK_CALC_GLR_CC([%locations %defines %define parse.error verbose %debug
%name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result}{int
*count}{int *nerrs}])
-AT_CHECK_CALC_GLR_CC([%locations %defines %define parse.error verbose %debug
%define api.prefix {calc} %verbose %yacc %parse-param {semantic_value
*result}{int *count}{int *nerrs}])
+AT_CHECK_CALC_GLR_CC([%locations %defines %define parse.error verbose %debug
%name-prefix "calc" %verbose %parse-param {semantic_value *result}{int
*count}{int *nerrs}])
+AT_CHECK_CALC_GLR_CC([%locations %defines %define parse.error verbose %debug
%define api.prefix {calc} %verbose %parse-param {semantic_value *result}{int
*count}{int *nerrs}])
-AT_CHECK_CALC_GLR_CC([%no-lines %locations %defines %define parse.error
verbose %debug %define api.prefix {calc} %verbose %yacc %parse-param
{semantic_value *result}{int *count}{int *nerrs}])
+AT_CHECK_CALC_GLR_CC([%no-lines %locations %defines %define parse.error
verbose %debug %define api.prefix {calc} %verbose %parse-param {semantic_value
*result}{int *count}{int *nerrs}])
# -------------------- #
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- doc: clearly state that %yacc only makes sense with yacc.c,
Akim Demaille <=