Commit Graph

88 Commits

Author SHA1 Message Date
Akim Demaille
92790e5bf0 * src/lex.c (literalchar): Don't escape the special characters,
just decode them, and keep them as char (before, eol was output as
the 2 char string `n' etc.).
* src/output.c (output_rule_data): Use quotearg to output the
token strings.
2001-12-14 15:39:05 +00:00
Marc Autret
c25fb64881 * src/output.c (output_parser): Remove useless muscle. 2001-12-11 20:19:44 +00:00
Marc Autret
e83d80b8ed * src/reader.c (copy_definition): Re-use CPP-outed code which
replace precedent remove.
* src/bison.simple: Remove #line before %%prologue because
%%input-line is wrong at this time.
2001-12-10 23:19:09 +00:00
Marc Autret
971d51580b * src/reader.c (symbols_output): Clean up.
* src/output.c (output_gram, output): Clean up.
2001-12-10 22:55:06 +00:00
Akim Demaille
78af9bbcd3 * src/getargs.h: Don't declare `spec_name_prefix' and
`spec_file_prefix', declared by src/files.h.
* src/files.c, src/files.h: Default for spec_name_prefix is "yy".
* src/muscle_tab.c (muscle_init): Default prefix to NULL.
* src/output.c (prepare): Adjust.
* src/reader.c (symbols_output): Likewise.
* src/vmsgetargs.c: Vaguely adjust, but who cares?
2001-12-10 09:07:41 +00:00
Akim Demaille
49701457c2 Now that states have a complete set of members, the linked list of
reductions is useless: just fill directly the state's reductions
member.
* src/state.h (struct reductions): Remove member `number' and
`next'.
* src/LR0.c (first_reduction, last_reduction): Remove.
(save_reductions): Don't link the new reductions, store them in
this_state.
* src/lalr.c (set_state_table): No need to attach reductions to
states, it's already done.
* src/output.c (output_actions): No longer free the shifts, then
the reductions, then the states: free all the states and their
members.
2001-12-10 09:06:48 +00:00
Akim Demaille
5449dd0f25 * src/output.c (output, prepare): Make sure the values of the
muscles `action' and `prologue' are 0-terminated.
2001-12-10 09:06:13 +00:00
Akim Demaille
f693ad146e One structure for states is enough, even though theoretically
there are LR(0) states and LALR(1) states.
* src/lalr.h (state_t): Remove.
(state_table): Be state_t **, not state_t *.
* src/state.h (core, CORE_ALLOC): Rename as...
(state_t, STATE_ALLOC): this.
Add the LALR(1) members: shifts, reductions, errs.
* src/LR0.c (state_table): Rename as...
(state_hash): this, to avoid name clashes with the global
`state_table'.
* src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
* src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
2001-12-10 08:45:22 +00:00
Akim Demaille
92b16366dd * src/conflicts.c (err_table): Remove.
(resolve_sr_conflict): Adjust.
* src/lalr.h (state_t.reduction_table, state_t.shift_table):
Rename as...
(state_t.reductions, state_t.shifts): this.
2001-12-05 09:44:26 +00:00
Akim Demaille
3843c413d0 * src/output.c (pack_vector): Use assert, not berror.
* src/main.c (berror): Remove, unused.
2001-12-05 09:43:21 +00:00
Akim Demaille
7a5350baa0 * src/output.c (action_row): De-obfuscate
using the good o' techniques: arrays not pointers, variable
locality, BITISSET, RESETBIT etc.
2001-12-05 09:39:02 +00:00
Akim Demaille
d954473dee Pessimize the code to simplify it: from now on, all the states
have a valid SHIFTS, which NSHIFTS is possibly 0.
* src/LR0.c (shifts_new): Be global and move to..
* src/state.c, src/state.h: here.
* src/conflicts, src/lalr.c, src/output.c, src/print.c,
* src/print_graph: Adjust.
2001-12-05 09:34:55 +00:00
Marc Autret
c7925b99cb * src/output.h: And put its extern declaration here.
* src/output.c (error_verbose): Define here.
(prepare): Echo name modification.
* src/getargs.h: Clean its extern declaration.
* src/getargs.c (error_verbose_flag): Remove.
(getargs): Remove case 'e'.
* src/options.c (option_table): 'error-verbose' is now seen as simple
percent option.
Include output.h.
* src/reader.c (read_declarations): Remove case tok_include.
(parse_include_decl): Remove.
* src/lex.h (token_t): Remove tok_include.
* src/options.c (option_table): 'include' is now a simple command line
option.
2001-11-28 21:31:13 +00:00
Marc Autret
5b5d192929 * src/bison.simple: Adjust muscle names.
* src/muscle_tab.c (muscle_init): Also rename the muscles.
* src/output.c (prepare): s/_/-/ for the muscles names.
(output_parser): When scanning for a muscle, allow '-' instead of '_'.
2001-11-28 20:32:53 +00:00
Marc Autret
68254a0303 * src/muscle_tab.c (muscle_init): Remove 'verbose' muscle initialization.
* src/output.c (prepare): Remove its update.
2001-11-27 20:55:16 +00:00
Marc Autret
eeeb962b2f * src/bison.simple: Remove YYERROR_VERBOSE using.
Use %%error_verbose.
(yyparse): Likewise.
* src/output.c (prepare): Give its final value.
* src/muscle_tab.c (muscle_init): Init new muscle 'error_verbose'.
* src/getargs.h: Add its extern declaration.
* src/getargs.c (error_verbose_flag): New int.
(getargs): Update to catch new case.
* src/options.c (option_table): 'error-verbose' is a new option.
(shortopts): Update.
2001-11-27 20:30:13 +00:00
Marc Autret
c1ecb3c1f5 * src/muscle_tab.c (muscle_init): Remove initialization of
skeleton muscle.
* src/output.c (output_master_parser): Do it here.
2001-11-22 21:45:14 +00:00
Akim Demaille
300f275f23 * src/system.h (LIST_FREE, shortcpy): New.
* src/LR0.c: Use them.
* src/output.c (free_itemsets, free_reductions, free_shifts):
Remove, replaced by LIST_FREE.
2001-11-19 10:31:49 +00:00
Akim Demaille
e41dc70020 * src/symtab.h, src/symtab.c: line' is a new member of bucket'.
* src/reader.c (record_rule_lines, rline, rline_allocated): Remove.
* src/output.c: Adjust.
2001-11-19 10:26:16 +00:00
Akim Demaille
b2ed6e5826 * src/gram.h (rule_t): New.
(rule_table): New.
(rrhs, rlhs): Remove, part of state_t.
* src/print_graph.c, src/closure.c, src/conflicts.c, src/derives.c,
* src/lalr.c, src/nullable.c, src/output.c, src/print.c,
* src/reader.c, src/reduce.c: Adjust.
2001-11-19 10:19:20 +00:00
Akim Demaille
bb527fc271 * src/lalr.h (LA): New macro to access to the variable LA.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
* src/lalr.c: Adjust.
2001-11-19 10:08:54 +00:00
Akim Demaille
f004bf6ac4 * src/lalr.h (lookaheads): Removed array, which contents is now
member of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 10:08:20 +00:00
Akim Demaille
de326cc0de * src/lalr.h (consistent): Removed array, which contents is now
member of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 10:08:02 +00:00
Akim Demaille
90b4416b5b * src/lalr.h (reduction_table, shift_table): Removed arrays, which
contents is now members of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 10:07:44 +00:00
Akim Demaille
9703cc49e0 * src/lalr.h (state_t): New.
(state_table): Be a state_t * instead of a core **.
(accessing_symbol): Remove, part of state_t.
* src/lalr.c: Adjust.
(set_accessing_symbol): Merge into...
(set_state_table): this.
* src/print_graph.c, src/conflicts.c: Adjust.
2001-11-19 10:07:14 +00:00
Pascal Bart
0846f581e8 * src/conflicts.c: Move global variables rrc_total and src_total ...
(print_conflicts): here.
* src/output.c (output): Free global variable user_toknums.
* src/lex.c (token_obstack): Become static.
2001-10-19 11:03:50 +00:00
Akim Demaille
342b8b6e21 Merge in branch-1_29. 2001-10-04 14:55:21 +00:00
Pascal Bart
1c8c2190b1 * src/output.c (output_master_parser): Don't finish action_obstack.
(output_parser): Don't care about the muscle action, here.
(prepare): Copy the action_obstack in the action muscle.
(output): Free action_obstack.
2001-09-25 11:36:25 +00:00
Pascal Bart
577c6c8499 Fix line report with input_line 2001-09-22 21:43:05 +00:00
Pascal Bart
6f9344dadf * src/bison.simple: New `#line' directive.
* src/output.c (output_parser): Support new dynamic muscle input_line.
2001-09-22 21:30:53 +00:00
Marc Autret
652def8074 * src/output.c (output_master_parser): New.
(output_parser): Be more re-entrant.
2001-09-22 12:18:16 +00:00
Pascal Bart
13105fc158 * src/output.c (output_parser): Delete unused variable actions_dumped. 2001-09-18 21:32:53 +00:00
Pascal Bart
b0c4483ed2 * src/output.c (output): Delete call to reader_output_yylsp.
* src/reader.c (reader): Likewise.
* src/reader.h:	Delete declaration of reader_output_yylsp.
2001-09-07 16:50:01 +00:00
Marc Autret
11d82f03b4 * src/reader.c: Include muscle_tab.h.
(parse_union_decl): Update.
(parse_macro_decl): Rename parse_muscle_decl.
Update to use renamed functions and variable.
(read_declarations, copy_action, read_additionnal_code, : Updated
with correct variables and functions names.
(packsymbols, reader): Likewise.
* src/reader.h (muscle_obstack): Extern declaration update.
* src/output.c: Include muscle_tab.h
In all functions using macro_insert, change by using muscle_insert ().
(macro_obstack): Rename muscle_obstack.
Echo modifications in the whole file.
(MACRO_INSERT_INT): Rename MUSCLE_INSERT_INT.
(MACRO_INSERT_STRING): Rename MUSCLE_INSERT_STRING.
(MACRO_INSERT_PREFIX): Rename MUSCLE_INSERT_PREFIX.
* src/muscle_tab.h: Update double inclusion macros.
(macro_entry_s): Rename muscle_entry_s.
Update prototypes.
* src/muscle_tab.c: Include muscle_tab.h.
Rename macro_tabble to muscle_table.
(mhash1, mhash2, mcmp): Use muscle_entry.
(macro_init): Rename muscle_init. Update.
(macro_insert): Rename muscle_insert. Update.
(macro_find): Rename muscle_find. Update.
* src/main.c: Include muscle_tab.h.
(main): Call muscle_init ().
* src/Makefile.am (bison_SOURCES): Echo modifications.
2001-09-02 15:43:29 +00:00
Pascal Bart
dda680cb80 * src/output.c (prepare): Delete the `filename' muscule insertion.
* src/reader.c (copy_action): Use `filename' muscule with `#line'.
(parse_union_decl): Likewise.
* src/macrotab.c (macro_init): Initialize filename by infile.
2001-08-31 18:51:06 +00:00
Marc Autret
9e644e648d * src/bison.simple (YYLSP_NEEDED): New definition.
* src/output.c (prepare): Add macro insertion of `locations_flag'
2001-08-31 18:30:21 +00:00
Pascal Bart
17da6427fe * src/output.c (prepare): Delete insertion of previous muscles,
and insert the `prefix' muscles.
* src/macrotab.c (macro_init): Likewise.
(macro_init): Initialization prefix directive by `yy'.
* src/bison.simple: Substitute all %%yylex, %%yychar, %%yylval,
%%yydebug, %%yyerror, %%yynerrs and %%yyparse by yylex, yychar,
yylval, yydebug, yyerror, yynerrs and yyparse.
New directive `#define' to substitute yydebug, ... with option
name_prefix.
2001-08-31 18:22:54 +00:00
Pascal Bart
e8cb70b957 * src/main.c (main): Standardize.
* src/output.c (output_table_data, output_parser): Likewise.
* src/macrotab.h, src/macrotab.c, src/bison.simple: Likewise.
2001-08-31 16:56:44 +00:00
Marc Autret
63c2d5de0f * src/reader.c (read_additionnal_code): Rename %%user_code to
%%epilogue.
* src/output.c (output): Rename %%declarations to %%prologue.
* src/bison.simple: Echo modifications.
2001-08-31 16:01:53 +00:00
Marc Autret
d8cb51834b * src/reader.c (readgram): CleanUp.
(output_token_defines): Likewise.
(packsymbols): Likewise.
(reader): Likewise.
* src/output.c (output): CPP-out useless code.
2001-08-31 11:47:08 +00:00
Pascal Bart
8f451ef727 * src/main.c: Include macrotab.h.
* src/macrotab.h (macro_entry_s): Constify fields.
Adjust functions prototypes.
* src/macrotab.c (macro_insert): Constify key and value.
(macro_find): Constify key.
(macro_insert): Include 'xalloc.h'
(macro_insert): Use XMALLOC.
(macro_find): Constify return value.
* src/output.c (output_table_data): Rename table to table_data.
(output_parser): Constify macro_key, macro_value.
2001-08-30 18:51:56 +00:00
Marc Autret
ff48177d25 * src/bison.simple: Add %%user_code directive at the end.
* src/reader.c (read_additionnal_code): New.
(reader): Use it.
* src/output.c (output_program): Remove.
(output): Update.
2001-08-29 14:17:00 +00:00
Marc Autret
4e5caae2c6 Adjust 2001-08-28 20:55:58 +00:00
Pascal Bart
d1a2daf76a * src/output.c (output_definitions): New function, which copies
attrs_obstack in the '%%definitions' directive.
* src/bison.simple: Add `%%definitions'.
2001-08-28 18:35:33 +00:00
Robert Anisko
82e236e2d6 * src/output.c (output): Remove the initialization of the macro
obstack.  It was done too late here.

* src/reader.c (parse_macro_decl): Fix.  Use of the macro obstack was
completely wrong.
(reader): Initialize the macro obstack here, since we need it to grow
'%define' directives.

* src/reader.h: Declare the macro obstack as extern.
2001-08-27 14:55:39 +00:00
Robert Anisko
b0cfa28a12 * src/output.c (output_parser): Fix. Store single '%' characters in
the output obstack instead of throwing them away.
2001-08-27 14:34:02 +00:00
Robert Anisko
26f609ffc3 * src/output.c (prepare): Add prefixed names.
(output_parser): Output semantic actions.
(output_parser): Fix bug on '%%line' directives.
* src/output.c (output_headers): Remove. The C code printed by this
function should now be in the skeletons.
(output_trailers): Remove.
(output): Disable call to 'reader_output_yylsp'.
(output_rule_data): Do not output tables to the table obstack.
* src/output.c: Remove some C dedicated output.
Improve the use of macro and output obstacks.
(output_defines): Remove.
* src/output.c (output_token_translations): Associate 'translate'
table with a macro. No output to the table obstack.
(output_gram): Same for 'rhs' and 'prhs'.
(output_stos): Same for 'stos'.
(output_rule_data): Same for 'r1' and 'r2'.
(token_actions): Same for 'defact'.
(goto_actions): Same for 'defgoto'.
(output_base): Same for 'pact' and 'pgoto'.
(output_table): Same for 'table'.
(output_check): Same for 'check'.
* src/output.c (output_table_data): New function.
(output_short_table): Remove.
(output_short_or_char_table): Remove.
* src/output.c (output_parser): Replace most of the skeleton copy code
with something new. Skeletons are now processed character by character
rather than line by line, and Bison looks for '%%' macros. This is the
first step in making Bison's output process (a lot) more flexible.
(output_parser): Use the macro table.
2001-08-25 15:07:59 +00:00
Robert Anisko
bbb5bcc6f8 Revert to 1.28c 2001-08-25 13:13:14 +00:00
Robert Anisko
83cd972a1a 2001-08-20 Robert Anisko <robert.anisko@epita.fr>
* src/output.c (prepare): Add prefixed names.
	(output_parser): Output semantic actions.
	(output_parser): Fix bug on '%%line' directives.

2001-08-19  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output_rule_data): Do not output tables to
	the table obstack.

	* src/reader.c (reader): Remove calls to 'output_headers' and
	'output_trailers'. Remove some C output.
	(readgram): Disable a piece of code that was writing a default
	definition for 'YYSTYPE'.
	(reader_output_yylsp): Remove.
	(packsymbols): Output token defintions to a macro.
	(copy_definition): Disable C output.

	* src/output.c (output_headers): Remove. The C code printed by this
	function should now be in the skeletons.
	(output_trailers): Remove.
	(output): Disable call to 'reader_output_yylsp'.

2001-08-18  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c: Remove some C dedicated output.

2001-08-18  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output_defines): Remove.

2001-08-18  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c: Improve the use of macro and output obstacks.

2001-08-18  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output_token_translations): Associate 'translate' table
	with a macro. No output to the table obstack.
	(output_gram): Same for 'rhs' and 'prhs'.
	(output_stos): Same for 'stos'.
	(output_rule_data): Same for 'r1' and 'r2'.
	(token_actions): Same for 'defact'.
	(goto_actions): Same for 'defgoto'.
	(output_base): Same for 'pact' and 'pgoto'.
	(output_table): Same for 'table'.
	(output_check): Same for 'check'.

2001-08-18  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output_table_data): New function.
	(output_short_table): Remove.
	(output_short_or_char_table): Remove.

2001-08-17  Robert Anisko  <robert.anisko@epita.fr>

	* src/main.c (main): Initialize the macro table.

2001-08-17  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output_parser): Use the macro table.
	* src/macrotab.c: New file.
	* src/macrotab.h: New file.

2001-08-17  Robert Anisko  <robert.anisko@epita.fr>

	* lib/xalloc.h (CALLOC, MALLOC, REALLOC): New macros.

2001-08-17  Robert Anisko  <robert.anisko@epita.fr>

	* lib/hash.c: New file.
	* lib/hash.h: New file.

2001-08-16  Robert Anisko  <robert.anisko@epita.fr>

	* src/reader.c (parse_macro_decl): Read macro identifiers using
	copy_identifier rather than lex.

2001-08-16  Robert Anisko  <robert.anisko@epita.fr>

	* src/reader.c (copy_identifier): New.

2001-08-16  Robert Anisko  <robert.anisko@epita.fr>

	* src/reader.c (read_declarations): Add case for macro definition.
	* src/lex.c (percent_table): Add tok_define.
	* src/lex.h: Add tok_define.

2001-08-16  Robert Anisko  <robert.anisko@epita.fr>

	* src/reader.c (parse_macro_decl): New function used to parse macro
	declarations.
	(copy_string2): Put the body of copy_string into this new function.
	Add a parameter to let the caller choose whether he wants to copy the
	string delimiters or not.
	(copy_string): Be a simple call to copy_string2 with the last argument
	bound to true.

2001-08-15  Robert Anisko  <robert.anisko@epita.fr>

	* src/output.c (output_parser): Replace most of the skeleton copy code
	with something new. Skeletons are now processed character by character
	rather than line by line, and Bison looks for '%%' macros. This is the
	first step in making Bison's output process (a lot) more flexible.
2001-08-21 19:47:13 +00:00
Akim Demaille
fabd3b431d Typos and Copyright. 2001-08-13 14:51:15 +00:00