bison-patches
[Top][All Lists]
Advanced

[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}])
 
 
 # -------------------- #




reply via email to

[Prev in Thread] Current Thread [Next in Thread]