mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 10:13:03 +00:00
* src/skeleton.h: New.
* src/output.c (output_parser, output_master_parser): Remove, dead code. * src/output.h (get_lines_number, actions_output, guards_output) (token_definitions_output): Prototype them. * src/parse-skel.y: Add the license notice. Include output.h and skeleton.h. (process_skeleton): Returns void, and takes a single parameter. * src/scan-skel.l: Add the license notice. Include skeleton.h. Don't use %option yylineno: it seems that then Flex imagines REJECT has been used, and therefore it won't reallocate its buffers (which makes no other sense to me than a bug). It results in warnings for `unused: yy_flex_realloc'. to guess if the generated parsers should have '.tab' in their * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
This commit is contained in:
20
ChangeLog
20
ChangeLog
@@ -1,3 +1,23 @@
|
|||||||
|
2001-12-30 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* src/skeleton.h: New.
|
||||||
|
* src/output.c (output_parser, output_master_parser): Remove, dead
|
||||||
|
code.
|
||||||
|
* src/output.h (get_lines_number, actions_output, guards_output)
|
||||||
|
(token_definitions_output): Prototype them.
|
||||||
|
* src/parse-skel.y: Add the license notice.
|
||||||
|
Include output.h and skeleton.h.
|
||||||
|
(process_skeleton): Returns void, and takes a single parameter.
|
||||||
|
* src/scan-skel.l: Add the license notice.
|
||||||
|
Include skeleton.h.
|
||||||
|
Don't use %option yylineno: it seems that then Flex imagines
|
||||||
|
REJECT has been used, and therefore it won't reallocate its
|
||||||
|
buffers (which makes no other sense to me than a bug). It results
|
||||||
|
in warnings for `unused: yy_flex_realloc'.
|
||||||
|
|
||||||
|
to guess if the generated parsers should have '.tab' in their
|
||||||
|
* src/Makefile.am (bison_SOURCES): Add scan-skel.l and
|
||||||
|
|
||||||
2001-12-30 Robert Anisko <robert.anisko@epita.fr>
|
2001-12-30 Robert Anisko <robert.anisko@epita.fr>
|
||||||
|
|
||||||
* src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
|
* src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
|
||||||
|
|||||||
6
po/de.po
6
po/de.po
@@ -5,7 +5,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.25\n"
|
"Project-Id-Version: bison 1.25\n"
|
||||||
"POT-Creation-Date: 2001-12-29 15:41+0100\n"
|
"POT-Creation-Date: 2001-12-30 16:18+0100\n"
|
||||||
"PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
|
"PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
|
||||||
"Last-Translator: Ulrich Drepper <drepper@gnu.ai.mit.edu>\n"
|
"Last-Translator: Ulrich Drepper <drepper@gnu.ai.mit.edu>\n"
|
||||||
"Language-Team: German <de@li.org>\n"
|
"Language-Team: German <de@li.org>\n"
|
||||||
@@ -97,12 +97,12 @@ msgid "expected %d shift/reduce conflict\n"
|
|||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] " %d Schiebe/Reduziere Konflikte"
|
msgstr[0] " %d Schiebe/Reduziere Konflikte"
|
||||||
|
|
||||||
#: src/files.c:149
|
#: src/files.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/files.c:168
|
#: src/files.c:171
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
6
po/es.po
6
po/es.po
@@ -30,7 +30,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: GNU bison 1.25\n"
|
"Project-Id-Version: GNU bison 1.25\n"
|
||||||
"POT-Creation-Date: 2001-12-29 15:41+0100\n"
|
"POT-Creation-Date: 2001-12-30 16:18+0100\n"
|
||||||
"PO-Revision-Date: 1998-09-21 10:19+0200\n"
|
"PO-Revision-Date: 1998-09-21 10:19+0200\n"
|
||||||
"Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
|
"Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
|
||||||
"Language-Team: Spanish <es@li.org>\n"
|
"Language-Team: Spanish <es@li.org>\n"
|
||||||
@@ -155,12 +155,12 @@ msgid "expected %d shift/reduce conflict\n"
|
|||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] " %d conflictos desplazamiento/reducción"
|
msgstr[0] " %d conflictos desplazamiento/reducción"
|
||||||
|
|
||||||
#: src/files.c:149
|
#: src/files.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/files.c:168
|
#: src/files.c:171
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
6
po/et.po
6
po/et.po
@@ -5,7 +5,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.28d\n"
|
"Project-Id-Version: bison 1.28d\n"
|
||||||
"POT-Creation-Date: 2001-12-29 15:41+0100\n"
|
"POT-Creation-Date: 2001-12-30 16:18+0100\n"
|
||||||
"PO-Revision-Date: 2001-08-29 17:06+02:00\n"
|
"PO-Revision-Date: 2001-08-29 17:06+02:00\n"
|
||||||
"Last-Translator: Toomas Soome <tsoome@ut.ee>\n"
|
"Last-Translator: Toomas Soome <tsoome@ut.ee>\n"
|
||||||
"Language-Team: Estonian <et@li.org>\n"
|
"Language-Team: Estonian <et@li.org>\n"
|
||||||
@@ -96,12 +96,12 @@ msgid "expected %d shift/reduce conflict\n"
|
|||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] " %d nihutamine/redutseerimine konflikti"
|
msgstr[0] " %d nihutamine/redutseerimine konflikti"
|
||||||
|
|
||||||
#: src/files.c:149
|
#: src/files.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "faili `%s' ei saa avada"
|
msgstr "faili `%s' ei saa avada"
|
||||||
|
|
||||||
#: src/files.c:168
|
#: src/files.c:171
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "faili ei õnnestu sulgeda"
|
msgstr "faili ei õnnestu sulgeda"
|
||||||
|
|
||||||
|
|||||||
6
po/fr.po
6
po/fr.po
@@ -6,7 +6,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: GNU bison 1.28d\n"
|
"Project-Id-Version: GNU bison 1.28d\n"
|
||||||
"POT-Creation-Date: 2001-12-29 15:41+0100\n"
|
"POT-Creation-Date: 2001-12-30 16:18+0100\n"
|
||||||
"PO-Revision-Date: 2001-08-29 20:00-0500\n"
|
"PO-Revision-Date: 2001-08-29 20:00-0500\n"
|
||||||
"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
|
"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
|
||||||
"Language-Team: French <traduc@traduc.org>\n"
|
"Language-Team: French <traduc@traduc.org>\n"
|
||||||
@@ -98,12 +98,12 @@ msgid "expected %d shift/reduce conflict\n"
|
|||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] " %d conflits décalage/réduction"
|
msgstr[0] " %d conflits décalage/réduction"
|
||||||
|
|
||||||
#: src/files.c:149
|
#: src/files.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "ne peut ouvrir le fichier `%s'"
|
msgstr "ne peut ouvrir le fichier `%s'"
|
||||||
|
|
||||||
#: src/files.c:168
|
#: src/files.c:171
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "ne peut fermer le fichier"
|
msgstr "ne peut fermer le fichier"
|
||||||
|
|
||||||
|
|||||||
6
po/ja.po
6
po/ja.po
@@ -5,7 +5,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: GNU bison 1.28\n"
|
"Project-Id-Version: GNU bison 1.28\n"
|
||||||
"POT-Creation-Date: 2001-12-29 15:41+0100\n"
|
"POT-Creation-Date: 2001-12-30 16:18+0100\n"
|
||||||
"PO-Revision-Date: 1999-09-28 21:10+0900\n"
|
"PO-Revision-Date: 1999-09-28 21:10+0900\n"
|
||||||
"Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n"
|
"Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
@@ -97,12 +97,12 @@ msgid "expected %d shift/reduce conflict\n"
|
|||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] " %d シフト/還元衝突"
|
msgstr[0] " %d シフト/還元衝突"
|
||||||
|
|
||||||
#: src/files.c:149
|
#: src/files.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/files.c:168
|
#: src/files.c:171
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
6
po/nl.po
6
po/nl.po
@@ -5,7 +5,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.25\n"
|
"Project-Id-Version: bison 1.25\n"
|
||||||
"POT-Creation-Date: 2001-12-29 15:41+0100\n"
|
"POT-Creation-Date: 2001-12-30 16:18+0100\n"
|
||||||
"PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
|
"PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
|
||||||
"Last-Translator: Erick Branderhorst <branderh@debian.org>\n"
|
"Last-Translator: Erick Branderhorst <branderh@debian.org>\n"
|
||||||
"Language-Team: Dutch <nl@li.org>\n"
|
"Language-Team: Dutch <nl@li.org>\n"
|
||||||
@@ -97,12 +97,12 @@ msgid "expected %d shift/reduce conflict\n"
|
|||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] " %d verschuif/reduceer conflicten"
|
msgstr[0] " %d verschuif/reduceer conflicten"
|
||||||
|
|
||||||
#: src/files.c:149
|
#: src/files.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/files.c:168
|
#: src/files.c:171
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
6
po/ru.po
6
po/ru.po
@@ -5,7 +5,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.29\n"
|
"Project-Id-Version: bison 1.29\n"
|
||||||
"POT-Creation-Date: 2001-12-29 15:41+0100\n"
|
"POT-Creation-Date: 2001-12-30 16:18+0100\n"
|
||||||
"PO-Revision-Date: 2001-09-09 13:49+04:00\n"
|
"PO-Revision-Date: 2001-09-09 13:49+04:00\n"
|
||||||
"Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n"
|
"Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n"
|
||||||
"Language-Team: Russian <ru@li.org>\n"
|
"Language-Team: Russian <ru@li.org>\n"
|
||||||
@@ -97,12 +97,12 @@ msgid "expected %d shift/reduce conflict\n"
|
|||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||||
|
|
||||||
#: src/files.c:149
|
#: src/files.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'"
|
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'"
|
||||||
|
|
||||||
#: src/files.c:168
|
#: src/files.c:171
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
|
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
|
||||||
|
|
||||||
|
|||||||
6
po/sv.po
6
po/sv.po
@@ -6,7 +6,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.30c\n"
|
"Project-Id-Version: bison 1.30c\n"
|
||||||
"POT-Creation-Date: 2001-12-29 15:41+0100\n"
|
"POT-Creation-Date: 2001-12-30 16:18+0100\n"
|
||||||
"PO-Revision-Date: 2001-11-18 15:17+0100\n"
|
"PO-Revision-Date: 2001-11-18 15:17+0100\n"
|
||||||
"Last-Translator: Göran Uddeborg <goeran@uddeborg.pp.se>\n"
|
"Last-Translator: Göran Uddeborg <goeran@uddeborg.pp.se>\n"
|
||||||
"Language-Team: Swedish <sv@li.org>\n"
|
"Language-Team: Swedish <sv@li.org>\n"
|
||||||
@@ -101,12 +101,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
|
|||||||
msgstr[0] "förväntade %d skifta/reducerakonflikt"
|
msgstr[0] "förväntade %d skifta/reducerakonflikt"
|
||||||
msgstr[1] "förväntade %d skifta/reducerakonflikter"
|
msgstr[1] "förväntade %d skifta/reducerakonflikter"
|
||||||
|
|
||||||
#: src/files.c:149
|
#: src/files.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "kan inte öppna filen \"%s\""
|
msgstr "kan inte öppna filen \"%s\""
|
||||||
|
|
||||||
#: src/files.c:168
|
#: src/files.c:171
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "kan inte stänga fil"
|
msgstr "kan inte stänga fil"
|
||||||
|
|
||||||
|
|||||||
6
po/tr.po
6
po/tr.po
@@ -5,7 +5,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.28c\n"
|
"Project-Id-Version: bison 1.28c\n"
|
||||||
"POT-Creation-Date: 2001-12-29 15:41+0100\n"
|
"POT-Creation-Date: 2001-12-30 16:18+0100\n"
|
||||||
"PO-Revision-Date: 2001-09-10 10:54GMT\n"
|
"PO-Revision-Date: 2001-09-10 10:54GMT\n"
|
||||||
"Last-Translator: Altug Bayram <altugbayram_2000@yahoo.com>\n"
|
"Last-Translator: Altug Bayram <altugbayram_2000@yahoo.com>\n"
|
||||||
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
|
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
|
||||||
@@ -99,12 +99,12 @@ msgid "expected %d shift/reduce conflict\n"
|
|||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] " %d öteleme/indirgeme çeliþkisi"
|
msgstr[0] " %d öteleme/indirgeme çeliþkisi"
|
||||||
|
|
||||||
#: src/files.c:149
|
#: src/files.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "`%s' dosyasý açýlamadý"
|
msgstr "`%s' dosyasý açýlamadý"
|
||||||
|
|
||||||
#: src/files.c:168
|
#: src/files.c:171
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "dosya kapatýlamýyor"
|
msgstr "dosya kapatýlamýyor"
|
||||||
|
|
||||||
|
|||||||
115
src/output.c
115
src/output.c
@@ -101,7 +101,7 @@
|
|||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
#include "conflicts.h"
|
#include "conflicts.h"
|
||||||
#include "muscle_tab.h"
|
#include "muscle_tab.h"
|
||||||
|
#include "skeleton.h"
|
||||||
|
|
||||||
static int nvectors;
|
static int nvectors;
|
||||||
static int nentries;
|
static int nentries;
|
||||||
@@ -961,111 +961,12 @@ output_actions (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------.
|
/*---------------------------.
|
||||||
| Copy the parser code from SKEL_FILENAME into OOUT obstack. |
|
| Call the skeleton parser. |
|
||||||
| and do the muscle substitution. |
|
`---------------------------*/
|
||||||
`------------------------------------------------------------*/
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
output_parser (const char *skel_filename, FILE *out)
|
output_skeleton (void)
|
||||||
{
|
|
||||||
int c;
|
|
||||||
FILE *fskel;
|
|
||||||
size_t output_line;
|
|
||||||
size_t skeleton_line;
|
|
||||||
|
|
||||||
fskel = xfopen (skel_filename, "r");
|
|
||||||
|
|
||||||
/* New output code. */
|
|
||||||
output_line = 1;
|
|
||||||
skeleton_line = 1;
|
|
||||||
c = getc (fskel);
|
|
||||||
while (c != EOF)
|
|
||||||
{
|
|
||||||
if (c != '%')
|
|
||||||
{
|
|
||||||
if (c == '\n')
|
|
||||||
{
|
|
||||||
++output_line;
|
|
||||||
++skeleton_line;
|
|
||||||
}
|
|
||||||
putc (c, out);
|
|
||||||
c = getc (fskel);
|
|
||||||
}
|
|
||||||
else if ((c = getc (fskel)) == '%')
|
|
||||||
{
|
|
||||||
/* Read the muscle. */
|
|
||||||
const char *muscle_key = 0;
|
|
||||||
const char *muscle_value = 0;
|
|
||||||
|
|
||||||
while (isalnum (c = getc (fskel)) || c == '-')
|
|
||||||
obstack_1grow (&muscle_obstack, c);
|
|
||||||
obstack_1grow (&muscle_obstack, 0);
|
|
||||||
|
|
||||||
/* Output the right value, or see if it's something special. */
|
|
||||||
muscle_key = obstack_finish (&muscle_obstack);
|
|
||||||
muscle_value = muscle_find (muscle_key);
|
|
||||||
if (!strcmp (muscle_key, "actions"))
|
|
||||||
actions_output (out, &output_line);
|
|
||||||
else if (!strcmp (muscle_key, "guards"))
|
|
||||||
guards_output (out, &output_line);
|
|
||||||
else if (!strcmp (muscle_key, "line"))
|
|
||||||
fprintf (out, "%d", output_line);
|
|
||||||
else if (!strcmp (muscle_key, "tokendef"))
|
|
||||||
token_definitions_output (out, &output_line);
|
|
||||||
else if (!strcmp (muscle_key, "skeleton-line"))
|
|
||||||
fprintf (out, "%d", skeleton_line);
|
|
||||||
else if (muscle_value)
|
|
||||||
{
|
|
||||||
fputs (muscle_value, out);
|
|
||||||
output_line += get_lines_number (muscle_value);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fputs ("%%", out);
|
|
||||||
fputs (muscle_key, out);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
putc ('%', out);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* End. */
|
|
||||||
xfclose (fskel);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------.
|
|
||||||
| Prepare the master parser to be output |
|
|
||||||
`----------------------------------------*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
output_master_parser (void)
|
|
||||||
{
|
|
||||||
FILE *parser = xfopen (parser_file_name, "w");
|
|
||||||
|
|
||||||
/* FIXME: Remove the two following lines. */
|
|
||||||
printf ("Test: %s\n", infile);
|
|
||||||
printf ("Test: %s\n", parser_file_name);
|
|
||||||
|
|
||||||
if (!skeleton)
|
|
||||||
{
|
|
||||||
if (semantic_parser)
|
|
||||||
skeleton = skeleton_find ("BISON_HAIRY", BISON_HAIRY);
|
|
||||||
else
|
|
||||||
skeleton = skeleton_find ("BISON_SIMPLE", BISON_SIMPLE);
|
|
||||||
}
|
|
||||||
muscle_insert ("skeleton", skeleton);
|
|
||||||
muscle_insert ("parser-file-name", parser_file_name);
|
|
||||||
|
|
||||||
output_parser (skeleton, parser);
|
|
||||||
xfclose (parser);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Call the skeleton parser. */
|
|
||||||
|
|
||||||
static
|
|
||||||
void
|
|
||||||
output_skeleton ()
|
|
||||||
{
|
{
|
||||||
/* Find the right skeleton file. */
|
/* Find the right skeleton file. */
|
||||||
if (!skeleton)
|
if (!skeleton)
|
||||||
@@ -1078,7 +979,7 @@ output_skeleton ()
|
|||||||
|
|
||||||
/* Parse the skeleton file and output the needed parsers. */
|
/* Parse the skeleton file and output the needed parsers. */
|
||||||
muscle_insert ("skeleton", skeleton);
|
muscle_insert ("skeleton", skeleton);
|
||||||
process_skeleton (infile, skeleton);
|
process_skeleton (skeleton);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1190,10 +1091,6 @@ output (void)
|
|||||||
/* Process the selected skeleton file. */
|
/* Process the selected skeleton file. */
|
||||||
output_skeleton ();
|
output_skeleton ();
|
||||||
|
|
||||||
/* Output the parser. */
|
|
||||||
#if 0
|
|
||||||
output_master_parser ();
|
|
||||||
#endif
|
|
||||||
/* Output the header if needed. */
|
/* Output the header if needed. */
|
||||||
if (defines_flag)
|
if (defines_flag)
|
||||||
header_output ();
|
header_output ();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* Output the generated parsing program for bison,
|
/* Output the generated parsing program for bison,
|
||||||
Copyright 2000 Free Software Foundation, Inc.
|
Copyright 2000, 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
@@ -26,6 +26,12 @@ extern int error_verbose;
|
|||||||
/* Output the parsing tables and the parser code to FTABLE. */
|
/* Output the parsing tables and the parser code to FTABLE. */
|
||||||
void output PARAMS ((void));
|
void output PARAMS ((void));
|
||||||
|
|
||||||
|
size_t get_lines_number PARAMS ((const char *s));
|
||||||
|
|
||||||
|
void actions_output PARAMS ((FILE *out, size_t *line));
|
||||||
|
void guards_output PARAMS ((FILE *out, size_t *line));
|
||||||
|
void token_definitions_output PARAMS ((FILE *out, size_t *line));
|
||||||
|
|
||||||
extern struct obstack muscle_obstack;
|
extern struct obstack muscle_obstack;
|
||||||
|
|
||||||
#endif /* !OUTPUT_H_ */
|
#endif /* !OUTPUT_H_ */
|
||||||
|
|||||||
@@ -1,14 +1,36 @@
|
|||||||
%{
|
/* -*- C -*- */
|
||||||
|
/* Parse Bison Skeletons.
|
||||||
|
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
|
Bison is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
Bison is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bison; see the file COPYING. If not, write to the Free
|
||||||
|
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
02111-1307, USA. */
|
||||||
|
|
||||||
|
%debug
|
||||||
|
%defines
|
||||||
|
%error-verbose
|
||||||
|
|
||||||
|
%{
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "obstack.h"
|
#include "obstack.h"
|
||||||
#include "files.h"
|
#include "files.h"
|
||||||
|
#include "output.h"
|
||||||
|
#include "skeleton.h"
|
||||||
#include "muscle_tab.h"
|
#include "muscle_tab.h"
|
||||||
|
|
||||||
#define YYDEBUG 1
|
|
||||||
#define YYERROR_VERBOSE 1
|
|
||||||
|
|
||||||
extern FILE* yyin;
|
extern FILE* yyin;
|
||||||
extern int yylineno;
|
extern int yylineno;
|
||||||
|
|
||||||
@@ -18,7 +40,8 @@ FILE* parser = NULL;
|
|||||||
size_t output_line;
|
size_t output_line;
|
||||||
size_t skeleton_line;
|
size_t skeleton_line;
|
||||||
|
|
||||||
extern struct obstack muscle_obstack;
|
static int merror PARAMS ((const char* error));
|
||||||
|
static int yyerror PARAMS ((const char* error));
|
||||||
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
@@ -30,9 +53,9 @@ extern struct obstack muscle_obstack;
|
|||||||
int yacc;
|
int yacc;
|
||||||
}
|
}
|
||||||
|
|
||||||
%token< muscle > MUSCLE
|
%token <muscle> MUSCLE
|
||||||
%token< string > STRING
|
%token <string> STRING
|
||||||
%token< character > CHARACTER
|
%token <character> CHARACTER
|
||||||
|
|
||||||
%token LINE
|
%token LINE
|
||||||
%token SLINE
|
%token SLINE
|
||||||
@@ -44,7 +67,7 @@ extern struct obstack muscle_obstack;
|
|||||||
%token TOKENS
|
%token TOKENS
|
||||||
%token ACTIONS
|
%token ACTIONS
|
||||||
|
|
||||||
%type< yacc > section.yacc
|
%type <yacc> section.yacc
|
||||||
|
|
||||||
%start skeleton
|
%start skeleton
|
||||||
|
|
||||||
@@ -59,9 +82,9 @@ section : section.header section.body { }
|
|||||||
|
|
||||||
section.header : SECTION gb MUSCLE gb STRING gb section.yacc gb '\n'
|
section.header : SECTION gb MUSCLE gb STRING gb section.yacc gb '\n'
|
||||||
{
|
{
|
||||||
char* name = 0;
|
char *name = 0;
|
||||||
char* limit = 0;
|
char *limit = 0;
|
||||||
char* suffix = $5;
|
char *suffix = $5;
|
||||||
|
|
||||||
/* Close the previous parser. */
|
/* Close the previous parser. */
|
||||||
if (parser)
|
if (parser)
|
||||||
@@ -70,7 +93,7 @@ section.header : SECTION gb MUSCLE gb STRING gb section.yacc gb '\n'
|
|||||||
/* If the following section should be named with the yacc-style, and it's
|
/* If the following section should be named with the yacc-style, and it's
|
||||||
suffix is of the form 'something.h' or 'something.c', then add '.tab' in
|
suffix is of the form 'something.h' or 'something.c', then add '.tab' in
|
||||||
the middle of the suffix. */
|
the middle of the suffix. */
|
||||||
if (tab_extension && $7 && (strsuffix (suffix, ".h") ||
|
if (tab_extension && $7 && (strsuffix (suffix, ".h") ||
|
||||||
strsuffix (suffix, ".c")))
|
strsuffix (suffix, ".c")))
|
||||||
{
|
{
|
||||||
size_t prefix_len = strlen (prefix);
|
size_t prefix_len = strlen (prefix);
|
||||||
@@ -93,7 +116,7 @@ section.header : SECTION gb MUSCLE gb STRING gb section.yacc gb '\n'
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
name = stringappend (prefix, suffix);
|
name = stringappend (prefix, suffix);
|
||||||
|
|
||||||
/* Prepare the next parser to be output. */
|
/* Prepare the next parser to be output. */
|
||||||
parser = xfopen (name, "w");
|
parser = xfopen (name, "w");
|
||||||
MUSCLE_INSERT_STRING ("parser-file-name", name);
|
MUSCLE_INSERT_STRING ("parser-file-name", name);
|
||||||
@@ -107,7 +130,7 @@ section.yacc : /* Empty. */ { $$ = 0; }
|
|||||||
| YACC { $$ = 1; }
|
| YACC { $$ = 1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
section.body
|
section.body
|
||||||
: /* Empty. */ { }
|
: /* Empty. */ { }
|
||||||
| section.body '\n' { fputc ('\n', parser); ++output_line; ++skeleton_line; }
|
| section.body '\n' { fputc ('\n', parser); ++output_line; ++skeleton_line; }
|
||||||
| section.body LINE { fprintf (parser, "%d", output_line); }
|
| section.body LINE { fprintf (parser, "%d", output_line); }
|
||||||
@@ -116,7 +139,7 @@ section.body
|
|||||||
| section.body TOKENS { token_definitions_output (parser, &output_line); }
|
| section.body TOKENS { token_definitions_output (parser, &output_line); }
|
||||||
| section.body ACTIONS { actions_output (parser, &output_line); }
|
| section.body ACTIONS { actions_output (parser, &output_line); }
|
||||||
| section.body CHARACTER { fputc ($2, parser); }
|
| section.body CHARACTER { fputc ($2, parser); }
|
||||||
| section.body MUSCLE {
|
| section.body MUSCLE {
|
||||||
const char* value = muscle_find ($2);
|
const char* value = muscle_find ($2);
|
||||||
if (value)
|
if (value)
|
||||||
{
|
{
|
||||||
@@ -137,26 +160,23 @@ gb : /* Empty. */ { }
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
int
|
static int
|
||||||
merror (const char* error)
|
merror (const char* error)
|
||||||
{
|
{
|
||||||
printf ("line %d: %%{%s} undeclared.\n", skeleton_line, error);
|
printf ("line %d: %%{%s} undeclared.\n", skeleton_line, error);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
static int
|
||||||
yyerror (const char* error)
|
yyerror (const char* error)
|
||||||
{
|
{
|
||||||
printf ("line %d: %s.\n", yylineno, error);
|
fprintf (stderr, "%s\n", error);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
void
|
||||||
process_skeleton (const char* grammar,
|
process_skeleton (const char* skel)
|
||||||
const char* skeleton)
|
|
||||||
{
|
{
|
||||||
const char* limit = 0;
|
|
||||||
|
|
||||||
/* Compute prefix. Actually, it seems that the processing I need here is
|
/* Compute prefix. Actually, it seems that the processing I need here is
|
||||||
done in compute_base_names, and the result stored in short_base_name. */
|
done in compute_base_names, and the result stored in short_base_name. */
|
||||||
prefix = short_base_name;
|
prefix = short_base_name;
|
||||||
@@ -166,7 +186,7 @@ process_skeleton (const char* grammar,
|
|||||||
skeleton_line = 1;
|
skeleton_line = 1;
|
||||||
|
|
||||||
/* Output. */
|
/* Output. */
|
||||||
yyin = fopen (skeleton, "r");
|
yyin = fopen (skel, "r");
|
||||||
yydebug = 0;
|
yydebug = 0;
|
||||||
yyparse ();
|
yyparse ();
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,41 @@
|
|||||||
|
/* -*- C -*- */
|
||||||
|
/* Scan Bison Skeletons.
|
||||||
|
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
|
Bison is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
Bison is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bison; see the file COPYING. If not, write to the Free
|
||||||
|
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
02111-1307, USA. */
|
||||||
|
|
||||||
%{
|
%{
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include "system.h"
|
||||||
#include <string.h>
|
#include "skeleton.h"
|
||||||
|
|
||||||
#include "parse-skel.h"
|
#include "parse-skel.h"
|
||||||
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%option nounput
|
%option nounput
|
||||||
%option noyywrap
|
%option noyywrap
|
||||||
%option yylineno
|
/* If we enable
|
||||||
|
|
||||||
|
%option yylineno
|
||||||
|
|
||||||
|
Then we have warning: `yy_flex_realloc' defined but not used.
|
||||||
|
Seems like a Flex bug to me: Why the heck yylineno would trigger
|
||||||
|
the REJECT exception??? */
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
|
|||||||
32
src/skeleton.h
Normal file
32
src/skeleton.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
/* Parse Bison Skeletons.
|
||||||
|
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
|
Bison is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
Bison is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Bison; see the file COPYING. If not, write to the Free
|
||||||
|
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
02111-1307, USA. */
|
||||||
|
|
||||||
|
#ifndef SKELETON_H_
|
||||||
|
# define SKELETON_H_
|
||||||
|
|
||||||
|
/* From parse-skel.y. */
|
||||||
|
void process_skeleton PARAMS ((const char* skel));
|
||||||
|
|
||||||
|
/* From scan-skel.l. */
|
||||||
|
# define YY_DECL \
|
||||||
|
int yylex PARAMS ((void))
|
||||||
|
YY_DECL;
|
||||||
|
|
||||||
|
#endif SKELETON_H_
|
||||||
Reference in New Issue
Block a user