]> git.saurik.com Git - bison.git/log
bison.git
15 years agoReally add autoconf as a submodule.
Akim Demaille [Mon, 8 Dec 2008 12:58:37 +0000 (13:58 +0100)] 
Really add autoconf as a submodule.

* submodules/autoconf: New.

15 years agoFix portability issue in the test suite.
Akim Demaille [Mon, 8 Dec 2008 09:26:38 +0000 (10:26 +0100)] 
Fix portability issue in the test suite.

* tests/local.at (AT_MATCHES_CHECK): New.
Based on Perl instead of Sed.  Sed has too many portability
pitfalls, not ever Sed is GNU Sed.
* tests/actions.at (Fix user actions without a trailing semicolon):
Use it.

15 years agoUpdate data/README.
Akim Demaille [Mon, 8 Dec 2008 08:16:08 +0000 (09:16 +0100)] 
Update data/README.

* data/README: Document glr.cc, lalr1.java, m4sugar and xslt.

15 years agoInstall autoconf as a submodule to get m4sugar.
Akim Demaille [Sun, 7 Dec 2008 21:14:11 +0000 (22:14 +0100)] 
Install autoconf as a submodule to get m4sugar.

* .gitmodules: Add submodules/autoconf.
* data/m4sugar/foreach.m4, data/m4sugar/m4sugar.m4: Now links into
submodules/autoconf.

15 years agoTest token.prefix in all the skeletons.
Akim Demaille [Sun, 7 Dec 2008 12:58:06 +0000 (13:58 +0100)] 
Test token.prefix in all the skeletons.

* data/java.m4 (b4_token_enum): Use the token.prefix.
* tests/local.at (AT_BISON_OPTION_PUSHDEFS): Define AT_TOKEN_PREFIX.
* tests/calc.at (_AT_DATA_CALC_Y): Use it.
Add checks for yacc.c, glr.c, lalr1.cc and glr.cc.
* tests/java.at: Comment changes.
(AT_CHECK_JAVA_MINIMAL): Define the END token.
(Java parser class and package names): Add token.prefix check.

15 years agoFix regeneration of atconfig.
Akim Demaille [Sun, 7 Dec 2008 12:44:05 +0000 (13:44 +0100)] 
Fix regeneration of atconfig.

* tests/local.mk (tests/atconfig): The rule was incorrect, but
remove it: now that there is no tests/Makefile.am, the top-level
Makefile properly updates atconfig when needed.

15 years agoImplement the FIXME that ends an user action with a semicolon
Di-an Jan [Mon, 8 Dec 2008 05:54:45 +0000 (21:54 -0800)] 
Implement the FIXME that ends an user action with a semicolon
if it seems necessary.

* src/scan-code.l (flex rules section): Flag cpp directive from
any `#' to the first unescaped end-of-line.  Semicolon is not
needed after `;', `{', '}', or cpp directives and is needed after
any other token (whitespaces and comments have no effect).
* tests/actions.at (Fix user actions without a trailing semicolon):
New test.
* tests/input.at (AT_CHECK_UNUSED_VALUES): Add semicolons to
to make user actions complete statements.
Adjust column numbers in error messages.
* tests/regression.at (Fix user actions without a trailing semicolon):
Remove.  Covered by new test.

15 years agoUpdate gnulib.
Akim Demaille [Fri, 5 Dec 2008 10:19:20 +0000 (11:19 +0100)] 
Update gnulib.

* gnulib: Update from master.

15 years agoAvoid compiler warning.
Eric Blake [Fri, 5 Dec 2008 23:16:15 +0000 (16:16 -0700)] 
Avoid compiler warning.

* src/output.c (muscle_insert_item_number_table): Delete unused
function.

Signed-off-by: Eric Blake <ebb9@byu.net>
15 years agoBuild testsuite with newer autoconf.
Eric Blake [Tue, 2 Dec 2008 17:59:17 +0000 (10:59 -0700)] 
Build testsuite with newer autoconf.

* tests/output.at (m4_expand): Don't override in newer autoconf,
where the underlying implementation changed.
* tests/cxx-type.at (_AT_RESOLVED_GLR_OUTPUT)
(_AT_RESOLVED_GLR_OUTPUT_WITH_LOC, _AT_AMBIG_GLR_OUTPUT)
(_AT_AMBIG_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR)
(_AT_VERBOSE_GLR_STDERR): Expand to double-quoted strings,
since some of them contain unbalanced ')'.

Signed-off-by: Eric Blake <ebb9@byu.net>
15 years agoFixes in the ChangeLog.
Akim Demaille [Mon, 1 Dec 2008 21:56:43 +0000 (22:56 +0100)] 
Fixes in the ChangeLog.

* ChangeLog: Fix typos.
Formatting changes.

15 years agoUse b4_symbol for printers and destructors everywhere.
Akim Demaille [Fri, 28 Nov 2008 21:03:29 +0000 (22:03 +0100)] 
Use b4_symbol for printers and destructors everywhere.

* data/bison.m4 (b4_symbol_action_location): New.
* data/c.m4 (b4_symbol_actions): Remove.
Adjust all callers to use by b4_symbol_foreach and the corresponding
b4_symbol_printer/destructor macro.
* data/glr.cc: Adjust.
* data/lalr1.java: Adjust the %destructor sanity check.
* src/output.c (symbol_code_props_output): Remove, we no longer
need the b4_symbol_printers/destructors tables.

15 years agoUse b4_symbol_case_.
Akim Demaille [Fri, 28 Nov 2008 20:26:09 +0000 (21:26 +0100)] 
Use b4_symbol_case_.

* data/lalr1.cc, data/bison.m4 (b4_symbol_action): Use
b4_symbol_case_.

15 years agoMove b4_symbol based macro to bison.m4.
Akim Demaille [Fri, 28 Nov 2008 20:09:54 +0000 (21:09 +0100)] 
Move b4_symbol based macro to bison.m4.

* data/lalr1.cc (b4_symbol_, b4_symbol, b4_symbol_if)
(b4_symbol_action, b4_symbol_destructor, b4_symbol_printer)
(b4_symbol_case_, b4_symbol_foreach, b4_type_action_)
(b4_type_foreach): Move to...
* data/bison.m4: Here.
* data/lalr1.cc (b4_symbol_action): Specialize for C++: use
b4_symbol_value_template instead of b4_symbol_value.

s b4_symbols in bison.m4

15 years agob4_symbol/type_foreach.
Akim Demaille [Thu, 27 Nov 2008 21:20:11 +0000 (22:20 +0100)] 
b4_symbol/type_foreach.

* data/lalr1.cc (b4_symbol_foreach, b4_type_foreach): New.
Use them.

15 years agoUse the symbol properties to output the printer/destructor for lalr1.cc.
Akim Demaille [Thu, 27 Nov 2008 20:47:11 +0000 (21:47 +0100)] 
Use the symbol properties to output the printer/destructor for lalr1.cc.

Instead of defining complex list of tuples to define various properties of
the symbols, we now prefer to define symbols as "structs" in m4: using the
symbol key (its number), and the property name, b4_symbol gives it value.
Use this to handle destructors and printers.

* src/output.c (CODE_PROP): New.
(prepare_symbol_definitions): Use it to define the printer and
destructor related attributes of the symbols.
* data/lalr1.cc (b4_symbol_actions): Rename as...
(b4_symbol_action): this.
Use b4_symbol instead of 6 arguments.
(b4_symbol_printer, b4_symbol_destructor): New.
Use them instead of b4_symbol_actions.

15 years agoAvoid capturing variables too easily.
Akim Demaille [Thu, 27 Nov 2008 20:45:58 +0000 (21:45 +0100)] 
Avoid capturing variables too easily.

* src/muscle_tab.h (MUSCLE_INSERT_BOOL, MUSCLE_OBSTACK_SGROW): Use
v__ and p__ instead of v and p.

15 years agoRemove spurious empty line before syncline.
Akim Demaille [Thu, 27 Nov 2008 20:42:08 +0000 (21:42 +0100)] 
Remove spurious empty line before syncline.

* data/bison.m4 (b4_syncline): Don't output an empty line before
the output.

16 years agoConvert lib/Makefile.am into lib/local.mk.
Akim Demaille [Wed, 19 Nov 2008 07:24:47 +0000 (08:24 +0100)] 
Convert lib/Makefile.am into lib/local.mk.

The real problem is rather gnulib.mk, which itself is extracted from a
Makefile.am that gnulib expects to the "recursive".  The tool
prefix-gnulib-mk converts such a gnulib.mk to be non-recursive.  Also,
some AC_SUBST variables need to be adjusted.

* etc/prefix-gnulib-mk: New.
* bootstrap (slurp): Use it to convert further gnulib.mk.
* lib/Makefile.am: Rename as...
* lib/local.mk: this.
Adjust to be prefixed.
* Makefile.am, configure.ac: Adjust.
* src/local.mk (AM_CPPFLAGS): Extend it, don't define it.

16 years agos/_FLAGS/FLAGS/.
Akim Demaille [Wed, 26 Nov 2008 09:29:37 +0000 (10:29 +0100)] 
s/_FLAGS/FLAGS/.

* tests/local.mk (TESTSUITE_FLAGS, AUTOTEST_FLAGS): Rename as...
(TESTSUITEFLAGS, AUTOTESTFLAGS): these to compy with the GCS.
Reported by Eric Blake.

16 years agoUse b4_parser_tables_define in glr.cc.
Akim Demaille [Tue, 25 Nov 2008 21:01:53 +0000 (22:01 +0100)] 
Use b4_parser_tables_define in glr.cc.

* data/glr.c: Use b4_parser_tables_define instead of defining the
(deterministic integral) tables by hand.

16 years agoUse b4_parser_tables_define in Java.
Akim Demaille [Tue, 25 Nov 2008 20:58:06 +0000 (21:58 +0100)] 
Use b4_parser_tables_define in Java.

* data/java.m4 (b4_typed_parser_table): Rename as...
(b4_typed_parser_table_define): this, for consistency.
Accept a comment as $4.
Move $2 into yy*_.
(b4_integral_parser_table): Rename as...
(b4_integral_parser_table_define): this.
* data/lalr1.java: Adjust all uses.
Use b4_parser_tables_define instead of generation by hand.

16 years agoPrepare the convergence bw C style and Java table generation.
Akim Demaille [Tue, 25 Nov 2008 20:38:45 +0000 (21:38 +0100)] 
Prepare the convergence bw C style and Java table generation.

* data/bison.m4 (b4_tables_map, b4_tables_declare)
(b4_tables_define): Rename as...
(b4_integral_parser_tables_map, b4_parser_tables_declare)
(b4_parser_tables_define): these.
* data/c.m4 (b4_table_define): Rename as...
(b4_integral_parser_table_define): this.
* data/lalr1.cc: Adjust.
(b4_table_define, b4_table_declare): Rename as...
(b4_integral_parser_table_define)
(b4_integral_parser_table_declare): these.
(yyrline_): Move the comment where it is actually used.
* data/yacc.c: Adjust.
(yyrline): Use b4_integral_parser_table_define.

16 years agoRegen.
Akim Demaille [Tue, 25 Nov 2008 20:30:08 +0000 (21:30 +0100)] 
Regen.

* src/parse-gram.h, src/parse-gram.c: Regen.

16 years agoFactor the generation of the (integral) tables bw yacc.c and lalr1.cc.
Akim Demaille [Tue, 25 Nov 2008 20:25:48 +0000 (21:25 +0100)] 
Factor the generation of the (integral) tables bw yacc.c and lalr1.cc.

* data/lalr1.cc (b4_tables_map): Move to...
* data/bison.m4: here.
Update the comment for yytable during the flight.
(b4_tables_declare, b4_tables_define): New.
* data/lalr1.cc: Use them.
* data/c.m4 (b4_table_define): New.
* data/yacc.c: Use b4_tables_define instead of output the tables
by hand.
* tests/regression.at (Web2c Actions): Adjust the expected output,
the order of the tables changed.

16 years agoGet rid of (yy)rhs and (yy)prhs.
Akim Demaille [Tue, 25 Nov 2008 20:09:20 +0000 (21:09 +0100)] 
Get rid of (yy)rhs and (yy)prhs.

These tables are no longer needed in the parsers, and they don't seem to
be useful.  They are not documented either.

* src/output.c (prepare_rules): Get rid of rhs and prhs.
Adjust the computation of (yy)r2.

16 years agoRule length is unsigned.
Akim Demaille [Tue, 25 Nov 2008 20:08:42 +0000 (21:08 +0100)] 
Rule length is unsigned.

* src/gram.h, src/gram.c (rule_rhs_length): Return a size_t.

16 years agoGet rid of lalr1-split.cc.
Akim Demaille [Tue, 25 Nov 2008 19:57:58 +0000 (20:57 +0100)] 
Get rid of lalr1-split.cc.

It was no longer maintainer.

* data/lalr1-split.cc: Remove.
* etc/bench.pl.in (bench_fusion_parser): Remove.
Adjust.

16 years agoUse yy* consistently.
Akim Demaille [Tue, 25 Nov 2008 19:55:01 +0000 (20:55 +0100)] 
Use yy* consistently.

* data/glr.c: Now that yyrhs no longer exists as a global
variable, rename local "rhs" variables into "yyrhs" for
consistency.

16 years agoGet rid of yyrhs and yyprhs in glr.c.
Akim Demaille [Tue, 25 Nov 2008 19:51:19 +0000 (20:51 +0100)] 
Get rid of yyrhs and yyprhs in glr.c.

* data/glr.c (yyrhs, yyprhs): Remove.
Instead, use the state stack and yystos.

16 years agoFlag glr tests.
Akim Demaille [Tue, 25 Nov 2008 19:50:28 +0000 (20:50 +0100)] 
Flag glr tests.

* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): If glr, declare it
as an Autotest keyword.

16 years agoPrefer TESTSUITE_FLAGS.
Akim Demaille [Tue, 25 Nov 2008 19:49:25 +0000 (20:49 +0100)] 
Prefer TESTSUITE_FLAGS.

TESTSUITEFLAGS is barely readable.

* tests/local.mk (TESTSUITE_FLAGS): Default to $(TESTSUITEFLAGS)
for backward compatibility.
Use the former instead of the latter.

16 years agoGet rid of yyrhs and yyprhs in larl1.java.
Akim Demaille [Mon, 24 Nov 2008 09:53:18 +0000 (10:53 +0100)] 
Get rid of yyrhs and yyprhs in larl1.java.

* data/lalr1.java (yyrhs_, yyprhs_): Remove.
(yy_reduce_print): Rather, use yystos_ and the state stack.

16 years agoFormatting changes.
Akim Demaille [Sun, 23 Nov 2008 07:47:51 +0000 (08:47 +0100)] 
Formatting changes.

16 years agoGet rid of yyrhs and yyprhs in yacc.c.
Akim Demaille [Sun, 23 Nov 2008 07:39:17 +0000 (08:39 +0100)] 
Get rid of yyrhs and yyprhs in yacc.c.

They were used to get the symbol types, given a rule number,  when
displaying the top of the stack before a reduction.  But the symbol type
is available from the state stack.  This has two be benefits: two tables
less in the parser (making it smaller), and a more consistent use of the
three stacks which will help to fuse them.

* data/yacc.c (yyprhs, yyrhs): Remove.
(YY_REDUCE_PRINT): Pass yyssp to yy_reduce_print.
(yy_reduce_print): Take yyssp as argument.
Use it, together with yystos, to get the symbol type.
* tests/regression.at (Web2c Report): Remove these tables from the
expected output.

16 years agob4_tables_map.
Akim Demaille [Sat, 22 Nov 2008 21:22:43 +0000 (22:22 +0100)] 
b4_tables_map.

The point is to factor the generation of the tables across skeletons.
This is language dependant.

* data/c.m4 (b4_comment_): New.
Should be usable to define how to generate tables independently of
the language.
(b4_c_comment): New.
(b4_comment): Bounce to b4_c_comment.
Now support $2 = [PREFIX] for indentation.
* data/lalr1.cc (b4_table_declare): Don't output a comment if
there is no comment.
Indent it properly when there is one.
Output the ending semicolon.
(b4_table_define): Space changes.
Output the ending semicolon.
(b4_tables_map): New.
Use it twice instead of declaring and defining the (integral)
tables by hand.

16 years agob4_table_declare.
Akim Demaille [Sat, 22 Nov 2008 20:48:33 +0000 (21:48 +0100)] 
b4_table_declare.

* data/lalr1.cc (b4_table_declare): New.
Use it to declare the tables defined with b4_table_define.
(b4_table_define): Declare a third arg to match b4_table_declare
signature.
Move all the comments around invocations of b4_table_define into
the invocations itselves.
Move things around to have the order for declarations and
definitions.

16 years agoFormatting changes.
Akim Demaille [Sat, 22 Nov 2008 20:47:17 +0000 (21:47 +0100)] 
Formatting changes.

* data/lalr1.java: here.

16 years agob4_args is more general than only C++.
Akim Demaille [Fri, 21 Nov 2008 20:41:47 +0000 (21:41 +0100)] 
b4_args is more general than only C++.

* data/lalr1.cc (b4_args, _b4_args): Move to...
* data/bison.m4: here.

16 years agoImplement no-XXX arguments for --warnings, --report, --trace.
Di-an Jan [Fri, 21 Nov 2008 21:09:16 +0000 (13:09 -0800)] 
Implement no-XXX arguments for --warnings, --report, --trace.

* src/getargs.c (flags_argmatch): Handles no-XXX.
Fix typo in doxygen comment.

16 years agoDisplay the changes in cross-options.texi.
Akim Demaille [Fri, 21 Nov 2008 20:21:52 +0000 (21:21 +0100)] 
Display the changes in cross-options.texi.

* build-aux/cross-options.pl ($sep): New, to separate items.
* doc/local.mk ($(CROSS_OPTIONS_TEXI)): Use diff to display the
changes.

16 years ago Improves options in the manual.
Di-an Jan [Thu, 20 Nov 2008 20:36:30 +0000 (12:36 -0800)] 
Improves options in the manual.
* doc/bison.texinfo (-g, -x): Add space before argument.
(Option Cross Key): Implement FIXME: listing directives also.
* build-aux/cross-options.pl:  Read from <STDIN> rather than <>.
(Short Option): Special case -d.  Put arguments inside @option.
(Bison Directive): Add column, automatically extracted from
src/scan-gram.l (actual name passed as the first argument)
with special case for %define.
* doc/local.mk (doc/cross-options.texi): Pass src/scan-gram.l
to build-aux/cross-options.pl.
* src/getargs.c (usage): Document limitations of cross-options.pl.
* src/scan-gram.l: Likewise.

16 years agoFix unexpanded macros in GLR defines file.
Joel E. Denny [Wed, 19 Nov 2008 04:46:50 +0000 (23:46 -0500)] 
Fix unexpanded macros in GLR defines file.

Reported by Csaba Raduly at
<http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00048.html>.
* THANKS (Csaba Raduly): Add.
* data/glr.c: Fix overquoting on b4_prefix for yylval and yylloc.
* tests/calc.at (_AT_DATA_CALC_Y): If %defines is specified, generate
lexer in a separate module that includes the defines file.
(AT_CHECK_CALC): From AT_FULL_COMPILE, request compilation of lexer
source.
* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_DEFINES_IF.
Adjust AT_LOC and AT_VAL to use AT_NAME_PREFIX.
(AT_BISON_OPTION_POPDEFS): Pop AT_DEFINES_IF.
(AT_DATA_SOURCE_PROLOGUE): New.
(AT_DATA_GRAMMAR_PROLOGUE): Use AT_DATA_SOURCE_PROLOGUE.
(AT_DATA_SOURCE): New.
(AT_FULL_COMPILE): Extend to support an additional source file.

16 years agoMore TODO.
Akim Demaille [Tue, 18 Nov 2008 13:35:21 +0000 (14:35 +0100)] 
More TODO.

* TODO: More short term issues.

16 years agoRegen.
Akim Demaille [Mon, 17 Nov 2008 07:49:35 +0000 (08:49 +0100)] 
Regen.

* src/parse-gram.h, src/parse-gram.c: Regen.

16 years agoUse b4_subtract where possible.
Akim Demaille [Mon, 17 Nov 2008 07:48:00 +0000 (08:48 +0100)] 
Use b4_subtract where possible.

* data/lalr1.cc (b4_subtract): Move to...
* data/bison.m4: here.
* data/glr.c (b4_rhs_data): Use it.
* data/yacc.c (b4_rhs_value, b4_rhs_location): Use it.

16 years agoRemove incorrect mode specification.
Akim Demaille [Sun, 16 Nov 2008 19:01:39 +0000 (20:01 +0100)] 
Remove incorrect mode specification.

* data/glr.cc: Don't pretend it's C code.

16 years agoSimplify last patch slightly.
Joel E. Denny [Mon, 17 Nov 2008 15:51:17 +0000 (10:51 -0500)] 
Simplify last patch slightly.

* src/getargs.c (getargs): Here.

16 years agoFix last warning from --enable-gcc-warnings.
Joel E. Denny [Mon, 17 Nov 2008 15:36:28 +0000 (10:36 -0500)] 
Fix last warning from --enable-gcc-warnings.

* src/getargs.c (getargs): Don't assign const address to non-const
pointer.

16 years agoDon't let maintainer-*-check targets force a version update.
Joel E. Denny [Mon, 17 Nov 2008 14:50:11 +0000 (09:50 -0500)] 
Don't let maintainer-*-check targets force a version update.

* cfg.mk (_is-dist-target): Implement.  maintainer-check* was already
handled.

16 years agoFix formatting and content of bison.texinfo menus
Di-an Jan [Mon, 17 Nov 2008 10:07:29 +0000 (11:07 +0100)] 
Fix formatting and content of bison.texinfo menus

* doc/bison.texinfo: Synchronize ``Detail Node Listing''.
Align menus.  Adjust word wrapping.  Use node names for menu names.
(Examples): Don't abbreviate node names.
(LocalWords): Remove abbreviations.
(Copying): Make description a sentence.
(Java Action Features): Remove period to match the rest of menu.

16 years agoHandles several --enable-gcc-warnings.
Di-an Jan [Mon, 17 Nov 2008 10:01:41 +0000 (11:01 +0100)] 
Handles several --enable-gcc-warnings.

* src/getargs.c (command_line_location): Set parameters to void.
* src/output.c (symbol_type_name_cmp): Make static.
(symbols_by_type_name): Set parameters to void.
(symbol_definitions_output): Remove unused parameter.  Rename as...
(prepare_symbol_definitions): this.
(muscles_output): Move symbol_definitions_output to...
(output): here as prepare_symbol_definitions.
* tests/c++.at (AT_CHECK_VARIANTS): Remove unused parameters of main.
(AT_CHECK_NAMESPACE): Make unused parameter lloc unnamed.

16 years agoUse AT_DATA_GRAMMAR for C++ variants compiled tests.
Di-an Jan [Mon, 17 Nov 2008 09:59:49 +0000 (10:59 +0100)] 
Use AT_DATA_GRAMMAR for C++ variants compiled tests.

* tests/c++.at (AT_CHECK_VARIANTS): Fixes tests 198-202.
Use AT_DATA_GRAMMAR instead of AT_DATA for compiled tests.

16 years agoFix ChangeLog.
Akim Demaille [Sun, 16 Nov 2008 18:52:33 +0000 (19:52 +0100)] 
Fix ChangeLog.

16 years agoAdd missing $(EXEEXT).
Akim Demaille [Sun, 16 Nov 2008 18:49:35 +0000 (19:49 +0100)] 
Add missing $(EXEEXT).

* doc/local.mk ($(CROSS_OPTIONS_TEXI)): The target is
"src/bison$(EXEEXT)".
Reported by Di-an Jan.

16 years agoUpdate ignores.
Akim Demaille [Sun, 16 Nov 2008 18:46:16 +0000 (19:46 +0100)] 
Update ignores.

* data/.cvsignore, data/.gitignore, examples/.cvsignore,
* examples/.gitignore:
Remove.
* build-aux/.cvsignore, build-aux/.gitignore, doc/.cvsignore,
* doc/.gitignore, etc/.cvsignore, etc/.gitignore, src/.cvsignore,
* src/.gitignore, tests/.cvsignore, tests/.gitignore:
Remove MAkefile and Makefile.in.

16 years agoUpdate TODO.
Akim Demaille [Sat, 15 Nov 2008 13:56:21 +0000 (14:56 +0100)] 
Update TODO.

* TODO: Update.

16 years agoFormatting changes.
Akim Demaille [Fri, 24 Oct 2008 01:05:27 +0000 (20:05 -0500)] 
Formatting changes.

* tests/input.at: here.

16 years agoRemove duplicate header inclusion.
Akim Demaille [Fri, 24 Oct 2008 01:02:52 +0000 (20:02 -0500)] 
Remove duplicate header inclusion.

* src/LR0.c: here.

16 years agoRegen.
Akim Demaille [Sat, 15 Nov 2008 13:42:37 +0000 (14:42 +0100)] 
Regen.

* src/parse-gram.h, src/parse-gram.c: Regen.

16 years agoFixes.
Akim Demaille [Sat, 15 Nov 2008 13:41:58 +0000 (14:41 +0100)] 
Fixes.

16 years agoSupport parametric types.
Akim Demaille [Fri, 24 Oct 2008 01:01:48 +0000 (20:01 -0500)] 
Support parametric types.

There are two issues to handle: first scanning nested angle bracket pairs
to support types such as std::pair< std::string, std::list<std::string> > >.

Another issue is to address idiosyncracies of C++: do not glue two closing
angle brackets together (otherwise it's operator>>), and avoid sticking
blindly a TYPE to the opening <, as it can result in '<:' which is a
digraph for '['.

* src/scan-gram.l (brace_level): Rename as...
(nesting): this.
(SC_TAG): New.
Implement support for complex tags.
(tag): Accept \n, but not <.
* data/lalr1.cc (b4_symbol_value, b4_symbol_value_template)
(b4_symbol_variant): Leave space around types as parameters.
* examples/variant.yy: Use nested template types and leading ::.
* src/parse-gram.y (TYPE, TYPE_TAG_ANY, TYPE_TAG_NONE, type.opt):
Rename as...
(TAG, TAG_ANY, TAG_NONE, tag.opt): these.
* tests/c++.at: Test parametric types.

16 years agoTest token.prefix.
Akim Demaille [Fri, 10 Oct 2008 15:04:23 +0000 (17:04 +0200)] 
Test token.prefix.

This is not sufficient, but we test at least that the make_SYMBOL
interface is not affected by token.prefix.  A more general test
will be implemented when the support of token.prefix is generalized
to more skeletons.

* tests/c++.at: One more variant test, using token.prefix.

16 years agoTest the make_TOKEN interface.
Akim Demaille [Fri, 10 Oct 2008 14:58:22 +0000 (16:58 +0200)] 
Test the make_TOKEN interface.

* tests/c++.at (AT_CHECK_VARIANTS): Require and use locations.
Factor the common code in yylex.
Use it to test "%define lex_symbol".

16 years agoFormatting change.
Akim Demaille [Fri, 10 Oct 2008 14:58:19 +0000 (16:58 +0200)] 
Formatting change.

16 years agoSimplify code for variants bench marks.
Akim Demaille [Fri, 10 Oct 2008 14:56:00 +0000 (16:56 +0200)] 
Simplify code for variants bench marks.

* etc/bench.pl.in (&generate_grammar_list): Define and use
location_type.
Factor the common code in yylex.

16 years agoBetter error message.
Akim Demaille [Wed, 22 Oct 2008 12:15:25 +0000 (07:15 -0500)] 
Better error message.

* bootstrap (find_tool): Fix the error message.

16 years agoUpdate variant.yy to newest interface.
Akim Demaille [Wed, 22 Oct 2008 11:27:42 +0000 (06:27 -0500)] 
Update variant.yy to newest interface.

* examples/variant.yy: Define lex_symbol.
Adjust.

16 years agoDon't use locations in variant.yy.
Akim Demaille [Wed, 22 Oct 2008 11:23:34 +0000 (06:23 -0500)] 
Don't use locations in variant.yy.

* examples/variant.yy: Adjust to not using locations.

16 years agoComment changes.
Akim Demaille [Tue, 23 Sep 2008 16:18:07 +0000 (18:18 +0200)] 
Comment changes.

* data/local.mk, etc/local.mk, examples/local.mk: Use Automake
comments for the license.

16 years agoRemove tests/Makefile.am.
Akim Demaille [Tue, 23 Sep 2008 14:25:45 +0000 (16:25 +0200)] 
Remove tests/Makefile.am.

* tests/Makefile.am: Rename as...
* tests/local.mk: this.
* Makefile.am, configure.ac: Adjust.
* Makefile.am (DISTCLEANFILES): Define.
(maintainer-check, maintainer-xml-check, maintainer-push-check):
Remove, we no longer need to bounce to the real targets.

16 years agoComment changes.
Akim Demaille [Tue, 23 Sep 2008 14:19:21 +0000 (16:19 +0200)] 
Comment changes.

16 years agodjgpp/local.mk.
Akim Demaille [Tue, 23 Sep 2008 14:18:36 +0000 (16:18 +0200)] 
djgpp/local.mk.

* Makefile.am (EXTRA_DIST): Move djgpp related part to...
* djgpp/local.mk: this new file.

16 years agoRemove doc/Makefile.am.
Akim Demaille [Tue, 23 Sep 2008 14:15:19 +0000 (16:15 +0200)] 
Remove doc/Makefile.am.

* doc/Makefile.am: Rename as...
* doc/local.mk: this.
Adjust paths
* Makefile.am, configure.ac: Adjust.
* Makefile.am (MOSTLYCLEANFILES): New.
* src/local.mk: Adjust.

16 years agoMove sc_tight_scope into maint.mk.
Akim Demaille [Tue, 23 Sep 2008 14:05:52 +0000 (16:05 +0200)] 
Move sc_tight_scope into maint.mk.

It does not work, and I don't know how it was supposed to work: it seems
to be looking for sources in the build tree.  I just moved it at a better
place, fixing it is still required.

* src/local.mk (echo): Remove.
(sc_tight_scope): Move to...
* maint.mk: here.

16 years agoRegen.
Akim Demaille [Sat, 15 Nov 2008 10:03:37 +0000 (11:03 +0100)] 
Regen.

* src/parse-gram.h, src/parse-gram.c: Regen.

16 years agoRemove src/Makefile.am.
Akim Demaille [Tue, 23 Sep 2008 13:54:56 +0000 (15:54 +0200)] 
Remove src/Makefile.am.

* src/Makefile.am: Rename as...
* src/local.mk: this.
Prefix all the paths with src/.
(AUTOMAKE_OPTIONS): Build object files in the sub dirs.
(AM_CPPFLAGS): Find find in builddir/src.
(YACC): Move the flags into...
(AM_YFLAGS): here.
* maint.mk (sc_tight_scope): Disable.
It used to bounce to the version in src/Makefile.am which is now
part of this very Makefile.
* Makefile.am, configure.ac: Adjust.
* src/scan-code-c.c, src/scan-code.l: We can no longer rely on
include "..." to find files "here": we are no longer in src/, so
qualify the includes with src/.
* doc/Makefile.am (PREPATH): No longer include the top_builddir
prefix.
(.x.1): Adjust to be able to create src/foo from the top level
Makefile, instead of going bounce to src/Makefile the creation of
foo.

16 years agoRemove useless variable.
Akim Demaille [Tue, 23 Sep 2008 13:45:03 +0000 (15:45 +0200)] 
Remove useless variable.

* doc/Makefile.am (srcsrcdir): Remove.

16 years agoRemove data/Makefile.am.
Akim Demaille [Tue, 23 Sep 2008 13:05:51 +0000 (15:05 +0200)] 
Remove data/Makefile.am.

* data/Makefile.am: Rename as...
* data/local.mk: this.
Adjust paths.
* Makefile.am, configure.ac: Adjust.

16 years agoRemove etc/Makefile.am.
Akim Demaille [Tue, 23 Sep 2008 13:02:44 +0000 (15:02 +0200)] 
Remove etc/Makefile.am.

* etc/Makefile.am: Rename as...
* etc/local.mk: this.
Adjust.
* Makefile.am, configure.ac: Adjust.

16 years agoRemove examples/local.mk.
Akim Demaille [Tue, 23 Sep 2008 13:00:06 +0000 (15:00 +0200)] 
Remove examples/local.mk.

examples/calc++/Makefile.am might be interesting to keep as is, since
it is an example in itself.

* examples/Makefile.am: Rename as...
* examples/local.mk: this.
Adjust.
* Makefile.am, configure.ac: Adjust.

16 years agoRemove build-aux/Makefile.am.
Akim Demaille [Tue, 23 Sep 2008 12:48:11 +0000 (14:48 +0200)] 
Remove build-aux/Makefile.am.

Recursive Makefiles are really way too slow, let's get rid of some of
them.

* build-aux/Makefile.am: Rename as...
* build-aux/local.mk: this.
Adjust paths.
* Makefile.am, configure.ac: Adjust.

16 years agoProvide convenience constructors for locations and positions.
Akim Demaille [Tue, 23 Sep 2008 11:49:41 +0000 (13:49 +0200)] 
Provide convenience constructors for locations and positions.

* data/location.cc (position::position): Accept file, line and
column as arguments with default values.
Always qualify initial line and column literals as unsigned.
(location::location): Provide convenience constructors.

16 years agoInstead of using make_symbol<TOK_FOO>, generate make_FOO for each token type.
Akim Demaille [Thu, 4 Sep 2008 20:41:01 +0000 (22:41 +0200)] 
Instead of using make_symbol<TOK_FOO>, generate make_FOO for each token type.

Using template buys us nothing, and makes it uselessly complex to
construct a symbol.  Besides, it could not be generalized to other
languages, while make_FOO would work in C/Java etc.

* data/lalr1.cc (b4_symbol_): New.
(b4_symbol): Use it.
(b4_symbol_constructor_declaration_)
(b4_symbol_constructor_definition_): Instead of generating
specializations of an overloaded template function, just generate
several functions whose names are forged from the token names
without the token.prefix.
(b4_symbol_constructor_declarations): Generate them for all the
symbols, not just by class of symbol type, now that instead of
specializing a function template by the token, we generate a
function named after the token.
(b4_symbol_constructor_specialization_)
(b4_symbol_constructor_specializations): Remove.
* etc/bench.pl.in: Adjust to this new API.

16 years ago%define token.prefix.
Akim Demaille [Mon, 1 Sep 2008 14:58:13 +0000 (16:58 +0200)] 
%define token.prefix.

Provide a means to add a prefix to the name of the tokens as output in the
generated files.  Because of name clashes, it is good to have such a
prefix such as TOK_ that protects from names such as EOF, FILE etc.
But it clutters the grammar itself.

* data/bison.m4 (token.prefix): Empty by default.
* data/c.m4 (b4_token_enum, b4_token_define): Use it.
* data/lalr1.cc (b4_symbol): Ditto.

16 years agoCompute at M4 time some of the subtractions.
Akim Demaille [Mon, 1 Sep 2008 09:39:41 +0000 (11:39 +0200)] 
Compute at M4 time some of the subtractions.

* data/lalr1.cc (b4_substract): New.
(b4_rhs_data): Use it.

16 years agosymbol::token.
Akim Demaille [Mon, 1 Sep 2008 08:51:46 +0000 (10:51 +0200)] 
symbol::token.

This is allows the user to get the type of a token return by
yylex.

* data/lalr1.cc (symbol::token): New.
(yytoknum_): Define when %define lex_symbol, independently of
%debug.
(yytoken_number_): Move into...
(symbol::token): here, since that's the only use.
The other one is YYPRINT which was not officially supported
by lalr1.cc, and anyway it did not work since YYPRINT uses this
array under a different name (yytoknum).

16 years agoYYERRCODE.
Akim Demaille [Fri, 29 Aug 2008 18:29:20 +0000 (20:29 +0200)] 
YYERRCODE.

* TODO (YYERRCODE): Mention the case of $undef.

16 years agoTODO: YYPRINT.
Akim Demaille [Fri, 29 Aug 2008 18:11:22 +0000 (20:11 +0200)] 
TODO: YYPRINT.

* TODO (YYPRINT): New.

16 years agoComment changes.
Akim Demaille [Fri, 29 Aug 2008 17:48:50 +0000 (19:48 +0200)] 
Comment changes.

* data/lalr1.cc, data/yacc.c: Fix the description of the
yytranslate and yytoknum tables.

16 years agoDefine make_symbol in the header.
Akim Demaille [Thu, 28 Aug 2008 09:50:09 +0000 (11:50 +0200)] 
Define make_symbol in the header.

To reach good performances these functions should be inlined (yet this is
to measure precisely).  To this end they must be available to the caller.

* data/lalr1.cc (b4_symbol_constructor_definition_): Qualify
location_type with the class name.
Since will now be output in the header, declare "inline".
No longer use b4_symbol_constructor_specializations, but
b4_symbol_constructor_definitions in the header.
Don't call it in the *.cc file.

16 years agoDefine yytranslate in the header for lex_symbol.
Akim Demaille [Thu, 28 Aug 2008 12:07:29 +0000 (14:07 +0200)] 
Define yytranslate in the header for lex_symbol.

* data/lalr1.cc: Move the invocation of b4_yytranslate_definition
into the header file when using %define lex_symbol.
(yytranslate_): Declare inline.

16 years agoDefine the constructors of symbol_type in b4_symbol_constructor_definitions.
Akim Demaille [Thu, 28 Aug 2008 11:31:56 +0000 (13:31 +0200)] 
Define the constructors of symbol_type in b4_symbol_constructor_definitions.

The constructors are called by the make_symbol functions, which a
forthcoming patch will move elsewhere.  Hence the interest of putting them
together.

The stack_symbol_type does not need to be moved, it is used only by the
parser.

* data/lalr1.cc: Move symbol_type and symbol_base_type
constructors into...
(b4_symbol_constructor_definitions): here.
Adjust.

16 years agoMake it easier to move the definition of yytranslate_.
Akim Demaille [Thu, 28 Aug 2008 11:00:26 +0000 (13:00 +0200)] 
Make it easier to move the definition of yytranslate_.

Forthcoming changes will make it possible to use yytranslate_
from outside the parser implementation file.

* data/lalr1.cc (b4_yytranslate_definition): New.
Use it.

16 years agoRemove useless class specification.
Akim Demaille [Thu, 28 Aug 2008 09:50:14 +0000 (11:50 +0200)] 
Remove useless class specification.

* data/lalr1.cc (b4_symbol_constructor_specialization_): No need
to refer to the class name to use a type defined by the class for
arguments of member functions.

16 years agoFiner input type for yytranslate.
Akim Demaille [Thu, 28 Aug 2008 08:32:14 +0000 (10:32 +0200)] 
Finer input type for yytranslate.

This patch is debatable: the tradition expects yylex to return an int
which happens to correspond to token_number (which is an enum).  This
allows for instance to return characters (such as '*' etc.).  But this
goes against the stronger typing I am trying to have with the new
lex interface which return a symbol_type.  So in this case, feed
yytranslate_ with a token_type.

* data/lalr1.cc (yytranslate_): When in %define lex-symbol,
expect a token_type.

16 years agoHonor lex-params in %define lex_symbol mode.
Akim Demaille [Tue, 26 Aug 2008 20:09:30 +0000 (22:09 +0200)] 
Honor lex-params in %define lex_symbol mode.

* data/lalr1.cc: Use b4_lex_param.

16 years agoSimplify names.
Akim Demaille [Tue, 26 Aug 2008 18:30:40 +0000 (20:30 +0200)] 
Simplify names.

* src/output.c (symbol_definitions_output): Rename symbol
attributes type_name and has_type_name as type and has_type.
* data/lalr1.cc: Adjust uses.

16 years agoUse b4_type_names for the union type.
Akim Demaille [Tue, 26 Aug 2008 18:25:58 +0000 (20:25 +0200)] 
Use b4_type_names for the union type.

The union used to compute the size of the variant used to iterate over the
type of all the symbols, with a lot of redundancy.  Now iterate over the
lists of symbols having the same type-name.

* data/lalr1.cc (b4_char_sizeof_): New.
(b4_char_sizeof): Use it.
Adjust to be called with a list of numbers instead of a single
number.
Adjust its caller for new-line issues.

16 years agoDefine the "identifier" of a symbol.
Akim Demaille [Tue, 26 Aug 2008 18:10:03 +0000 (20:10 +0200)] 
Define the "identifier" of a symbol.

Symbols may have several string representations, for instance if they
have an alias.  What I call its "id" is a string that can be used as
an identifier.  May not exist.

Currently the symbols which have the "tag_is_id" flag set are those that
don't have an alias.  Look harder for the id.

* src/output.c (is_identifier): Move to...
* src/symtab.c (is_identifier): here.
* src/symtab.h, src/symtab.c (symbol_id_get): New.
* src/output.c (symbol_definitions_output): Use it to define "id"
and "has_id".
Remove the definition of "tag_is_id".
* data/lalr1.cc: Use the "id" and "has_id" whereever "tag" and
"tag_is_id" were used to produce code.
We still use "tag" for documentation.