mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-11 21:33:04 +00:00
* src/bison.simple: Don't hard code the skeleton line and filename.
* src/output.c (output_parser): Rename 'line' as 'output_line'. New line counter 'skeleton_line' (skeleton-line muscle).
This commit is contained in:
@@ -82,7 +82,7 @@ typedef struct yyltype
|
||||
/* Copy the user declarations. */
|
||||
%%prologue
|
||||
|
||||
/* Line 85 of bison.simple. */
|
||||
/* Line %%skeleton-line of %%skeleton. */
|
||||
#line %%line "%%parser-file-name"
|
||||
|
||||
#include <stdio.h>
|
||||
@@ -896,7 +896,8 @@ yyreduce:
|
||||
{
|
||||
%%actions
|
||||
}
|
||||
/* Line 902 of bison.simple. */
|
||||
|
||||
/* Line %%skeleton-line of %%skeleton. */
|
||||
#line %%line "%%parser-file-name"
|
||||
|
||||
yyvsp -= yylen;
|
||||
|
||||
19
src/output.c
19
src/output.c
@@ -897,19 +897,24 @@ output_parser (const char *skel_filename, FILE *out)
|
||||
{
|
||||
int c;
|
||||
FILE *fskel;
|
||||
size_t line;
|
||||
size_t output_line;
|
||||
size_t skeleton_line;
|
||||
|
||||
fskel = xfopen (skel_filename, "r");
|
||||
|
||||
/* New output code. */
|
||||
line = 1;
|
||||
output_line = 1;
|
||||
skeleton_line = 1;
|
||||
c = getc (fskel);
|
||||
while (c != EOF)
|
||||
{
|
||||
if (c != '%')
|
||||
{
|
||||
if (c == '\n')
|
||||
++line;
|
||||
{
|
||||
++output_line;
|
||||
++skeleton_line;
|
||||
}
|
||||
putc (c, out);
|
||||
c = getc (fskel);
|
||||
}
|
||||
@@ -927,13 +932,15 @@ output_parser (const char *skel_filename, FILE *out)
|
||||
muscle_key = obstack_finish (&muscle_obstack);
|
||||
muscle_value = muscle_find (muscle_key);
|
||||
if (!strcmp (muscle_key, "actions"))
|
||||
actions_output (out, &line);
|
||||
actions_output (out, &output_line);
|
||||
else if (!strcmp (muscle_key, "line"))
|
||||
fprintf (out, "%d", line);
|
||||
fprintf (out, "%d", output_line);
|
||||
else if (!strcmp (muscle_key, "skeleton-line"))
|
||||
fprintf (out, "%d", skeleton_line);
|
||||
else if (muscle_value)
|
||||
{
|
||||
fputs (muscle_value, out);
|
||||
line += get_lines_number (muscle_value);
|
||||
output_line += get_lines_number (muscle_value);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user