Akim Demaille [Sat, 11 Aug 2012 07:16:08 +0000 (09:16 +0200)]
minor refactoring: shorten variable names
* src/scan-skel.l (at_directive_argc, at_directive_argv)
(AT_DIRECTIVE_ARGC_MAX): Rename as...
(argc, argv, ARGC_MAX): these, as there is no possible confusion.
(flags): New.
(QPUTS): Remove, inline its only use.
Akim Demaille [Sat, 11 Aug 2012 07:02:19 +0000 (09:02 +0200)]
obstacks: simplifications
* src/system.h (obstack_finish0): New.
Use it to simplify several uses.
* src/muscle-tab.h (MUSCLE_INSERTF): New.
* src/muscle-tab.c: Use obstack_printf where simpler.
Akim Demaille [Fri, 10 Aug 2012 08:11:32 +0000 (10:11 +0200)]
minor refactoring in user code scanning
* src/scan-code.l (show_sub_message, show_sub_messages): Instead of a
Boolean, take a "warnings" argument.
Avoid storing printf-like format strings in a variable, so that GCC
can check them.
Akim Demaille [Fri, 3 Aug 2012 08:52:55 +0000 (10:52 +0200)]
Merge branch 'maint'
* origin/maint:
maint: post-release administrivia
version 2.6.2
NEWS: update.
yacc: remove trailing end of line at end of file
thanks: fix a contributor name
gnulib: update
tests: synch line -> syncline, for consistency
tests: synclines: style changes
tests: synclines: fix perl invocation
regen
c++: trailing end-of-lines in %parse-param
tests: simplify
* data/c.m4, data/glr.c, data/yacc.c (YYID): Remove.
No longer use ARGSUSED.
* src/getargs.c: Restore simpler inclusion of getopt.h (anyway, since
then we now use gnulib which certainly protects us from such issues).
Akim Demaille [Thu, 2 Aug 2012 12:11:07 +0000 (14:11 +0200)]
skeletons: simplify after knr removal
* data/c.m4 (b4_yydestruct_generate, b4_yy_symbol_print_generate):
They no longer need an argument, it has a single possible value.
* data/glr.c, data/yacc.c: Adjust.
Akim Demaille [Thu, 2 Aug 2012 10:01:54 +0000 (12:01 +0200)]
yacc: remove trailing end of line at end of file
There are still spurious spaces at the end of some lines. But this is
addressed in the master branch, and I am reluctant to try to backport
this.
* data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: here.
* tests/calc.at (AT_CHECK_SPACES): New.
Use it.
Be sure not to introduce trailing empty lines in the *.y files.
* NEWS: Doc it.
* cfg.mk (syntax-check): Remove the exception.
Akim Demaille [Wed, 1 Aug 2012 07:30:27 +0000 (09:30 +0200)]
tests: synclines: style changes
* tests/synclines.at (AT_TEST_SYNCLINE): Rename as...
(AT_TEST): this.
Use pushdef/popdef.
Formatting changes.
Use '+' instead of '*' where appropriate.
* src/parse-gram.y (add_param): No only skip ' ' and '\t', skip all
leading and trailing spaces.
* tests/regression.at (Lex and parse params): Check it.
* NEWS: Document it.
* maint:
use obstack_printf
scanner: restore a missing start condition
gnulib: update
maint: post-release administrivia
version 2.6.1
gnulib: update
maint: fix some syntax-check issues
tests: do not depend on __cplusplus to decide for C++ or C output
* tests/output.at (AT_CHECK_OUTPUT): It used to check that the
expected files are indeed generated, but it did not check that
there are no additional ones.
Do that, and adjust expectations (in particular alphabetical order).
lalr1.cc: location.hh and position.hh are not generated without %defines
* data/location.cc (b4_position_define, b4_location_define): New.
(location.hh, position.hh): Generate only if %defines.
* data/lalr1.cc: therefore, define these classes when locations are
needed, but headers are not generated.
* tests/output.at: Check that these files are not generated.
* NEWS: Document.
* data/glr.cc: Use b4_locations_if where appropriate.
* data/lalr1.cc: M4 quotation changes to highlight code duplication
with glr.cc.
* tests/calc.at: Check glr.cc with and without %location.
While at it, fuse multiple %parse-params into one.
* tests/actions.at: Simplify.
* NEWS: Doc this.
Some other wording changes.
$ flex src/scan-skel.l
src/scan-skel.l:145: multiple <<EOF>> rules for start condition SC_AT_DIRECTIVE_ARGS
src/scan-skel.l:145: multiple <<EOF>> rules for start condition SC_AT_DIRECTIVE_SKIP_WS
This is warning, and it seems there are no means to make it an error.
* src/scan-skel.l: Restore the start-condition INITIAL for an <<EOF>>
clause.
* cfg.mk: Nuke the following warnings which are confused by our
text reports (that state that the error token is number 256).
prohibit_magic_number_exit
../../doc/bison.texi:8170:error (256)
../../tests/conflicts.at:570:error (256)
../../tests/conflicts.at:673:error (256)
../../tests/conflicts.at:811:error (256)
../../tests/conflicts.at:1154:error (256)
../../tests/regression.at:281:error (256)
../../tests/regression.at:582:error (256)
maint.mk: use EXIT_* values rather than magic number
* origin/maint: (29 commits)
regen
synclines: remove spurious empty line
also support $<foo>$ in the %initial-action
skeletons: b4_dollar_pushdef and popdef to simpify complex definitions
regen
printer/destructor: translate only once
factor the handling of m4 escaping
news: schedule the removal of the ";" hack
style changes in the scanners
regen
support $<tag>$ in printers and destructors
scan-code: factor the handling of the type in $<TYPE>$
muscles: fix another occurrence of unescaped type name
glr.cc: fix the handling of yydebug
gnulib: update
formatting changes
tests: fix an assertion
tests: adjust to GCC 4.8, which displays caret errors
be sure to properly escape type names
obstack_quote: escape and quote for M4
muscles: shuffle responsabilities
muscles: make private functions static
muscles: rename private functions/macros
obstack_escape: escape M4 characters
remove dead macro
maint: style changes
doc: avoid problems with case insensitive file systems
configure: fix botched quoting
news: fix typo.
scan-code.l is already passing argument to b4_dollar_dollar for the
initial acton, but its definition (of b4_dollar_dollar) does not use
this argument.
Generalize this definition, and use it for the %initial-action too.
* data/c.m4 (b4_dollar_dollar_, b4_dollar_pushdef, b4_dollar_popdef):
Instead of expecting a pointer, require a value, and use ".".
Since they are now generic enough, move to...
* data/c-like.m4: this new file.
* data/c.m4, data/java.m4: Load it.
* data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: Use
b4_dollar_pushdef for the %initial-action.
* tests/actions.at: Check that.
* data/Makefile.am: Adjust.
* NEWS, doc/bison.texi: Document.
Currently "%printer {...} a b c d e f" translates the {...} six times.
Not only is this bad for time and space, it also issues six times the
same warnings.
* src/symlist.h, src/symlist.c (symbol_list_destructor_set)
(symbol_list_printer_set): Take the action as code_props instead of
const char *.
* src/parse-gram.y: Translate these actions here.
* src/scan-code.h: Comment change.
* tests/input.at: Check that warnings are issued only once.
The conversion from @ to @@ and so forth is coded is too many
different places. Factor, a bit.
* src/scan-code.l: Instead of duplicating the logic of obstack_escape,
use it.
It sure is less efficient, but the cost is negligible.
This allows to factor rules that are alike.
And to factor some start-condition clauses.
* tests/input.at (Stray $ or @): New.
* NEWS: Document it.
* src/scan-code.l, src/scan-skel.l: Use a more traditional indentation
style for start-conditions.
Prefer "continue" to a comment, for empty actions.
Strip useless {}.
Remove useless start-condition clauses.
* src/scan-code.l (SC_SYMBOL_ACTION): Accept $<tag>$, not just $$.
* data/c.m4 (b4_dollar_dollar_): New.
(b4_symbol_actions): Let b4_dollar_dollar use b4_dollar_dollar_.
* NEWS, doc/bison.texi: Document it.
* tests/actions.at: Check this for C and C++.
muscles: fix another occurrence of unescaped type name
* src/output.c (quoted_output): Split into...
(quoted_output, string_output): these.
Use the former when outputting a type_name.
* tests/input.at: Check this case.
* src/symtab.h: Comment changes.
* src/scan-code.l: Use obstack_quote when passing type_name to m4.
* tests/input.at (Code injection): New.
* NEWS: Document it.
Thanks to Paul Eggert for the wording.
* src/system.h (obstack_quote): New.
* src/muscle-tab.c: Use it instead of obstack_escape where applicable.
* src/scan-code.l: Since obstack_quote supports NULL, leave type_name
as NULL instead of defaulting to "".
* src/muscle-tab.c (MUSCLE_COMMON_DECODE, muscle_string_decode)
(muscle_location_decode): Not related to muscles, rename as...
(COMMON_DECODE, string_decode, location_decode): these.
* src/muscle-tab.h (MUSCLE_OBSTACK_SGROW): This is not related to
muscles, so move to, and rename as...
* src/system.h (obstack_escape): this.
Adjust dependencies.
doc: avoid problems with case insensitive file systems
makeinfo --html generates index.html, and the node "Index" will result
in Index.html. On case insensitive file systems, such as on Mac OS X
by default, this results in a single, invalid, file (Texinfo 4.13).
See http://lists.gnu.org/archive/html/bug-texinfo/2012-07/msg00032.html
* doc/bison.texi (Index): Rename as...
(Index of Terms): this.
* configure.ac: In the AC_SUBST call on 'VALGRIND_PREBISON'. Without
this change, when running ./configure, I see:
...
checking for valgrind... valgrind
./configure: line 35221: -q: command not found
checking for Java compiler... gcj -C -fsource=1.3 -ftarget=1.4
...
Currently they are treated in separated variables, contrary to other
<TYPE> code_props. This duplicates code (and messages for translators)
uselessly, as demonstrated by the fact that thanks to this patch, now
useless <*> and <> code_props are reported like the others.
* src/parse-gram.y (generic_symlist_item): Treat "<*>" and "<>" as regular
type tags.
* src/symlist.h, src/symlist.c (symbol_list_default_tagged_new)
(symbol_list_default_tagless_new,SYMLIST_DEFAULT_TAGGED)
(SYMLIST_DEFAULT_TAGLESS): Remove.
* src/symtab.h, src/symtab.c (default_tagged_code_props)
(default_tagless_code_props, default_tagged_code_props_set)
(default_tagless_code_props_set): Remove.
(symbol_code_props_get): Default to <*> or <>'s code_props.
* tests/actions.at: Complete expected errors: there are new warnings.
* tests/input.at: Likewise.
(Useless printers or destructors): Extend.
The logic to compute the %printer or %destructor to used (i.e., a
code_props) is implemented twice: one, of course, in
symbol_code_props_get, and another time in symbol_check_defined to
record the fact that a code_props is used (so that we can reported
unused ones). Let the former use the latter.
I would probably use "mutable" in C++ and keep these guys const,
but this is C. And casting away constness triggers warnings.
* src/scan-code.h, src/scan-code.l (code_props_none): Is not const.
* src/symtab.h, src/symtab.c (symbol_code_props_get): The symbol
is not const.
(symbol_check_defined): Use it.
Because I'm using a VPATH build with an absolute srcdir, I have
GRAM__USERS_AKIM_SRC_GNU_BISON_SRC_PARSE_GRAM_H. Before, I was using
a relative srcdir, and had GRAM_______SRC_PARSE_GRAM_H (coming from
../../). Let it be GRAM_SRC_PARSE_GRAM_H.
* tests/bison.in: Do not depend on the value of $top_srcdir for
Bison itself.
If we were to use relative paths from .c to .y, we would not have
this problem.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java, data/yacc.c:
Since the previous commit, b4_tokens_define and the like no longer need
b4_tokens.
* src/output.c (token_definitions_output): Remove.
output: use the token list to define the yytokentype
There are currently two systems used to pass information about tokens to
m4: the original one, and another, which is used for instance for
printers and destructors, variants etc. Move to using only the latter.
* data/bison.m4 (b4_symbol_map, b4_token_visible_if)
(b4_token_has_definition, b4_any_token_visible_if, b4_token_format): New.
* data/c++.m4, data/c.m4, data/glr.c, data/java.m4: Adjust to use them.