5472 Commits

Author SHA1 Message Date
Akim Demaille e358222ba8 api.prefix: improve the documentation for YYDEBUG.
* doc/bison.texi: Explain how api.prefix is applied to YYDEBUG.
2012-07-05 12:41:08 +02:00
Akim Demaille 9dcb193aeb gnulib: update.
* bootstrap, gnulib: Update.
* cfg.mk (syntax-check): Don't check "error" usage in bison.texi.
2012-07-05 11:13:47 +02:00
Akim Demaille ccdc1577ef Merge remote-tracking branch 'origin/maint'
* origin/maint:
  tests: headers.at: strengthen.
  glr.cc: do not override C++ definitions by C macros.
  YYLLOC_DEFAULT: factor, and don't export it in headers.
  api.prefix: do not use #define to handle YYSTYPE_IS_TRIVIAL etc.
  tests: portability fixes.
  c++: fewer #includes in the headers.
  glr.cc: formatting changes.
  tests: more logs.
  api.prefix: also rename YYDEBUG.

Conflicts:
	data/c.m4
	data/glr.c
	data/glr.cc
	data/lalr1.cc
	data/yacc.c
2012-07-04 17:34:57 +02:00
Akim Demaille faff3bef5b tests: headers.at: strengthen.
* tests/headers.at (Several headers): Be stricter when checking
the exported macros.
2012-07-04 12:24:13 +02:00
Akim Demaille 53ab797db7 glr.cc: do not override C++ definitions by C macros.
* data/glr.c: here.
* data/glr.cc: Fix overquotation.
* tests/headers.at: Comment changes.
2012-07-04 12:24:13 +02:00
Akim Demaille 426903aa75 YYLLOC_DEFAULT: factor, and don't export it in headers.
* data/c++.m4, data/c.m4 (b4_yylloc_default_define): New.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it.
* data/glr.cc: Do not define YYLLOC_DEFAULT in the header file,
but in the implementation one.
2012-07-04 12:24:13 +02:00
Akim Demaille 9104636b03 api.prefix: do not use #define to handle YYSTYPE_IS_TRIVIAL etc.
The following mixture is insane:

  #define YYSTYPE_IS_TRIVIAL PREFIX_STYPE_IS_TRIVIAL
  #if (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)

since, of course YYSTYPE_IS_TRIVIAL is defined.  Instead we could
define YYSTYPE_IS_TRIVIAL as PREFIX_STYPE_IS_TRIVIAL only when the
later is defined, but let's avoid stacking CPP on top of M4: rather, use

  #if (defined PREFIX_STYPE_IS_TRIVIAL && PREFIX_STYPE_IS_TRIVIAL)

* data/glr.c, data/yacc.c: Use YYSTYPE_IS_TRIVIAL, YYSTYPE_IS_DECLARED,
YYLTYPE_IS_TRIVIAL and YYLTYPE_IS_DECLARED under their api.prefix-renamed
name.
2012-07-04 12:24:13 +02:00
Akim Demaille 1168b32295 tests: portability fixes.
Reported by Hydra.

* tests/headers.at (Several headers): Be sure to include config.h
in the files to compile.
2012-07-04 12:24:13 +02:00
Akim Demaille 771dc64324 c++: fewer #includes in the headers.
* data/lalr1.cc: Define YY_NULL in the *.cc file, it is not needed
in the header.
* data/location.cc: iosfwd suffices.
2012-07-04 12:24:13 +02:00
Akim Demaille a7385a21ce glr.cc: formatting changes.
* data/glr.cc: here.
2012-07-04 12:24:13 +02:00
Akim Demaille b142cfd128 tests: more logs.
* tests/headers.at (Several parsers): Here.
2012-07-04 12:24:13 +02:00
Akim Demaille 5f108727a1 api.prefix: also rename YYDEBUG.
The testsuite in master has shown weird errors for the "Mulitple
Parsers" tests: the caller of p5.parse() received some apparently
random value, while tracing p5.parse() showed that the function was
consistently returning 0.

It happens when mixing several parser headers, some generated without
%debug, others with.  In particular the C++ parser was generated with
%debug, i.e., with:

  #ifndef YYDEBUG
  # define YYDEBUG 1
  #endif

and compiled separatedly.  Yet, its header was included after the one
of another parser, this time without %debug, i.e., with

  #ifndef YYDEBUG
  # define YYDEBUG 0
  #endif

in its header.  As a result, the parser was compiled with YYDEBUG set,
but its header was used without.  Since the layout of the objects are
then completely different, boom.

Therefore, do not change the value of YYDEBUG.  Rather, use it as a
default value for <API.PREFIX>DEBUG.

* data/c.m4 (b4_YYDEBUG_define): New.
(b4_declare_yydebug): Rename as...
(b4_yydebug_declare): this, for consistency.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it.
* NEWS: Document it.
2012-07-04 12:24:12 +02:00
Akim Demaille ff34897041 formatting changes.
* data/lalr1.cc: here.
2012-07-02 10:28:36 +02:00
Akim Demaille dcb366b103 NEWS: spell fixes.
* NEWS: here.
Reported by Stefano Lattarini.
2012-07-02 09:58:56 +02:00
Akim Demaille 5458913aba Merge remote-tracking branch 'origin/maint'
* origin/maint:
  NEWS: spell check.
  api.prefix.

Conflicts:
	data/c.m4
	data/glr.cc
	data/lalr1.cc
	doc/bison.texi
2012-07-02 09:56:01 +02:00
Akim Demaille 242cc08e8d NEWS: spell check.
* NEWS: here.
2012-07-02 09:26:22 +02:00
Akim Demaille 4b3847c3c0 api.prefix.
* data/c.m4 (b4_api_prefix, b4_api_PREFIX): New.
(b4_prefix, b4_union_name, b4_token_enums, b4_declare_yylstype): Use them.
* data/glr.c, data/yacc.c, data/glr.cc, data/lalr1.cc: Use them to change
the prefix of exported preprocessor symbols.
* src/getargs.c (usage): Ditto.
* tests/headers.at (Several parsers): New.
* tests/local.at (AT_API_PREFIX): New.
AT_YYSTYPE, AT_YYLTYPE): Adjust.
* doc/bison.texi (Multiple Parsers): Move documentation of %name-prefix to...
(Table of Symbols): here.
(Multiple Parsers): Document api.prefix.
(%define Summary): Point to it.
Use @code for variable names.
(Bison Options): -p/--name-prefix are obsoleted.
* NEWS: Announce api.prefix.
2012-06-29 17:40:42 +02:00
Victor Santet 73370a9daa warnings: display warnings categories
* src/complain.c (error_message): Call 'warnings_print_categories'.
* src/gram.c (grammar_rules_useless_report): Display itself warning
category.
* tests/actions.at, tests/conflicts.at, tests/existing.at,
tests/input.at, tests/named-refs.at, tests/output.at, tests/reduce.at,
tests/regression.at, tests/skeletons.at: Adjust.
* NEWS: Document this.

Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
2012-06-29 16:35:34 +02:00
Victor Santet b640317060 warnings: be ready to print warnings categories
A function to print warnings categories, like -Wyacc, -Wother, etc.

* src/complain.h, src/complain.c (print_warning_categories): New function.
* src/output.c (ARRAY_CARDINALITY): Move it to file 'src/system.h'.
* src/complain.h (enum warnings): New value, 'silent', "complain"
must not display the warning type.
2012-06-29 16:34:22 +02:00
Akim Demaille 3e153163c7 maint: prepare forthcoming changes
* src/gram.c (rule_rhs_print): Do not print new line anymore.
(rule_print): Make it static.
* src/closure.c, src/derives.c, src/gram.c: Adjust.
2012-06-29 15:58:59 +02:00
Victor Santet 5ff5cf6700 style changes
* src/complain.c, src/reader.c, src/reduce.c, src/main.c:
Fix indentation.
Simplify a bit.
2012-06-29 15:35:26 +02:00
Akim Demaille 415b88231a regen. 2012-06-28 17:18:51 +02:00
Victor Santet 6fb8b25619 warnings: factoring: complaints
* src/complain.c (error_message): Accept warning categories (an integer) as
argument.
Location is a 'const location *' instead of 'location *'.
(ERROR_MESSAGE): Delete it.
* src/complain.c, src/complain.h (complains): New function.
(complain, complain_at, complain_at_indent): Generic functions for
complaints. Call 'complains'.
(warn_at, warn_at_indent, warn, yacc_at, midrule_value_at)
(fatal_at, fatal): Delete them. Adjust dependencies.
* src/complain.h (enum warnings): New fields 'complaint' and 'fatal'.
* bootstrap.conf (XGETTEXT_OPTIONS): Adjust.
2012-06-28 17:18:45 +02:00
Victor Santet d0f11c1b62 warnings: move them to complain.c.
* src/getargs.h, src/getargs.c (warnings, warnings_flags): Move to...
* src/complain.h, src/complain.c: Here.
2012-06-28 17:06:20 +02:00
Victor Santet 327db05b22 warnings: rename the categories
Forthcoming changes will use the warning categories much more often,
so shortening them will improve readability.

* src/complain.c, src/complain.h, src/conflicts.c,
* src/getargs.c, src/getargs.h, src/gram.c (enum warnings):
s/warnings_/W/g.
2012-06-28 17:00:30 +02:00
Akim Demaille f124616490 fix merge.
* data/bison.m4: Use b4_error_verbose_if after it was defined.
2012-06-28 17:00:21 +02:00
Akim Demaille 7aaaad6c6d Merge remote-tracking branch 'origin/maint'
* origin/maint:
  tests: use the generalized default yylex.
  tests: AT_YYERROR_DEFINE: prepare for list of ints.
  skeletons: no longer define YYLSP_NEEDED.
  c++: do not export YYTOKEN_TABLE and YYERROR_VERBOSE.

Conflicts:
	data/c.m4
	data/glr.cc
	data/lalr1.cc
	doc/bison.texi
	tests/regression.at
2012-06-28 15:42:00 +02:00
Akim Demaille 087dcd7868 tests: use the generalized default yylex.
* tests/actions.at, tests/glr-regression.at, tests/regression.at: here.
2012-06-28 15:01:36 +02:00
Akim Demaille 95361618de tests: AT_YYERROR_DEFINE: prepare for list of ints.
* tests/local.at (AT_YYERROR_DEFINE): Don't add quotes, check their
presence to detect char/int types.
* tests/actions.at, tests/conflicts.at, tests/glr-regression.at,
* tests/push.at, tests/regression.at: Adjust.
2012-06-28 15:01:36 +02:00
Akim Demaille 694af10cb7 skeletons: no longer define YYLSP_NEEDED.
* data/c.m4, data/glr.cc: here.
* NEWS, TODO: Adjust.
2012-06-27 10:03:23 +02:00
Akim Demaille 258cddbc36 c++: do not export YYTOKEN_TABLE and YYERROR_VERBOSE.
* src/output.c (prepare_symbols): Do not define b4_token_table.
(prepare): Define b4_token_table_flag.
* data/bison.m4 (b4_token_table_if): New.
Arm it when error-verbose.
* data/glr.c, data/yacc.c (YYTOKEN_TABLE): Remove.
Use m4.
* data/lalr1.cc: Likewise.
(YYERROR_VERBOSE): Remove.
* NEWS, doc/bison.texi: Document this.
2012-06-27 10:03:21 +02:00
Akim Demaille 22b081deb7 Merge remote-tracking branch 'origin/maint'
* origin/maint:
  maint: use *.texi.

Conflicts:
	doc/Makefile.am
	examples/calc++/Makefile.am
2012-06-26 17:14:36 +02:00
Akim Demaille 9bcffa0c13 maint: use *.texi.
This is more consistent with the other packages, and Automake-NG
supports only *.texi.

* doc/bison.texinfo: Rename as...
* doc/bison.texi: this.
* doc/Makefile.am, examples/calc++/Makefile.am: Adjust.
2012-06-26 16:55:23 +02:00
Akim Demaille 297e263a00 Merge remote-tracking branch 'origin/maint'
* origin/maint:
  tests: do not output m4 set up.
  tests: use the generic yyerror function.
  tests: use assert instead of plain abort.
  tests: improve the generic yylex implementation.
  tests: generalize the compilation macros.
  tests: fix confusion between api.prefix and name-prefix.
  maint: gitignores.
  yacc: work around the ylwrap limitation.

Conflicts:
	NEWS
	tests/local.at
2012-06-26 16:44:59 +02:00
Victor Santet ea9a35c605 warnings: raise warning for useless printers or destructors
* src/scan-code.h (code_props): Add field 'is_used'.
(CODE_PROPS_NONE_INIT): Adjust.
* src/scan-code.l (code_props_plain_init, code_props_symbol_action_init)
(code_props_rule_action_init): Instead of implementing several
times the initialization of the code_props structures,
use code_props_none_init.
* src/symtab.c (symbol_check_defined): If a symbol does not have a
destructor (resp. printer) but has a type which has a destructor (resp.
printer), then set field 'is_used' to true.
(semantic_type_check_defined): If a type has a destructor (resp. printer)
but all symbols of this type have already a destructor (resp. printer),
then raise a warning.
* tests/input.at (Useless printers or destructors): New.

Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
2012-06-26 15:57:46 +02:00
Akim Demaille a32a2d57a5 tests: do not output m4 set up.
* tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS):
Use a diversion to avoid outputting comments etc.
Removes 17k lines from testsuite (10% of the number of lines).
2012-06-26 14:07:34 +02:00
Akim Demaille 8d6c1b5e85 tests: use the generic yyerror function.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Factor.
Use AT_YYERROR_DEFINE.
Therefore, instead of using stdout, use and check stderr.
* tests/glr-regression.at (Uninitialized location when reporting ambiguity):
Use AT_YYERROR_DEFINE.
2012-06-26 13:55:50 +02:00
Akim Demaille 77519a7d18 tests: use assert instead of plain abort.
* tests/actions.at, tests/calc.at, tests/conflicts.at,
* tests/cxx-type.at, tests/glr-regression.at, tests/input.at,
* tests/named-refs.at, tests/regression.at, tests/torture.at,
* tests/local.at:
Prefer assert to abort.
2012-06-26 13:55:50 +02:00
Akim Demaille 0e16927b48 tests: improve the generic yylex implementation.
* tests/local.at (AT_YYSTYPE, AT_YYLTYPE): New.
(AT_YYLEX_FORMALS): Use them.
(AT_YYLEX_DEFINE): Be independent of the location implementation.
2012-06-26 13:55:49 +02:00
Akim Demaille 91ce0b3a66 tests: generalize the compilation macros.
* tests/local.at (AT_COMPILE, AT_COMPILE_CXX): If OUTPUT ends with ".o",
then append the "natural" extension for the input file (.c or .cc).
If there is no source, pass -c.
* tests/headers.at, tests/input.at, tests/regression.at: Adjust.
2012-06-26 13:55:49 +02:00
Akim Demaille 837b769659 tests: fix confusion between api.prefix and name-prefix.
* tests/local.at (AT_NAME_PREFIX): Take api.prefix into account.
(AT_API_PREFIX): Rename as...
(AT_API_prefix): this.
Do not take %name-prefix into account.
Fix misuses.
2012-06-26 13:55:49 +02:00
Akim Demaille 5e01579ec0 maint: gitignores. 2012-06-26 13:55:49 +02:00
Victor Santet 9641b918ba warnings: useless semantic types
* src/symtab.h (symbol_list): Represent semantic types as structure
'semantic_type'.
* src/symlist.c (symbol_list_type_new): Allocate this structure.
(symbol_list_code_props_set): Set this semantic type's status to used if it
was not declared.
* src/symtab.c (semantic_types_sorted): New.
(semantic_type_new): Set the new semantic type's location appropriately.
(symbol_check_defined): If a symbol has a type, then set this type's status
to "declared".
(semantic_type_check_defined, semantic_type_check_defined_processor): Same
as symbol_check_defined and symbol_check_defined_processor, but for semantic
types.
(symbol_check_defined): Check semantic types usefulness.
* src/symtab.h (semantic_type): New fields 'location' and 'status'.
* src/symtab.h, src/symtab.c (semantic_type_new)
(semantic_type_from_uniqstr, semantic_type_get): Accept a location as a
supplementary argument.
* tests/input.at (Unassociated types used for printer of destructor): New.
* tests/c++.at (AT_CHECK_VARIANTS): Fix an error caught by this commit.
2012-06-25 11:29:14 +02:00
Akim Demaille 55d1006fce yacc: work around the ylwrap limitation.
* data/yacc.c (b4_shared_declarations): Include the header guards.
Do not include the header in the *.c file, duplicate it.
* NEWS (Future Changes): Extend, and announce the forthcoming change
about the use of the parser header.
2012-06-25 10:20:56 +02:00
Akim Demaille 423ca9b50e fix for printers and destructors.
The previous "code_props: factor more" patch sends has_%printer
etc. to m4, instead of has_printer.

* src/output.c (prepare_symbol_definitions): Fix value of pname.
2012-06-25 09:49:04 +02:00
Akim Demaille 6cf3716c31 Merge remote-tracking branch 'origin/maint'
* origin/maint:
  tests: more uniformity.
  tests: handle locations in a more generic way.
  tests: handle locations in the generic yyerror functions.
  tests: fix AT_CHECK_CALC.
  tests: improve infrastructure
  tests: factor.
  skeletons: minor style changes
  tests: AT_LANG.
  c skeletons: factor the declaration of yylloc and yylval.
  news: condemn YYPARSE_PARAM and YYLEX_PARAM.
  maint: regen.

Conflicts:
	tests/calc.at
	tests/local.at
	tests/regression.at
2012-06-25 09:46:34 +02:00
Akim Demaille 6a0655d9cd code_props: factor more.
* src/symtab.h, src/symtab.c (code_props_type_string): No longer static.
* src/output.c (CODE_PROPS): Remove, we can now iterate on both the
destructor and the printer.
(SET_KEY2): New.
2012-06-22 14:49:40 +02:00
Victor Santet 71da68b366 maint: factor the handling of %printer and %destructor
There is too much code duplication between %printer and %destructor.
We used to have two functions for each action: the first one for
destructors, the second one for printers. Factor using a
'code_props_type', and an array of code_props instead of two
members.

* src/symlist.h, src/symlist.c (symbol_list_destructor_set)
(symbol_list_printer_set): Fuse into...
(symbol_list_code_props_set): this.
* src/symtab.h, src/symtab.c (default_tagged_destructor)
(default_tagged_printer): Fuse into...
(default_tagged_code_props): this.
(default_tagless_destructor, default_tagless_printer)
(default_tagless_code_props): Likewise.
(code_props_type_string): new.
(symbol_destructor_set, symbol_destructor_get, semantic_type_destructor_set)
(default_tagged_destructor_set, default_tagless_destructor_set)
(symbol_printer_set, symbol_printer_get, semantic_type_printer_set)
(default_tagged_printer_set, default_tagless_printer_set): Replace by...
(symbol_code_props_set, symbol_code_props_get, semantic_type_code_props_set)
(default_tagged_code_props_set, default_tagless_code_props_set): these.
* src/parse-gram.y (grammar_declaration): Adjust.
* src/output.c (CODE_PROP, grammar_declaration): Ditto.
* src/reader.c (symbol_should_be_used): Ditto.
2012-06-22 14:36:08 +02:00
Akim Demaille 230a3db428 tests: more uniformity.
* tests/local.at (AT_LEX_FORMALS, AT_LEX_ARGS, AT_LEX_PRE_FORMALS)
(AT_LEX_PRE_ARGS): Rename as...
(AT_YYLEX_FORMALS, AT_YYLEX_ARGS, AT_YYLEX_PRE_FORMALS)
(AT_YYLEX_PRE_ARGS): these, for consistency.
(AT_API_PREFIX): Take %name-prefix into account.
(AT_YYLEX_PROTOTYPE): New.
Use it.
* tests/actions.at, tests/calc.at, tests/cxx-type.at: Adjust to
use them.
2012-06-22 12:08:02 +02:00
Akim Demaille 6d55954743 tests: handle locations in a more generic way.
* tests/local.at (AT_YYERROR_PROTOTYPE): New.
Use it.
* tests/cxx-type.at: Extensive revamp to use a more traditional
quotation scheme, and to use the generic yyerror implementation.
Prefer Autotest macros to CPP macros.
* tests/java.at: .
2012-06-22 11:34:37 +02:00