* src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.

(input): Don't try to initialize yylloc here, do it in the
scanner.
* src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
* src/gram.h (rule_t): Change line and action_line into location
and action_location, of location_t type.
Adjust all dependencies.
* src/location.h, src/location.c (empty_location): New.
* src/reader.h, src/reader.c (grammar_start_symbol_set)
(grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
(grammar_current_rule_symbol_append)
(grammar_current_rule_action_append): Expect a location as argument.
* src/reader.c (grammar_midrule_action): Adjust to attach an
action's location as dummy symbol location.
* src/symtab.h, src/symtab.c (startsymbol_location): New.
* tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
the line numbers.
This commit is contained in:
Akim Demaille
2002-06-15 18:21:11 +00:00
parent 4f6bb8b24b
commit 8efe435c05
28 changed files with 699 additions and 603 deletions

View File

@@ -1,3 +1,24 @@
2002-06-15 Akim Demaille <akim@epita.fr>
* src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
(input): Don't try to initialize yylloc here, do it in the
scanner.
* src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
* src/gram.h (rule_t): Change line and action_line into location
and action_location, of location_t type.
Adjust all dependencies.
* src/location.h, src/location.c (empty_location): New.
* src/reader.h, src/reader.c (grammar_start_symbol_set)
(grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
(grammar_current_rule_symbol_append)
(grammar_current_rule_action_append): Expect a location as argument.
* src/reader.c (grammar_midrule_action): Adjust to attach an
action's location as dummy symbol location.
* src/symtab.h, src/symtab.c (startsymbol_location): New.
* tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
the line numbers.
2002-06-14 Akim Demaille <akim@epita.fr> 2002-06-14 Akim Demaille <akim@epita.fr>
Grammar declarations may be found in the grammar section. Grammar declarations may be found in the grammar section.

View File

@@ -6,7 +6,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.35\n" "Project-Id-Version: bison 1.35\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-04-26 11:58:57+0200\n" "PO-Revision-Date: 2002-04-26 11:58:57+0200\n"
"Last-Translator: Michael Piefel <piefel@informatik.hu-berlin.de>\n" "Last-Translator: Michael Piefel <piefel@informatik.hu-berlin.de>\n"
"Language-Team: German <de@li.org>\n" "Language-Team: German <de@li.org>\n"
@@ -96,12 +96,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "erwartete %d Schiebe/Reduziere-Konflikt\n" msgstr[0] "erwartete %d Schiebe/Reduziere-Konflikt\n"
msgstr[1] "erwartete %d Schiebe/Reduziere-Konflikte\n" msgstr[1] "erwartete %d Schiebe/Reduziere-Konflikte\n"
#: src/files.c:159 #: src/files.c:157
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "kann Datei »%s« nicht öffnen" msgstr "kann Datei »%s« nicht öffnen"
#: src/files.c:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "kann Datei nicht schließen" msgstr "kann Datei nicht schließen"
@@ -343,29 +343,29 @@ msgstr "unzulässiger $-Wert"
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "mehr als eine %s-Deklaration" msgstr "mehr als eine %s-Deklaration"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "Regel für %s vorhanden, welches aber ein Token ist" msgstr "Regel für %s vorhanden, welches aber ein Token ist"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "Typkonflikt (»%s« »%s«) bei Default-Aktion" msgstr "Typkonflikt (»%s« »%s«) bei Default-Aktion"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "leere Regel für Nicht-Terminal mit Typ und keine Aktion" msgstr "leere Regel für Nicht-Terminal mit Typ und keine Aktion"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "zwei @prec-Anweisungen nacheinander" msgstr "zwei @prec-Anweisungen nacheinander"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "Eingabegrammatik enthält keine Regeln" msgstr "Eingabegrammatik enthält keine Regeln"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "zu viele Symbole (Token plus Nicht-Terminale); Maximum %d" msgstr "zu viele Symbole (Token plus Nicht-Terminale); Maximum %d"
@@ -412,22 +412,22 @@ msgstr[1] "%d nutzlose Regeln"
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten" msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ von »%s« hat keinen deklarierten Typ" msgstr "$$ von »%s« hat keinen deklarierten Typ"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "unzulässiger @-Wert" msgstr "unzulässiger @-Wert"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d von »%s« hat keinen deklarierten Typ" msgstr "$%d von »%s« hat keinen deklarierten Typ"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s ist unzulässig" msgstr "%s ist unzulässig"

View File

@@ -29,7 +29,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.35\n" "Project-Id-Version: GNU bison 1.35\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-04-03 10:19+0200\n" "PO-Revision-Date: 2002-04-03 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"
@@ -156,12 +156,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "esperado: %d conflicto desplazamiento/reducción\n" msgstr[0] "esperado: %d conflicto desplazamiento/reducción\n"
msgstr[1] "esperados: %d conflictos desplazamiento/reducción\n" msgstr[1] "esperados: %d conflictos desplazamiento/reducción\n"
#: src/files.c:159 #: src/files.c:157
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "no se puede abrir el fichero `%s'" msgstr "no se puede abrir el fichero `%s'"
#: src/files.c:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "no se puede cerrar el fichero" msgstr "no se puede cerrar el fichero"
@@ -405,29 +405,29 @@ msgstr "valor $ no v
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "múltiples declaraciones de %s" msgstr "múltiples declaraciones de %s"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "se ha dado una regla para %s, que es un terminal" msgstr "se ha dado una regla para %s, que es un terminal"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto" msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción" msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "dos @prec en una línea" msgstr "dos @prec en una línea"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "no hay reglas en la gramática de entrada" msgstr "no hay reglas en la gramática de entrada"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "demasiados símbolos (terminales y no terminales); máximo %d" msgstr "demasiados símbolos (terminales y no terminales); máximo %d"
@@ -474,22 +474,22 @@ msgstr[1] "%d reglas sin uso"
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "El símbolo de inicio (axioma) %s no deriva ninguna sentencia" msgstr "El símbolo de inicio (axioma) %s no deriva ninguna sentencia"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ de `%s' no tiene tipo declarado" msgstr "$$ de `%s' no tiene tipo declarado"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "valor @ no válido" msgstr "valor @ no válido"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d de `%s' no tiene tipo declarado" msgstr "$%d de `%s' no tiene tipo declarado"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s no es válido" msgstr "%s no es válido"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.33b\n" "Project-Id-Version: bison 1.33b\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-03-05 16:27+0200\n" "PO-Revision-Date: 2002-03-05 16:27+0200\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"
@@ -95,12 +95,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "eeldasime %d nihutamine/redutseerimine konflikti\n" msgstr[0] "eeldasime %d nihutamine/redutseerimine konflikti\n"
msgstr[1] "eeldasime %d nihutamine/redutseerimine konflikti\n" msgstr[1] "eeldasime %d nihutamine/redutseerimine konflikti\n"
#: src/files.c:159 #: src/files.c:157
#, 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:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "faili ei õnnestu sulgeda" msgstr "faili ei õnnestu sulgeda"
@@ -335,29 +335,29 @@ msgstr "vigane $ v
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "korduvad %s deklaratsioonid" msgstr "korduvad %s deklaratsioonid"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "%s jaoks on antud reegel, aga see on märk" msgstr "%s jaoks on antud reegel, aga see on märk"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')" msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus" msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "kaks @prec ühel real" msgstr "kaks @prec ühel real"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "sisendgrammatikas pole reegleid" msgstr "sisendgrammatikas pole reegleid"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d" msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d"
@@ -404,22 +404,22 @@ msgstr[1] "%d kasutamata reeglit"
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Stardisümbolist %s ei tuletata ühtegi lauset" msgstr "Stardisümbolist %s ei tuletata ühtegi lauset"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "`%s' $$ ei oma deklareeritud tüüpi" msgstr "`%s' $$ ei oma deklareeritud tüüpi"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "vigane @ väärtus" msgstr "vigane @ väärtus"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d `%s' ei oma deklareeritud tüüpi" msgstr "$%d `%s' ei oma deklareeritud tüüpi"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s on vigane" msgstr "%s on vigane"

View File

@@ -6,7 +6,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.34a\n" "Project-Id-Version: GNU bison 1.34a\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-03-21 15:00-0500\n" "PO-Revision-Date: 2002-03-21 15: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"
@@ -99,12 +99,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "attendait %d conflit par décalage/réduction\n" msgstr[0] "attendait %d conflit par décalage/réduction\n"
msgstr[1] "attendait %d conflits par décalage/réduction\n" msgstr[1] "attendait %d conflits par décalage/réduction\n"
#: src/files.c:159 #: src/files.c:157
#, 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:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "ne peut fermer le fichier" msgstr "ne peut fermer le fichier"
@@ -344,29 +344,29 @@ msgstr "la valeur de symbole $ n'est pas valide"
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "multiples déclarations %s" msgstr "multiples déclarations %s"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "la règle pour %s, qui est un terminal" msgstr "la règle pour %s, qui est un terminal"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "conflit de type (« %s » « %s ») pour l'action par défaut" msgstr "conflit de type (« %s » « %s ») pour l'action par défaut"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "règle vide pour une catégorie typée et aucune action" msgstr "règle vide pour une catégorie typée et aucune action"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "deux @prec de suite" msgstr "deux @prec de suite"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "la grammaire n'a pas de règles" msgstr "la grammaire n'a pas de règles"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "trop de symboles (jeton plus non terminaux); maximum %d" msgstr "trop de symboles (jeton plus non terminaux); maximum %d"
@@ -413,22 +413,22 @@ msgstr[1] "%d r
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s" msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ de « %s » n'a pas son type déclaré" msgstr "$$ de « %s » n'a pas son type déclaré"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "valeur @ invalide" msgstr "valeur @ invalide"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d de « %s » n'a pas de type déclaré" msgstr "$%d de « %s » n'a pas de type déclaré"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s n'est pas valide" msgstr "%s n'est pas valide"

View File

@@ -7,7 +7,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.34a\n" "Project-Id-Version: bison 1.34a\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-04-10 22:20+01\n" "PO-Revision-Date: 2002-04-10 22:20+01\n"
"Last-Translator: Denis Lackovic <delacko@fly.srk.fer.hr>\n" "Last-Translator: Denis Lackovic <delacko@fly.srk.fer.hr>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n" "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -97,12 +97,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "oèekujem %d pomakni/reduciraj konflikt\n" msgstr[0] "oèekujem %d pomakni/reduciraj konflikt\n"
msgstr[1] "oèekujem %d pomakni/reduciraj konflikata\n" msgstr[1] "oèekujem %d pomakni/reduciraj konflikata\n"
#: src/files.c:159 #: src/files.c:157
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "ne mogu otvoriti datoteku `%s'" msgstr "ne mogu otvoriti datoteku `%s'"
#: src/files.c:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "ne mogu zatvoriti datoteku" msgstr "ne mogu zatvoriti datoteku"
@@ -338,29 +338,29 @@ msgstr "nedozvoljena $ vrijednost"
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "vi¹estruke %s deklaracije" msgstr "vi¹estruke %s deklaracije"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "pravilo dato za %s, a to je znak" msgstr "pravilo dato za %s, a to je znak"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "sudar tipova (`%s' `%s') na deaultnoj akciji" msgstr "sudar tipova (`%s' `%s') na deaultnoj akciji"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "prazno pravilo za nezavr¹ni znak, i nema akcije" msgstr "prazno pravilo za nezavr¹ni znak, i nema akcije"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "dva @prec's u retku" msgstr "dva @prec's u retku"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "nema pravila u ulaznoj gramatici" msgstr "nema pravila u ulaznoj gramatici"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "previ¹e simbola (znakovi plus nezavr¹ni znakovi); maksimalno %d" msgstr "previ¹e simbola (znakovi plus nezavr¹ni znakovi); maksimalno %d"
@@ -407,22 +407,22 @@ msgstr[1] "%d beskorisnih pravila"
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Poèetni simbol %s ne daje niti jednu reèenicu" msgstr "Poèetni simbol %s ne daje niti jednu reèenicu"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ od `%s' nema deklarirani tip" msgstr "$$ od `%s' nema deklarirani tip"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "nedozvoljena @ vrijednost" msgstr "nedozvoljena @ vrijednost"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d od `%s' nema deklarirani tip" msgstr "$%d od `%s' nema deklarirani tip"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s je nedozvoljeno" msgstr "%s je nedozvoljeno"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.31\n" "Project-Id-Version: bison 1.31\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-01-18 12:40 CET\n" "PO-Revision-Date: 2002-01-18 12:40 CET\n"
"Last-Translator: Paolo Bonzini <bonzini@gnu.org>\n" "Last-Translator: Paolo Bonzini <bonzini@gnu.org>\n"
"Language-Team: Italian <it@li.org>\n" "Language-Team: Italian <it@li.org>\n"
@@ -98,12 +98,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "atteso %d conflitto shift/riduzione\n" msgstr[0] "atteso %d conflitto shift/riduzione\n"
msgstr[1] "attesi %d conflitti shift/riduzione\n" msgstr[1] "attesi %d conflitti shift/riduzione\n"
#: src/files.c:159 #: src/files.c:157
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "impossibile aprire il file `%s'" msgstr "impossibile aprire il file `%s'"
#: src/files.c:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "impossibile chiudere il file `%s'" msgstr "impossibile chiudere il file `%s'"
@@ -338,29 +338,29 @@ msgstr "valore $ non valido"
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "dichiarazioni multiple per %s" msgstr "dichiarazioni multiple per %s"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "fornita una regola per il token %s" msgstr "fornita una regola per il token %s"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "conflitto di tipo (`%s' e `%s') nell'azione di default" msgstr "conflitto di tipo (`%s' e `%s') nell'azione di default"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "regola vuota e nessuna azione per un nonterminale con tipo" msgstr "regola vuota e nessuna azione per un nonterminale con tipo"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "due @prec di seguito" msgstr "due @prec di seguito"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "nessuna regola nella grammatica di input" msgstr "nessuna regola nella grammatica di input"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "troppi simboli (token e nonterminali); il massimo è %d" msgstr "troppi simboli (token e nonterminali); il massimo è %d"
@@ -407,22 +407,22 @@ msgstr[1] "%d regole inutili"
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "dal simbolo iniziale %s non deriva alcuna frase" msgstr "dal simbolo iniziale %s non deriva alcuna frase"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "Manca una dichiarazione di tipo per $$ di `%s'" msgstr "Manca una dichiarazione di tipo per $$ di `%s'"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, c-format #, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "valore non valido: %s%d" msgstr "valore non valido: %s%d"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "Manca una dichiarazione di tipo per $%d di `%s'" msgstr "Manca una dichiarazione di tipo per $%d di `%s'"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s non è valido" msgstr "%s non è valido"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.30f\n" "Project-Id-Version: GNU bison 1.30f\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2001-12-10 15:59+0900\n" "PO-Revision-Date: 2001-12-10 15:59+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"
@@ -92,12 +92,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 個のシフト/還元衝突であるはずです\n" msgstr[0] "本来 %d 個のシフト/還元衝突であるはずです\n"
#: src/files.c:159 #: src/files.c:157
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "ファイル `%s' を開けません" msgstr "ファイル `%s' を開けません"
#: src/files.c:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "ファイルを閉じることができません" msgstr "ファイルを閉じることができません"
@@ -334,29 +334,29 @@ msgstr "
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "%s が複数個宣言されました" msgstr "%s が複数個宣言されました"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "%s に規則が与えられ、それはトークンとなります" msgstr "%s に規則が与えられ、それはトークンとなります"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "初期状態の動作では型 (`%s' `%s') が衝突します" msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません" msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "@prec のもの二つが同列になっています" msgstr "@prec のもの二つが同列になっています"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "入力した文法に規則が定義されていません" msgstr "入力した文法に規則が定義されていません"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "シンボルが多すぎます (トークン + 非終端アイテム) -- 最大 %d" msgstr "シンボルが多すぎます (トークン + 非終端アイテム) -- 最大 %d"
@@ -400,22 +400,22 @@ msgstr[0] "%d
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "開始シンボル %s はどの文にも由来しません" msgstr "開始シンボル %s はどの文にも由来しません"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "`%s' の $$ に宣言のない型があります" msgstr "`%s' の $$ に宣言のない型があります"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "不適切な $ の値" msgstr "不適切な $ の値"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d 個の `%s' が宣言された型を持っていません" msgstr "$%d 個の `%s' が宣言された型を持っていません"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s は不適切です" msgstr "%s は不適切です"

View File

@@ -6,7 +6,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.34a\n" "Project-Id-Version: bison 1.34a\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-03-20 12:54+0100\n" "PO-Revision-Date: 2002-03-20 12:54+0100\n"
"Last-Translator: Tim Van Holder <tim.van.holder@pandora.be>\n" "Last-Translator: Tim Van Holder <tim.van.holder@pandora.be>\n"
"Language-Team: Dutch <vertaling@nl.linux.org>\n" "Language-Team: Dutch <vertaling@nl.linux.org>\n"
@@ -99,12 +99,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "%d shift/reductie conflict werd verwacht\n" msgstr[0] "%d shift/reductie conflict werd verwacht\n"
msgstr[1] "%d shift/reductie conflicten werden verwacht\n" msgstr[1] "%d shift/reductie conflicten werden verwacht\n"
#: src/files.c:159 #: src/files.c:157
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "kan bestand `%s' niet openen" msgstr "kan bestand `%s' niet openen"
#: src/files.c:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "kan bestand niet sluiten" msgstr "kan bestand niet sluiten"
@@ -350,29 +350,29 @@ msgstr "ongeldige $-waarde"
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "meerdere %s declaraties" msgstr "meerdere %s declaraties"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "regel opgegeven voor token (%s)" msgstr "regel opgegeven voor token (%s)"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "type-conflict (`%s' `%s') bij standaardaktie" msgstr "type-conflict (`%s' `%s') bij standaardaktie"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "lege regel voor niet-eindsymbool met type, en geen actie" msgstr "lege regel voor niet-eindsymbool met type, en geen actie"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "twee @prec's na elkaar" msgstr "twee @prec's na elkaar"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "invoergrammatica bevat geen regels" msgstr "invoergrammatica bevat geen regels"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "teveel symbolen (tokens plus niet-eindsymbolen); het maximum is %d" msgstr "teveel symbolen (tokens plus niet-eindsymbolen); het maximum is %d"
@@ -420,22 +420,22 @@ msgstr[1] "%d nutteloze regels"
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Startsymbool %s wordt vanuit geen enkele zin bereikt" msgstr "Startsymbool %s wordt vanuit geen enkele zin bereikt"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ van `%s' heeft geen gedeclareerd type" msgstr "$$ van `%s' heeft geen gedeclareerd type"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "ongeldige @-waarde" msgstr "ongeldige @-waarde"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d van `%s' heeft geen gedeclareerd type" msgstr "$%d van `%s' heeft geen gedeclareerd type"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s is ongeldig" msgstr "%s is ongeldig"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.32\n" "Project-Id-Version: bison 1.32\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-01-25 12:19+0300\n" "PO-Revision-Date: 2002-01-25 12:19+0300\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"
@@ -102,12 +102,12 @@ msgstr[0] "
msgstr[1] "ÏÖÉÄÁÌÏÓØ %d ËÏÎÆÌÉËÔÁ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n" msgstr[1] "ÏÖÉÄÁÌÏÓØ %d ËÏÎÆÌÉËÔÁ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n"
msgstr[2] "ÏÖÉÄÁÌÏÓØ %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n" msgstr[2] "ÏÖÉÄÁÌÏÓØ %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n"
#: src/files.c:159 #: src/files.c:157
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'" msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'"
#: src/files.c:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ" msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
@@ -347,30 +347,30 @@ msgstr "
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s" msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ" msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ" msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "" msgstr ""
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ" "ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "Ä×Á @prec ÐÏÄÒÑÄ" msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ" msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d"
@@ -420,22 +420,22 @@ msgstr[2] "%d
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ" msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ" msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ" msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d ÉÚ `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ" msgstr "$%d ÉÚ `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s" msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.33b\n" "Project-Id-Version: bison 1.33b\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-03-05 10:18+0100\n" "PO-Revision-Date: 2002-03-05 10:18+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"
@@ -98,12 +98,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "förväntade %d skifta/reducerakonflikt\n" msgstr[0] "förväntade %d skifta/reducerakonflikt\n"
msgstr[1] "förväntade %d skifta/reducerakonflikter\n" msgstr[1] "förväntade %d skifta/reducerakonflikter\n"
#: src/files.c:159 #: src/files.c:157
#, 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:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "kan inte stänga fil" msgstr "kan inte stänga fil"
@@ -342,29 +342,29 @@ msgstr "felaktigt $-v
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "flera %s-deklarationer" msgstr "flera %s-deklarationer"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "regel given för %s, som är ett element" msgstr "regel given för %s, som är ett element"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "typkonflikt (\"%s\" \"%s\") för standardåtgärd" msgstr "typkonflikt (\"%s\" \"%s\") för standardåtgärd"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "tom regel för typad icketerminal, och ingen åtgärd" msgstr "tom regel för typad icketerminal, och ingen åtgärd"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "två @prec i rad" msgstr "två @prec i rad"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "inga regler i ingrammatiken" msgstr "inga regler i ingrammatiken"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "för många symboler (element plus icketerminaler); max %d" msgstr "för många symboler (element plus icketerminaler); max %d"
@@ -411,22 +411,22 @@ msgstr[1] "%d oanv
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Startsymbolen %s genererar inga meningar" msgstr "Startsymbolen %s genererar inga meningar"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ för \"%s\" har ingen deklarerad typ" msgstr "$$ för \"%s\" har ingen deklarerad typ"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "felaktigt @-värde" msgstr "felaktigt @-värde"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d för \"%s\" har ingen deklarerad typ" msgstr "$%d för \"%s\" har ingen deklarerad typ"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s är felaktigt" msgstr "%s är felaktigt"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.34\n" "Project-Id-Version: bison 1.34\n"
"POT-Creation-Date: 2002-06-11 21:15+0200\n" "POT-Creation-Date: 2002-06-15 20:06+0200\n"
"PO-Revision-Date: 2002-03-14 11:03GMT +02:00\n" "PO-Revision-Date: 2002-03-14 11:03GMT +02:00\n"
"Last-Translator: Altuð Bayram <altugbayram_2000@yahoo.com>\n" "Last-Translator: Altuð 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"
@@ -102,12 +102,12 @@ msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "beklenen %d öteleme/indirgeme çeliþkisi\n" msgstr[0] "beklenen %d öteleme/indirgeme çeliþkisi\n"
msgstr[1] "beklenen %d öteleme/indirgeme çeliþkisi\n" msgstr[1] "beklenen %d öteleme/indirgeme çeliþkisi\n"
#: src/files.c:159 #: src/files.c:157
#, 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:178 #: src/files.c:176
msgid "cannot close file" msgid "cannot close file"
msgstr "dosya kapatýlamýyor" msgstr "dosya kapatýlamýyor"
@@ -347,30 +347,30 @@ msgstr "ge
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "çoklu %s bildirimleri" msgstr "çoklu %s bildirimleri"
#: src/reader.c:247 #: src/reader.c:246
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "bir andaç olan %s için verilen kural" msgstr "bir andaç olan %s için verilen kural"
#: src/reader.c:271 #: src/reader.c:270
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý" msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý"
#: src/reader.c:278 #: src/reader.c:277
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "" msgstr ""
"Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylem belirtilmemiþ" "Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylem belirtilmemiþ"
#: src/reader.c:343 #: src/reader.c:342
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "bir satýrda iki @prec" msgstr "bir satýrda iki @prec"
#: src/reader.c:488 #: src/reader.c:483
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "girdi grameri içinde kurallar yok" msgstr "girdi grameri içinde kurallar yok"
#: src/reader.c:520 #: src/reader.c:515
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d" msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d"
@@ -417,22 +417,22 @@ msgstr[1] "%d yarars
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez" msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez"
#: scan-gram.l:508 #: scan-gram.l:549
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "`%s''in $$'ý bildirilmiþ tip deðil" msgstr "`%s''in $$'ý bildirilmiþ tip deðil"
#: scan-gram.l:520 scan-gram.l:571 #: scan-gram.l:561 scan-gram.l:612
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid value: %s%d" msgid "invalid value: %s%d"
msgstr "geçersiz @ deðeri" msgstr "geçersiz @ deðeri"
#: scan-gram.l:526 #: scan-gram.l:567
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "`%2$s''in %1$d'i bildirilmiþ tip deðil" msgstr "`%2$s''in %1$d'i bildirilmiþ tip deðil"
#: scan-gram.l:539 scan-gram.l:580 #: scan-gram.l:580 scan-gram.l:621
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s geçersizdir" msgstr "%s geçersizdir"

View File

@@ -45,7 +45,7 @@ bison_SOURCES = \
getargs.c getargs.h \ getargs.c getargs.h \
gram.c gram.h \ gram.c gram.h \
lalr.h lalr.c \ lalr.h lalr.c \
location.h \ location.c location.h \
main.c \ main.c \
muscle_tab.c muscle_tab.h \ muscle_tab.c muscle_tab.h \
nullable.c nullable.h \ nullable.c nullable.h \

View File

@@ -97,17 +97,18 @@
Associativities are recorded similarly in SYMBOLS[I]->assoc. */ Associativities are recorded similarly in SYMBOLS[I]->assoc. */
#include "symtab.h" # include "location.h"
# include "symtab.h"
#define ISTOKEN(s) ((s) < ntokens) # define ISTOKEN(s) ((s) < ntokens)
#define ISVAR(s) ((s) >= ntokens) # define ISVAR(s) ((s) >= ntokens)
extern int nrules; extern int nrules;
extern int nsyms; extern int nsyms;
extern int ntokens; extern int ntokens;
extern int nvars; extern int nvars;
#define ITEM_NUMBER_MAX INT_MAX # define ITEM_NUMBER_MAX INT_MAX
typedef int item_number_t; typedef int item_number_t;
extern item_number_t *ritem; extern item_number_t *ritem;
extern unsigned int nritems; extern unsigned int nritems;
@@ -118,8 +119,8 @@ extern unsigned int nritems;
Therefore, an symbol_number_t must be a valid item_number_t, and we Therefore, an symbol_number_t must be a valid item_number_t, and we
sometimes have to perform the converse transformation. */ sometimes have to perform the converse transformation. */
#define symbol_number_as_item_number(Tok) ((item_number_t) (Tok)) # define symbol_number_as_item_number(Tok) ((item_number_t) (Tok))
#define item_number_as_symbol_number(Ite) ((symbol_number_t) (Ite)) # define item_number_as_symbol_number(Ite) ((symbol_number_t) (Ite))
extern symbol_number_t start_symbol; extern symbol_number_t start_symbol;
@@ -143,11 +144,11 @@ typedef struct rule_s
/* This symbol was attached to the rule via %prec. */ /* This symbol was attached to the rule via %prec. */
symbol_t *precsym; symbol_t *precsym;
int line; location_t location;
bool useful; bool useful;
const char *action; const char *action;
int action_line; location_t action_location;
} rule_t; } rule_t;
extern struct rule_s *rules; extern struct rule_s *rules;

24
src/location.c Normal file
View File

@@ -0,0 +1,24 @@
/* Locations for Bison
Copyright (C) 2002 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 "location.h"
location_t empty_location = { 0, 0, 0, 0 };

View File

@@ -62,4 +62,6 @@ typedef struct location_s
else \ else \
fprintf (Out, "%d.%d", (Loc).first_line, (Loc).first_column) fprintf (Out, "%d.%d", (Loc).first_line, (Loc).first_column)
extern location_t empty_location;
#endif /* !LOCATION_H_ */ #endif /* !LOCATION_H_ */

View File

@@ -307,7 +307,7 @@ prepare_rules (void)
/* Separator in RHS. */ /* Separator in RHS. */
rhs[i++] = -1; rhs[i++] = -1;
/* Line where rule was defined. */ /* Line where rule was defined. */
rline[r] = rules[r].line; rline[r] = rules[r].location.first_line;
} }
assert (i == nritems); assert (i == nritems);
@@ -544,7 +544,7 @@ actions_output (FILE *out)
if (!no_lines_flag) if (!no_lines_flag)
fprintf (out, muscle_find ("linef"), fprintf (out, muscle_find ("linef"),
rules[rule].action_line, rules[rule].action_location.first_line,
quotearg_style (c_quoting_style, quotearg_style (c_quoting_style,
muscle_find ("filename"))); muscle_find ("filename")));
fprintf (out, " %s\n break;\n\n", fprintf (out, " %s\n break;\n\n",

View File

@@ -74,6 +74,20 @@
/* Produce verbose parse errors. */ /* Produce verbose parse errors. */
#define YYERROR_VERBOSE 1 #define YYERROR_VERBOSE 1
#define YYLLOC_DEFAULT(Current, Rhs, N) \
do { \
if (N) \
{ \
Current.first_column = Rhs[1].first_column; \
Current.first_line = Rhs[1].first_line; \
Current.last_column = Rhs[N].last_column; \
Current.last_line = Rhs[N].last_line; \
} \
else \
{ \
Current = Rhs[0]; \
} \
} while (0)
/* Pass the control structure to YYPARSE and YYLEX. */ /* Pass the control structure to YYPARSE and YYLEX. */
#define YYPARSE_PARAM gram_control #define YYPARSE_PARAM gram_control
@@ -98,6 +112,7 @@ static void yyprint (FILE *file, const location_t *loc,
symbol_class current_class = unknown_sym; symbol_class current_class = unknown_sym;
char *current_type = 0; char *current_type = 0;
symbol_t *current_lhs; symbol_t *current_lhs;
location_t current_lhs_location;
associativity current_assoc; associativity current_assoc;
int current_prec = 0; int current_prec = 0;
@@ -207,15 +222,15 @@ int current_prec = 0;
#endif #endif
#ifndef YYSTYPE #ifndef YYSTYPE
#line 74 "parse-gram.y" #line 89 "parse-gram.y"
typedef union { typedef union {
symbol_t *symbol; symbol_t *symbol;
int integer; int integer;
char *string; char *string;
associativity assoc; associativity assoc;
} yystype; } yystype;
/* Line 199 of /home/akim/src/bison/data/bison.simple. */ /* Line 199 of /usr/local/share/bison/bison.simple. */
#line 219 "parse-gram.c" #line 234 "parse-gram.c"
# define YYSTYPE yystype # define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
#endif #endif
@@ -235,8 +250,8 @@ typedef struct yyltype
/* Copy the second part of user declarations. */ /* Copy the second part of user declarations. */
/* Line 219 of /home/akim/src/bison/data/bison.simple. */ /* Line 219 of /usr/local/share/bison/bison.simple. */
#line 240 "parse-gram.c" #line 255 "parse-gram.c"
#if ! defined (yyoverflow) || YYERROR_VERBOSE #if ! defined (yyoverflow) || YYERROR_VERBOSE
@@ -338,16 +353,16 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */ /* YYFINAL -- State number of the termination state. */
#define YYFINAL 3 #define YYFINAL 3
#define YYFLAG -32768 #define YYFLAG -32768
#define YYLAST 91 #define YYLAST 90
/* YYNTOKENS -- Number of terminals. */ /* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 40 #define YYNTOKENS 40
/* YYNNTS -- Number of nonterminals. */ /* YYNNTS -- Number of nonterminals. */
#define YYNNTS 30 #define YYNNTS 29
/* YYNRULES -- Number of rules. */ /* YYNRULES -- Number of rules. */
#define YYNRULES 72 #define YYNRULES 71
/* YYNRULES -- Number of states. */ /* YYNRULES -- Number of states. */
#define YYNSTATES 98 #define YYNSTATES 97
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2 #define YYUNDEFTOK 2
@@ -396,51 +411,50 @@ static const unsigned char yytranslate[] =
YYRHS. */ YYRHS. */
static const unsigned char yyprhs[] = static const unsigned char yyprhs[] =
{ {
0, 0, 3, 4, 10, 11, 15, 17, 19, 21, 0, 0, 3, 8, 9, 13, 15, 17, 19, 23,
25, 27, 29, 32, 36, 38, 42, 44, 48, 50, 25, 27, 30, 34, 36, 40, 42, 46, 48, 51,
53, 55, 57, 59, 61, 63, 66, 69, 70, 74, 53, 55, 57, 59, 61, 64, 67, 68, 72, 73,
75, 79, 80, 85, 86, 91, 93, 95, 97, 98, 77, 78, 83, 84, 89, 91, 93, 95, 96, 98,
100, 102, 105, 107, 110, 112, 114, 117, 120, 124, 100, 103, 105, 108, 110, 112, 115, 118, 122, 124,
126, 129, 131, 134, 136, 139, 140, 146, 148, 152, 127, 129, 132, 134, 137, 138, 144, 146, 150, 151,
153, 156, 159, 163, 165, 167, 169, 171, 173, 175, 154, 157, 161, 163, 165, 167, 169, 171, 173, 174,
176, 179, 180 177, 178
}; };
/* YYRHS -- A `-1'-separated list of the rules' RHS. */ /* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const signed char yyrhs[] = static const signed char yyrhs[] =
{ {
41, 0, -1, -1, 42, 43, 33, 58, 68, -1, 41, 0, -1, 42, 33, 57, 67, -1, -1, 42,
-1, 43, 44, 69, -1, 45, -1, 34, -1, 22, 43, 68, -1, 44, -1, 34, -1, 22, -1, 18,
-1, 18, 67, 67, -1, 20, -1, 14, -1, 10, 66, 66, -1, 20, -1, 14, -1, 10, 5, -1,
5, -1, 16, 28, 67, -1, 23, -1, 17, 28, 16, 28, 66, -1, 23, -1, 17, 28, 66, -1,
67, -1, 24, -1, 15, 28, 67, -1, 19, -1, 24, -1, 15, 28, 66, -1, 19, -1, 25, 66,
25, 67, -1, 26, -1, 13, -1, 21, -1, 50, -1, 26, -1, 13, -1, 21, -1, 49, -1, 45,
-1, 46, -1, 11, 64, -1, 9, 36, -1, -1, -1, 11, 63, -1, 9, 36, -1, -1, 7, 46,
7, 47, 57, -1, -1, 6, 48, 57, -1, -1, 56, -1, -1, 6, 47, 56, -1, -1, 8, 27,
8, 27, 49, 54, -1, -1, 52, 53, 51, 55, 48, 53, -1, -1, 51, 52, 50, 54, -1, 37,
-1, 37, -1, 38, -1, 39, -1, -1, 27, -1, -1, 38, -1, 39, -1, -1, 27, -1, 32, -1,
32, -1, 54, 32, -1, 64, -1, 55, 64, -1, 53, 32, -1, 63, -1, 54, 63, -1, 27, -1,
27, -1, 32, -1, 32, 5, -1, 32, 66, -1, 32, -1, 32, 5, -1, 32, 65, -1, 32, 5,
32, 5, 66, -1, 56, -1, 57, 56, -1, 59, 65, -1, 55, -1, 56, 55, -1, 58, -1, 57,
-1, 58, 59, -1, 60, -1, 45, 29, -1, -1, 58, -1, 59, -1, 44, 29, -1, -1, 32, 30,
32, 30, 61, 62, 29, -1, 63, -1, 62, 31, 60, 61, 29, -1, 62, -1, 61, 31, 62, -1,
63, -1, -1, 63, 64, -1, 63, 65, -1, 63, -1, 62, 63, -1, 62, 64, -1, 62, 12, 63,
12, 64, -1, 32, -1, 66, -1, 4, -1, 36, -1, 32, -1, 65, -1, 4, -1, 36, -1, 3,
-1, 3, -1, 3, -1, -1, 33, 35, -1, -1, -1, 3, -1, -1, 33, 35, -1, -1, 29, -1
29, -1
}; };
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short yyrline[] = static const unsigned short yyrline[] =
{ {
0, 131, 131, 131, 144, 146, 149, 151, 152, 153, 0, 146, 146, 159, 161, 164, 166, 167, 168, 169,
154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
164, 165, 166, 169, 171, 172, 176, 184, 184, 190, 180, 181, 184, 186, 187, 191, 199, 199, 205, 205,
190, 195, 195, 201, 201, 211, 213, 214, 217, 219, 210, 210, 216, 216, 226, 228, 229, 232, 234, 238,
223, 225, 229, 235, 243, 248, 253, 259, 265, 275, 240, 244, 250, 258, 263, 268, 274, 280, 290, 293,
278, 287, 289, 295, 297, 300, 300, 305, 307, 310, 302, 304, 310, 312, 315, 315, 320, 322, 325, 328,
313, 315, 317, 321, 323, 324, 327, 333, 342, 350, 330, 332, 336, 338, 339, 342, 348, 357, 365, 370,
355, 361, 363 376, 378
}; };
#endif #endif
@@ -457,11 +471,11 @@ static const char *const yytname[] =
"\"%locations\"", "\"%no-lines\"", "\"%skeleton\"", "\"%token-table\"", "\"%locations\"", "\"%no-lines\"", "\"%skeleton\"", "\"%token-table\"",
"TYPE", "\"=\"", "\";\"", "\":\"", "\"|\"", "\"identifier\"", "\"%%\"", "TYPE", "\"=\"", "\";\"", "\":\"", "\"|\"", "\"identifier\"", "\"%%\"",
"PROLOGUE", "EPILOGUE", "BRACED_CODE", "\"%left\"", "\"%right\"", "PROLOGUE", "EPILOGUE", "BRACED_CODE", "\"%left\"", "\"%right\"",
"\"%nonassoc\"", "$axiom", "input", "@1", "declarations", "declaration", "\"%nonassoc\"", "$axiom", "input", "declarations", "declaration",
"grammar_declaration", "symbol_declaration", "@2", "@3", "@4", "grammar_declaration", "symbol_declaration", "@1", "@2", "@3",
"precedence_declaration", "@5", "precedence_declarator", "type.opt", "precedence_declaration", "@4", "precedence_declarator", "type.opt",
"nterms_to_type.1", "terms_to_prec.1", "symbol_def", "symbol_defs.1", "nterms_to_type.1", "terms_to_prec.1", "symbol_def", "symbol_defs.1",
"grammar", "rules_or_grammar_declaration", "rules", "@6", "rhses.1", "grammar", "rules_or_grammar_declaration", "rules", "@5", "rhses.1",
"rhs", "symbol", "action", "string_as_id", "string_content", "rhs", "symbol", "action", "string_as_id", "string_content",
"epilogue.opt", "semi_colon.opt", 0 "epilogue.opt", "semi_colon.opt", 0
}; };
@@ -481,27 +495,27 @@ static const short yytoknum[] =
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const unsigned char yyr1[] = static const unsigned char yyr1[] =
{ {
0, 40, 42, 41, 43, 43, 44, 44, 44, 44, 0, 40, 41, 42, 42, 43, 43, 43, 43, 43,
44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
44, 44, 44, 45, 45, 45, 45, 47, 46, 48, 43, 43, 44, 44, 44, 44, 46, 45, 47, 45,
46, 49, 46, 51, 50, 52, 52, 52, 53, 53, 48, 45, 50, 49, 51, 51, 51, 52, 52, 53,
54, 54, 55, 55, 56, 56, 56, 56, 56, 57, 53, 54, 54, 55, 55, 55, 55, 55, 56, 56,
57, 58, 58, 59, 59, 61, 60, 62, 62, 63, 57, 57, 58, 58, 60, 59, 61, 61, 62, 62,
63, 63, 63, 64, 64, 64, 65, 66, 67, 68, 62, 62, 63, 63, 63, 64, 65, 66, 67, 67,
68, 69, 69 68, 68
}; };
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const unsigned char yyr2[] = static const unsigned char yyr2[] =
{ {
0, 2, 0, 5, 0, 3, 1, 1, 1, 3, 0, 2, 4, 0, 3, 1, 1, 1, 3, 1,
1, 1, 2, 3, 1, 3, 1, 3, 1, 2, 1, 2, 3, 1, 3, 1, 3, 1, 2, 1,
1, 1, 1, 1, 1, 2, 2, 0, 3, 0, 1, 1, 1, 1, 2, 2, 0, 3, 0, 3,
3, 0, 4, 0, 4, 1, 1, 1, 0, 1, 0, 4, 0, 4, 1, 1, 1, 0, 1, 1,
1, 2, 1, 2, 1, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 2, 3, 1, 2,
2, 1, 2, 1, 2, 0, 5, 1, 3, 0, 1, 2, 1, 2, 0, 5, 1, 3, 0, 2,
2, 2, 3, 1, 1, 1, 1, 1, 1, 0, 2, 3, 1, 1, 1, 1, 1, 1, 0, 2,
2, 0, 1 0, 1
}; };
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -509,48 +523,48 @@ static const unsigned char yyr2[] =
means the default is an error. */ means the default is an error. */
static const short yydefact[] = static const short yydefact[] =
{ {
2, 0, 4, 0, 0, 29, 27, 0, 0, 0, 3, 0, 0, 0, 28, 26, 0, 0, 0, 0,
0, 21, 11, 0, 0, 0, 0, 18, 10, 22, 20, 10, 0, 0, 0, 0, 17, 9, 21, 7,
8, 14, 16, 0, 20, 0, 7, 35, 36, 37, 13, 15, 0, 19, 0, 6, 34, 35, 36, 70,
71, 6, 24, 23, 38, 0, 0, 31, 26, 12, 5, 23, 22, 37, 0, 0, 30, 25, 11, 66,
67, 65, 63, 25, 64, 0, 0, 0, 68, 0, 64, 62, 24, 63, 0, 0, 0, 67, 0, 18,
19, 0, 0, 69, 51, 53, 72, 5, 39, 33, 0, 0, 68, 50, 52, 71, 4, 38, 32, 43,
44, 45, 49, 30, 28, 0, 17, 13, 15, 9, 44, 48, 29, 27, 0, 16, 12, 14, 8, 54,
55, 54, 0, 52, 3, 0, 46, 47, 50, 40, 53, 0, 51, 2, 0, 45, 46, 49, 39, 31,
32, 59, 70, 34, 42, 48, 41, 0, 57, 43, 58, 69, 33, 41, 47, 40, 0, 56, 42, 55,
56, 59, 0, 66, 60, 61, 58, 62 58, 0, 65, 59, 60, 57, 61
}; };
/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
static const short yydefgoto[] = static const short yydefgoto[] =
{ {
-1, 1, 2, 4, 30, 52, 32, 36, 35, 65, -1, 1, 2, 29, 51, 31, 35, 34, 64, 32,
33, 75, 34, 59, 80, 83, 62, 63, 53, 54, 74, 33, 58, 79, 82, 61, 62, 52, 53, 54,
55, 81, 87, 88, 94, 95, 44, 49, 74, 57 80, 86, 87, 93, 94, 43, 48, 73, 56
}; };
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */ STATE-NUM. */
static const short yypact[] = static const short yypact[] =
{ {
-32768, 7,-32768,-32768, -5,-32768,-32768, -1, 11, 51, -32768, 7, -5,-32768,-32768,-32768, -1, 11, 46, 38,
38,-32768,-32768, 36, 43, 44, 66,-32768,-32768,-32768, -32768,-32768, 36, 43, 44, 66,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 66,-32768, 29,-32768,-32768,-32768,-32768, -32768,-32768, 66,-32768, 29,-32768,-32768,-32768,-32768, 48,
45,-32768,-32768,-32768, 48, 18, 18,-32768,-32768,-32768, -32768,-32768,-32768, 52, 18, 18,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768, 66, 66, 66,-32768, 66, -32768,-32768,-32768,-32768, 66, 66, 66,-32768, 66,-32768,
-32768, 46, 49, 16,-32768,-32768,-32768,-32768,-32768,-32768, 50, 54, 16,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768, 41,-32768, 18, 18, 52,-32768,-32768,-32768,-32768, 41,-32768, 18, 18, 49,-32768,-32768,-32768,-32768,-32768,
-32768,-32768, 42,-32768,-32768, 38, 82,-32768,-32768,-32768, -32768, 51,-32768,-32768, 38, 81,-32768,-32768,-32768, 53,
54,-32768,-32768, 38,-32768,-32768,-32768, 31, 27,-32768, -32768,-32768, 38,-32768,-32768,-32768, 31, 27,-32768,-32768,
-32768,-32768, 38,-32768,-32768,-32768, 27,-32768 -32768, 38,-32768,-32768,-32768, 27,-32768
}; };
/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
static const short yypgoto[] = static const short yypgoto[] =
{ {
-32768,-32768,-32768,-32768,-32768, 83,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768, 85,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768, -12, 53,-32768, 35, -32768,-32768,-32768,-32768,-32768, -6, 55,-32768, 37,-32768,
-32768,-32768,-32768, 0, -10,-32768, -18, 34,-32768,-32768 -32768,-32768, -2, -9,-32768, -17, 30,-32768,-32768
}; };
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -558,30 +572,30 @@ static const short yypgoto[] =
number is the opposite. If zero, do what YYDEFACT says. */ number is the opposite. If zero, do what YYDEFACT says. */
static const short yytable[] = static const short yytable[] =
{ {
43, 5, 6, 7, 8, 9, 10, 3, 11, 12, 42, 4, 5, 6, 7, 8, 9, 3, 10, 11,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
23, 24, 5, 6, 7, 8, 37, 10, 25, 26, 22, 23, 4, 5, 6, 7, 36, 9, 24, 25,
40, 41, 27, 28, 29, 5, 6, 7, 8, 92, 39, 40, 26, 27, 28, 4, 5, 6, 7, 91,
10, 40, 41, 77, 40, 60, 76, 38, 51, 72, 9, 39, 40, 76, 39, 59, 75, 37, 50, 71,
61, 78, 78, 27, 28, 29, 39, 50, 85, 42, 60, 38, 49, 26, 27, 28, 77, 77, 84, 41,
90, 51, 91, 93, 45, 84, 27, 28, 29, 48, 89, 50, 90, 92, 44, 83, 26, 27, 28, 47,
42, 46, 47, 89, 56, 58, 70, 82, 71, 66, 41, 45, 46, 88, 65, 66, 67, 55, 68, 57,
67, 68, 97, 69, 79, 40, 86, 31, 73, 64, 69, 78, 96, 70, 39, 85, 81, 30, 95, 72,
0, 96 63
}; };
static const short yycheck[] = static const short yycheck[] =
{ {
10, 6, 7, 8, 9, 10, 11, 0, 13, 14, 9, 6, 7, 8, 9, 10, 11, 0, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 6, 7, 8, 9, 27, 11, 33, 34, 25, 26, 6, 7, 8, 9, 27, 11, 33, 34,
3, 4, 37, 38, 39, 6, 7, 8, 9, 12, 3, 4, 37, 38, 39, 6, 7, 8, 9, 12,
11, 3, 4, 61, 3, 27, 5, 36, 32, 33, 11, 3, 4, 60, 3, 27, 5, 36, 32, 33,
32, 63, 64, 37, 38, 39, 5, 23, 76, 32, 32, 5, 22, 37, 38, 39, 62, 63, 75, 32,
29, 32, 31, 36, 28, 75, 37, 38, 39, 3, 29, 32, 31, 36, 28, 74, 37, 38, 39, 3,
32, 28, 28, 83, 29, 27, 30, 35, 29, 45, 32, 28, 28, 82, 44, 45, 46, 29, 48, 27,
46, 47, 92, 49, 32, 3, 32, 4, 53, 36, 30, 32, 91, 29, 3, 32, 35, 2, 90, 52,
-1, 91 35
}; };
#if YYDEBUG #if YYDEBUG
@@ -589,16 +603,16 @@ static const short yycheck[] =
symbol of state STATE-NUM. */ symbol of state STATE-NUM. */
static const unsigned char yystos[] = static const unsigned char yystos[] =
{ {
0, 41, 42, 0, 43, 6, 7, 8, 9, 10, 0, 41, 42, 0, 6, 7, 8, 9, 10, 11,
11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
22, 23, 24, 25, 26, 33, 34, 37, 38, 39, 23, 24, 25, 26, 33, 34, 37, 38, 39, 43,
44, 45, 46, 50, 52, 48, 47, 27, 36, 5, 44, 45, 49, 51, 47, 46, 27, 36, 5, 3,
3, 4, 32, 64, 66, 28, 28, 28, 3, 67, 4, 32, 63, 65, 28, 28, 28, 3, 66, 66,
67, 32, 45, 58, 59, 60, 29, 69, 27, 53, 32, 44, 57, 58, 59, 29, 68, 27, 52, 27,
27, 32, 56, 57, 57, 49, 67, 67, 67, 67, 32, 55, 56, 56, 48, 66, 66, 66, 66, 30,
30, 29, 33, 59, 68, 51, 5, 66, 56, 32, 29, 33, 58, 67, 50, 5, 65, 55, 32, 53,
54, 61, 35, 55, 64, 66, 32, 62, 63, 64, 60, 35, 54, 63, 65, 32, 61, 62, 63, 29,
29, 31, 12, 36, 64, 65, 63, 64 31, 12, 36, 63, 64, 62, 63
}; };
#endif #endif
@@ -1168,107 +1182,102 @@ yyreduce:
switch (yyn) switch (yyn)
{ {
case 2: case 2:
#line 131 "parse-gram.y" #line 148 "parse-gram.y"
{ LOCATION_RESET (yylloc); }
break;
case 3:
#line 133 "parse-gram.y"
{ {
yycontrol->errcode = 0; yycontrol->errcode = 0;
epilogue_set (yyvsp[0].string, yylsp[0]); epilogue_set (yyvsp[0].string, yylsp[0]);
} }
break; break;
case 7: case 6:
#line 151 "parse-gram.y" #line 166 "parse-gram.y"
{ prologue_augment (yyvsp[0].string, yylsp[0]); } { prologue_augment (yyvsp[0].string, yylsp[0]); }
break; break;
case 8: case 7:
#line 152 "parse-gram.y" #line 167 "parse-gram.y"
{ debug_flag = 1; } { debug_flag = 1; }
break; break;
case 9: case 8:
#line 153 "parse-gram.y" #line 168 "parse-gram.y"
{ muscle_insert (yyvsp[-1].string, yyvsp[0].string); } { muscle_insert (yyvsp[-1].string, yyvsp[0].string); }
break; break;
case 10: case 9:
#line 154 "parse-gram.y" #line 169 "parse-gram.y"
{ defines_flag = 1; } { defines_flag = 1; }
break; break;
case 11: case 10:
#line 155 "parse-gram.y" #line 170 "parse-gram.y"
{ error_verbose = 1; } { error_verbose = 1; }
break; break;
case 12: case 11:
#line 156 "parse-gram.y" #line 171 "parse-gram.y"
{ expected_conflicts = yyvsp[0].integer; } { expected_conflicts = yyvsp[0].integer; }
break; break;
case 13: case 12:
#line 157 "parse-gram.y" #line 172 "parse-gram.y"
{ spec_file_prefix = yyvsp[0].string; } { spec_file_prefix = yyvsp[0].string; }
break; break;
case 14: case 13:
#line 158 "parse-gram.y" #line 173 "parse-gram.y"
{ locations_flag = 1; } { locations_flag = 1; }
break; break;
case 15: case 14:
#line 159 "parse-gram.y" #line 174 "parse-gram.y"
{ spec_name_prefix = yyvsp[0].string; } { spec_name_prefix = yyvsp[0].string; }
break; break;
case 16: case 15:
#line 160 "parse-gram.y" #line 175 "parse-gram.y"
{ no_lines_flag = 1; } { no_lines_flag = 1; }
break; break;
case 17: case 16:
#line 161 "parse-gram.y" #line 176 "parse-gram.y"
{ spec_outfile = yyvsp[0].string; } { spec_outfile = yyvsp[0].string; }
break; break;
case 18: case 17:
#line 162 "parse-gram.y" #line 177 "parse-gram.y"
{ pure_parser = 1; } { pure_parser = 1; }
break; break;
case 19: case 18:
#line 163 "parse-gram.y" #line 178 "parse-gram.y"
{ skeleton = yyvsp[0].string; } { skeleton = yyvsp[0].string; }
break; break;
case 20: case 19:
#line 164 "parse-gram.y" #line 179 "parse-gram.y"
{ token_table_flag = 1; } { token_table_flag = 1; }
break; break;
case 21: case 20:
#line 165 "parse-gram.y" #line 180 "parse-gram.y"
{ report_flag = 1; } { report_flag = 1; }
break; break;
case 22: case 21:
#line 166 "parse-gram.y" #line 181 "parse-gram.y"
{ yacc_flag = 1; } { yacc_flag = 1; }
break; break;
case 25: case 24:
#line 173 "parse-gram.y" #line 188 "parse-gram.y"
{ {
grammar_start_symbol_set (yyvsp[0].symbol); grammar_start_symbol_set (yyvsp[0].symbol, yylsp[0]);
} }
break; break;
case 26: case 25:
#line 177 "parse-gram.y" #line 192 "parse-gram.y"
{ {
typed = 1; typed = 1;
MUSCLE_INSERT_INT ("stype_line", yylsp[0].first_line); MUSCLE_INSERT_INT ("stype_line", yylsp[0].first_line);
@@ -1276,91 +1285,99 @@ yyreduce:
} }
break; break;
case 27: case 26:
#line 185 "parse-gram.y" #line 200 "parse-gram.y"
{ current_class = nterm_sym; } { current_class = nterm_sym; }
break; break;
case 28: case 27:
#line 186 "parse-gram.y" #line 201 "parse-gram.y"
{ {
current_class = unknown_sym; current_class = unknown_sym;
current_type = NULL; current_type = NULL;
} }
break; break;
case 29: case 28:
#line 190 "parse-gram.y" #line 205 "parse-gram.y"
{ current_class = token_sym; } { current_class = token_sym; }
break; break;
case 30: case 29:
#line 191 "parse-gram.y" #line 206 "parse-gram.y"
{ {
current_class = unknown_sym; current_class = unknown_sym;
current_type = NULL; current_type = NULL;
} }
break; break;
case 31: case 30:
#line 195 "parse-gram.y" #line 210 "parse-gram.y"
{current_type = yyvsp[0].string; } {current_type = yyvsp[0].string; }
break; break;
case 32: case 31:
#line 196 "parse-gram.y" #line 211 "parse-gram.y"
{ {
current_type = NULL; current_type = NULL;
} }
break; break;
case 33: case 32:
#line 203 "parse-gram.y" #line 218 "parse-gram.y"
{ current_assoc = yyvsp[-1].assoc; ++current_prec; } { current_assoc = yyvsp[-1].assoc; ++current_prec; }
break; break;
case 34: case 33:
#line 205 "parse-gram.y" #line 220 "parse-gram.y"
{ current_assoc = non_assoc; current_type = NULL; } { current_assoc = non_assoc; current_type = NULL; }
break; break;
case 35: case 34:
#line 212 "parse-gram.y" #line 227 "parse-gram.y"
{ yyval.assoc = left_assoc; } { yyval.assoc = left_assoc; }
break; break;
case 36: case 35:
#line 213 "parse-gram.y" #line 228 "parse-gram.y"
{ yyval.assoc = right_assoc; } { yyval.assoc = right_assoc; }
break; break;
case 37: case 36:
#line 214 "parse-gram.y" #line 229 "parse-gram.y"
{ yyval.assoc = non_assoc; } { yyval.assoc = non_assoc; }
break; break;
case 38: case 37:
#line 218 "parse-gram.y" #line 233 "parse-gram.y"
{ current_type = NULL;} { current_type = NULL;}
break; break;
case 39: case 38:
#line 219 "parse-gram.y" #line 234 "parse-gram.y"
{ current_type = yyvsp[0].string; } { current_type = yyvsp[0].string; }
break; break;
case 39:
#line 239 "parse-gram.y"
{ symbol_type_set (yyvsp[0].symbol, current_type); }
break;
case 40: case 40:
#line 224 "parse-gram.y" #line 240 "parse-gram.y"
{ symbol_type_set (yyvsp[0].symbol, current_type); } { symbol_type_set (yyvsp[0].symbol, current_type); }
break; break;
case 41: case 41:
#line 225 "parse-gram.y" #line 246 "parse-gram.y"
{ symbol_type_set (yyvsp[0].symbol, current_type); } {
symbol_type_set (yyvsp[0].symbol, current_type);
symbol_precedence_set (yyvsp[0].symbol, current_prec, current_assoc);
}
break; break;
case 42: case 42:
#line 231 "parse-gram.y" #line 251 "parse-gram.y"
{ {
symbol_type_set (yyvsp[0].symbol, current_type); symbol_type_set (yyvsp[0].symbol, current_type);
symbol_precedence_set (yyvsp[0].symbol, current_prec, current_assoc); symbol_precedence_set (yyvsp[0].symbol, current_prec, current_assoc);
@@ -1368,30 +1385,22 @@ yyreduce:
break; break;
case 43: case 43:
#line 236 "parse-gram.y" #line 260 "parse-gram.y"
{
symbol_type_set (yyvsp[0].symbol, current_type);
symbol_precedence_set (yyvsp[0].symbol, current_prec, current_assoc);
}
break;
case 44:
#line 245 "parse-gram.y"
{ {
current_type = yyvsp[0].string; current_type = yyvsp[0].string;
} }
break; break;
case 45: case 44:
#line 249 "parse-gram.y" #line 264 "parse-gram.y"
{ {
symbol_class_set (yyvsp[0].symbol, current_class); symbol_class_set (yyvsp[0].symbol, current_class);
symbol_type_set (yyvsp[0].symbol, current_type); symbol_type_set (yyvsp[0].symbol, current_type);
} }
break; break;
case 46: case 45:
#line 254 "parse-gram.y" #line 269 "parse-gram.y"
{ {
symbol_class_set (yyvsp[-1].symbol, current_class); symbol_class_set (yyvsp[-1].symbol, current_class);
symbol_type_set (yyvsp[-1].symbol, current_type); symbol_type_set (yyvsp[-1].symbol, current_type);
@@ -1399,8 +1408,8 @@ yyreduce:
} }
break; break;
case 47: case 46:
#line 260 "parse-gram.y" #line 275 "parse-gram.y"
{ {
symbol_class_set (yyvsp[-1].symbol, current_class); symbol_class_set (yyvsp[-1].symbol, current_class);
symbol_type_set (yyvsp[-1].symbol, current_type); symbol_type_set (yyvsp[-1].symbol, current_type);
@@ -1408,8 +1417,8 @@ yyreduce:
} }
break; break;
case 48: case 47:
#line 266 "parse-gram.y" #line 281 "parse-gram.y"
{ {
symbol_class_set (yyvsp[-2].symbol, current_class); symbol_class_set (yyvsp[-2].symbol, current_class);
symbol_type_set (yyvsp[-2].symbol, current_type); symbol_type_set (yyvsp[-2].symbol, current_type);
@@ -1418,101 +1427,101 @@ yyreduce:
} }
break; break;
case 49: case 48:
#line 277 "parse-gram.y" #line 292 "parse-gram.y"
{;} {;}
break; break;
case 50: case 49:
#line 279 "parse-gram.y" #line 294 "parse-gram.y"
{;} {;}
break; break;
case 54:
#line 316 "parse-gram.y"
{ current_lhs = yyvsp[-1].symbol; current_lhs_location = yylsp[-1]; }
break;
case 55: case 55:
#line 301 "parse-gram.y" #line 317 "parse-gram.y"
{ current_lhs = yyvsp[-1].symbol; }
break;
case 56:
#line 302 "parse-gram.y"
{;} {;}
break; break;
case 56:
#line 321 "parse-gram.y"
{ grammar_rule_end (yylsp[0]); }
break;
case 57: case 57:
#line 306 "parse-gram.y" #line 322 "parse-gram.y"
{ grammar_rule_end (); } { grammar_rule_end (yylsp[0]); }
break; break;
case 58: case 58:
#line 307 "parse-gram.y" #line 327 "parse-gram.y"
{ grammar_rule_end (); } { grammar_rule_begin (current_lhs, current_lhs_location); }
break; break;
case 59: case 59:
#line 312 "parse-gram.y" #line 329 "parse-gram.y"
{ grammar_rule_begin (current_lhs); } { grammar_current_rule_symbol_append (yyvsp[0].symbol, yylsp[0]); }
break; break;
case 60: case 60:
#line 314 "parse-gram.y" #line 331 "parse-gram.y"
{ grammar_current_rule_symbol_append (yyvsp[0].symbol); } { grammar_current_rule_action_append (yyvsp[0].string, yylsp[0]); }
break; break;
case 61: case 61:
#line 316 "parse-gram.y" #line 333 "parse-gram.y"
{ grammar_current_rule_action_append (yyvsp[0].string, yylsp[0].first_line); }
break;
case 62:
#line 318 "parse-gram.y"
{ grammar_current_rule_prec_set (yyvsp[0].symbol); } { grammar_current_rule_prec_set (yyvsp[0].symbol); }
break; break;
case 62:
#line 337 "parse-gram.y"
{ yyval.symbol = yyvsp[0].symbol; }
break;
case 63: case 63:
#line 322 "parse-gram.y" #line 338 "parse-gram.y"
{ yyval.symbol = yyvsp[0].symbol; } { yyval.symbol = yyvsp[0].symbol; }
break; break;
case 64: case 64:
#line 323 "parse-gram.y" #line 339 "parse-gram.y"
{ yyval.symbol = yyvsp[0].symbol; }
break;
case 65:
#line 324 "parse-gram.y"
{ yyval.symbol = getsym (yyvsp[0].string); } { yyval.symbol = getsym (yyvsp[0].string); }
break; break;
case 66: case 65:
#line 329 "parse-gram.y" #line 344 "parse-gram.y"
{ yyval.string = yyvsp[0].string; } { yyval.string = yyvsp[0].string; }
break; break;
case 67: case 66:
#line 335 "parse-gram.y" #line 350 "parse-gram.y"
{ {
yyval.symbol = getsym (yyvsp[0].string); yyval.symbol = getsym (yyvsp[0].string);
symbol_class_set (yyval.symbol, token_sym); symbol_class_set (yyval.symbol, token_sym);
} }
break; break;
case 68: case 67:
#line 344 "parse-gram.y" #line 359 "parse-gram.y"
{ {
yyval.string = yyvsp[0].string + 1; yyval.string = yyvsp[0].string + 1;
yyval.string[strlen (yyval.string) - 1] = '\0'; yyval.string[strlen (yyval.string) - 1] = '\0';
} }
break; break;
case 69: case 68:
#line 352 "parse-gram.y" #line 367 "parse-gram.y"
{ {
yyval.string = xstrdup (""); yyval.string = xstrdup ("");
} }
break; break;
case 70: case 69:
#line 356 "parse-gram.y" #line 371 "parse-gram.y"
{ {
yyval.string = yyvsp[0].string; yyval.string = yyvsp[0].string;
} }
@@ -1521,8 +1530,8 @@ yyreduce:
} }
/* Line 1012 of /home/akim/src/bison/data/bison.simple. */ /* Line 1012 of /usr/local/share/bison/bison.simple. */
#line 1526 "parse-gram.c" #line 1535 "parse-gram.c"
yyvsp -= yylen; yyvsp -= yylen;
yyssp -= yylen; yyssp -= yylen;
@@ -1743,7 +1752,7 @@ yyreturn:
return yyresult; return yyresult;
} }
#line 365 "parse-gram.y" #line 380 "parse-gram.y"
/*------------------------------------------------------------------. /*------------------------------------------------------------------.
| When debugging the parser, display tokens' locations and values. | | When debugging the parser, display tokens' locations and values. |

View File

@@ -93,14 +93,14 @@
#ifndef YYSTYPE #ifndef YYSTYPE
#line 74 "parse-gram.y" #line 89 "parse-gram.y"
typedef union { typedef union {
symbol_t *symbol; symbol_t *symbol;
int integer; int integer;
char *string; char *string;
associativity assoc; associativity assoc;
} yystype; } yystype;
/* Line 1271 of /home/akim/src/bison/data/bison.simple. */ /* Line 1271 of /usr/local/share/bison/bison.simple. */
#line 105 "y.tab.h" #line 105 "y.tab.h"
# define YYSTYPE yystype # define YYSTYPE yystype
#endif #endif

View File

@@ -40,6 +40,20 @@
/* Produce verbose parse errors. */ /* Produce verbose parse errors. */
#define YYERROR_VERBOSE 1 #define YYERROR_VERBOSE 1
#define YYLLOC_DEFAULT(Current, Rhs, N) \
do { \
if (N) \
{ \
Current.first_column = Rhs[1].first_column; \
Current.first_line = Rhs[1].first_line; \
Current.last_column = Rhs[N].last_column; \
Current.last_line = Rhs[N].last_line; \
} \
else \
{ \
Current = Rhs[0]; \
} \
} while (0)
/* Pass the control structure to YYPARSE and YYLEX. */ /* Pass the control structure to YYPARSE and YYLEX. */
#define YYPARSE_PARAM gram_control #define YYPARSE_PARAM gram_control
@@ -64,6 +78,7 @@ static void yyprint (FILE *file, const location_t *loc,
symbol_class current_class = unknown_sym; symbol_class current_class = unknown_sym;
char *current_type = 0; char *current_type = 0;
symbol_t *current_lhs; symbol_t *current_lhs;
location_t current_lhs_location;
associativity current_assoc; associativity current_assoc;
int current_prec = 0; int current_prec = 0;
%} %}
@@ -128,11 +143,11 @@ int current_prec = 0;
%% %%
input: { LOCATION_RESET (yylloc); } input:
declarations "%%" grammar epilogue.opt declarations "%%" grammar epilogue.opt
{ {
yycontrol->errcode = 0; yycontrol->errcode = 0;
epilogue_set ($5, @5); epilogue_set ($4, @4);
} }
; ;
@@ -171,7 +186,7 @@ grammar_declaration:
| symbol_declaration | symbol_declaration
| "%start" symbol | "%start" symbol
{ {
grammar_start_symbol_set ($2); grammar_start_symbol_set ($2, @2);
} }
| "%union" BRACED_CODE | "%union" BRACED_CODE
{ {
@@ -298,22 +313,22 @@ rules_or_grammar_declaration:
; ;
rules: rules:
ID ":" { current_lhs = $1; } rhses.1 ";" ID ":" { current_lhs = $1; current_lhs_location = @1; } rhses.1 ";"
{;} {;}
; ;
rhses.1: rhses.1:
rhs { grammar_rule_end (); } rhs { grammar_rule_end (@1); }
| rhses.1 "|" rhs { grammar_rule_end (); } | rhses.1 "|" rhs { grammar_rule_end (@3); }
; ;
rhs: rhs:
/* Nothing. */ /* Nothing. */
{ grammar_rule_begin (current_lhs); } { grammar_rule_begin (current_lhs, current_lhs_location); }
| rhs symbol | rhs symbol
{ grammar_current_rule_symbol_append ($2); } { grammar_current_rule_symbol_append ($2, @2); }
| rhs action | rhs action
{ grammar_current_rule_action_append ($2, @2.first_line); } { grammar_current_rule_action_append ($2, @2); }
| rhs "%prec" symbol | rhs "%prec" symbol
{ grammar_current_rule_prec_set ($3); } { grammar_current_rule_prec_set ($3); }
; ;

View File

@@ -399,8 +399,9 @@ print_grammar (FILE *out)
fprintf (out, " %s\n", _("Number, Line, Rule")); fprintf (out, " %s\n", _("Number, Line, Rule"));
for (j = 1; j < nrules + 1; j++) for (j = 1; j < nrules + 1; j++)
{ {
fprintf (out, _(" %3d %3d %s ->"), fprintf (out, " %3d %3d %s ->",
j - 1, rules[j].line, escape (rules[j].lhs->tag)); j - 1, rules[j].location.first_line,
escape (rules[j].lhs->tag));
rule = rules[j].rhs; rule = rules[j].rhs;
if (*rule >= 0) if (*rule >= 0)
while (*rule >= 0) while (*rule >= 0)

View File

@@ -42,14 +42,13 @@ static int start_flag = 0;
int typed = 0; int typed = 0;
static symbol_list * static symbol_list *
symbol_list_new (symbol_t *sym) symbol_list_new (symbol_t *sym, location_t location)
{ {
symbol_list *res = XMALLOC (symbol_list, 1); symbol_list *res = XMALLOC (symbol_list, 1);
res->next = NULL; res->next = NULL;
res->sym = sym; res->sym = sym;
res->line = lineno; res->location = location;
res->action = NULL; res->action = NULL;
res->action_line = 0;
res->ruleprec = NULL; res->ruleprec = NULL;
return res; return res;
} }
@@ -95,7 +94,7 @@ get_type_name (int n, symbol_list *rule)
`-----------------------*/ `-----------------------*/
void void
grammar_start_symbol_set (symbol_t *s) grammar_start_symbol_set (symbol_t *s, location_t l)
{ {
if (start_flag) if (start_flag)
complain (_("multiple %s declarations"), "%start"); complain (_("multiple %s declarations"), "%start");
@@ -103,6 +102,7 @@ grammar_start_symbol_set (symbol_t *s)
{ {
start_flag = 1; start_flag = 1;
startsymbol = s; startsymbol = s;
startsymbol_location = l;
} }
} }
@@ -197,9 +197,9 @@ symbol_list *grammar_end = NULL;
/* Append S to the GRAMMAR. */ /* Append S to the GRAMMAR. */
void void
grammar_symbol_append (symbol_t *s) grammar_symbol_append (symbol_t *symbol, location_t location)
{ {
symbol_list *p = symbol_list_new (s); symbol_list *p = symbol_list_new (symbol, location);
if (grammar_end) if (grammar_end)
grammar_end->next = p; grammar_end->next = p;
@@ -209,20 +209,24 @@ grammar_symbol_append (symbol_t *s)
grammar_end = p; grammar_end = p;
} }
/* The rule currently being defined, and the previous rule. Point to /* The rule currently being defined, and the previous rule.
the first symbol of each list: their lhs. */ CURRENT_RULE points to the first LHS of the current rule, while
PREVIOUS_RULE_END points to the *end* of the previous rule (NULL). */
symbol_list *current_rule = NULL; symbol_list *current_rule = NULL;
symbol_list *previous_rule = NULL; symbol_list *previous_rule_end = NULL;
/* Create a new rule for LHS in to the GRAMMAR. */ /*----------------------------------------------.
| Create a new rule for LHS in to the GRAMMAR. |
`----------------------------------------------*/
void void
grammar_rule_begin (symbol_t *lhs) grammar_rule_begin (symbol_t *lhs, location_t location)
{ {
if (!start_flag) if (!start_flag)
{ {
startsymbol = lhs; startsymbol = lhs;
startsymbol_location = location;
start_flag = 1; start_flag = 1;
} }
@@ -230,8 +234,8 @@ grammar_rule_begin (symbol_t *lhs)
++nrules; ++nrules;
++nritems; ++nritems;
previous_rule = grammar_end; previous_rule_end = grammar_end;
grammar_symbol_append (lhs); grammar_symbol_append (lhs, location);
current_rule = grammar_end; current_rule = grammar_end;
/* Mark the rule's lhs as a nonterminal if not already so. */ /* Mark the rule's lhs as a nonterminal if not already so. */
@@ -279,21 +283,26 @@ grammar_current_rule_check (void)
} }
/* End the currently being grown rule. */ /*-------------------------------------.
| End the currently being grown rule. |
`-------------------------------------*/
void void
grammar_rule_end (void) grammar_rule_end (location_t location)
{ {
/* Put an empty link in the list to mark the end of this rule */ /* Put an empty link in the list to mark the end of this rule */
grammar_symbol_append (NULL); grammar_symbol_append (NULL, grammar_end->location);
current_rule->location = location;
grammar_current_rule_check (); grammar_current_rule_check ();
} }
/* The previous action turns out the be a mid-rule action. Attach it /*-------------------------------------------------------------------.
to the current rule, i.e., create a dummy symbol, attach it this | The previous action turns out the be a mid-rule action. Attach it |
mid-rule action, and append this dummy nonterminal to the current | to the current rule, i.e., create a dummy symbol, attach it this |
rule. */ | mid-rule action, and append this dummy nonterminal to the current |
| rule. |
`-------------------------------------------------------------------*/
void void
grammar_midrule_action (void) grammar_midrule_action (void)
@@ -302,35 +311,36 @@ grammar_midrule_action (void)
give the new rule this number by inserting the new rule before give the new rule this number by inserting the new rule before
it. */ it. */
/* Make a dummy nonterminal, a gensym. */ /* Make a DUMMY nonterminal, whose location is that of the midrule
symbol_t *sdummy = gensym (); action. Create the MIDRULE. */
symbol_list *midrule_action = symbol_list_new (sdummy); symbol_t *dummy = gensym ();
location_t dummy_location = current_rule->action_location;
symbol_list *midrule = symbol_list_new (dummy, dummy_location);
/* Make a new rule, whose body is empty, before the current one, so /* Make a new rule, whose body is empty, before the current one, so
that the action just read can belong to it. */ that the action just read can belong to it. */
++nrules; ++nrules;
++nritems; ++nritems;
/* Attach its lineno to that of the host rule. */ /* Attach its location and actions to that of the DUMMY. */
midrule_action->line = current_rule->line; midrule->location = dummy_location;
/* Move the action from the host rule to this one. */ midrule->action = current_rule->action;
midrule_action->action = current_rule->action; midrule->action_location = dummy_location;
midrule_action->action_line = current_rule->action_line;
current_rule->action = NULL; current_rule->action = NULL;
if (previous_rule) if (previous_rule_end)
previous_rule->next = midrule_action; previous_rule_end->next = midrule;
else else
grammar = midrule_action; grammar = midrule;
/* End of the rule. */ /* End the dummy's rule. */
previous_rule = symbol_list_new (NULL); previous_rule_end = symbol_list_new (NULL, dummy_location);
previous_rule->next = current_rule; previous_rule_end->next = current_rule;
midrule_action->next = previous_rule; midrule->next = previous_rule_end;
/* Insert the dummy generated by that rule into this rule. */ /* Insert the dummy nonterminal replacing the midrule action into
++nritems; the current rule. */
grammar_symbol_append (sdummy); grammar_current_rule_symbol_append (dummy, dummy_location);
} }
/* Set the precedence symbol of the current rule to PRECSYM. */ /* Set the precedence symbol of the current rule to PRECSYM. */
@@ -347,12 +357,12 @@ grammar_current_rule_prec_set (symbol_t *precsym)
action as a mid-rule action. */ action as a mid-rule action. */
void void
grammar_current_rule_symbol_append (symbol_t *symbol) grammar_current_rule_symbol_append (symbol_t *symbol, location_t location)
{ {
if (current_rule->action) if (current_rule->action)
grammar_midrule_action (); grammar_midrule_action ();
++nritems; ++nritems;
grammar_symbol_append (symbol); grammar_symbol_append (symbol, location);
} }
@@ -360,12 +370,12 @@ grammar_current_rule_symbol_append (symbol_t *symbol)
action as a mid-rule action. */ action as a mid-rule action. */
void void
grammar_current_rule_action_append (const char *action, int action_line) grammar_current_rule_action_append (const char *action, location_t location)
{ {
if (current_rule->action) if (current_rule->action)
grammar_midrule_action (); grammar_midrule_action ();
current_rule->action = action; current_rule->action = action;
current_rule->action_line = action_line; current_rule->action_location = location;
} }
@@ -395,10 +405,10 @@ packgram (void)
rules[ruleno].number = ruleno; rules[ruleno].number = ruleno;
rules[ruleno].lhs = p->sym; rules[ruleno].lhs = p->sym;
rules[ruleno].rhs = ritem + itemno; rules[ruleno].rhs = ritem + itemno;
rules[ruleno].line = p->line; rules[ruleno].location = p->location;
rules[ruleno].useful = TRUE; rules[ruleno].useful = TRUE;
rules[ruleno].action = p->action; rules[ruleno].action = p->action;
rules[ruleno].action_line = p->action_line; rules[ruleno].action_location = p->action_location;
p = p->next; p = p->next;
while (p && p->sym) while (p && p->sym)
@@ -500,11 +510,11 @@ reader (void)
axiom: %start EOF. */ axiom: %start EOF. */
{ {
symbol_list *p = symbol_list_new (axiom); symbol_list *p = symbol_list_new (axiom, empty_location);
p->line = grammar->line; p->location = grammar->location;
p->next = symbol_list_new (startsymbol); p->next = symbol_list_new (startsymbol, empty_location);
p->next->next = symbol_list_new (eoftoken); p->next->next = symbol_list_new (eoftoken, empty_location);
p->next->next->next = symbol_list_new (NULL); p->next->next->next = symbol_list_new (NULL, empty_location);
p->next->next->next->next = grammar; p->next->next->next->next = grammar;
nrules += 1; nrules += 1;
nritems += 3; nritems += 3;

View File

@@ -27,11 +27,11 @@ typedef struct symbol_list
{ {
struct symbol_list *next; struct symbol_list *next;
symbol_t *sym; symbol_t *sym;
int line; location_t location;
/* The action is attached to the LHS of a rule. */ /* The action is attached to the LHS of a rule. */
const char *action; const char *action;
int action_line; location_t action_location;
symbol_t *ruleprec; symbol_t *ruleprec;
} symbol_list; } symbol_list;
@@ -66,17 +66,18 @@ char *get_type_name PARAMS ((int n, symbol_list *rule));
extern int typed; extern int typed;
/* From reader.c. */ /* From reader.c. */
void grammar_start_symbol_set PARAMS ((symbol_t *s)); void grammar_start_symbol_set PARAMS ((symbol_t *s, location_t l));
void prologue_augment PARAMS ((const char *prologue, location_t location)); void prologue_augment PARAMS ((const char *prologue, location_t location));
void epilogue_set PARAMS ((const char *epilogue, location_t location)); void epilogue_set PARAMS ((const char *epilogue, location_t location));
void grammar_symbol_append PARAMS ((symbol_t *s)); void grammar_symbol_append PARAMS ((symbol_t *s, location_t l));
void grammar_rule_begin PARAMS ((symbol_t *lhs)); void grammar_rule_begin PARAMS ((symbol_t *lhs, location_t l));
void grammar_rule_end PARAMS ((void)); void grammar_rule_end PARAMS ((location_t l));
void grammar_midrule_action PARAMS ((void)); void grammar_midrule_action PARAMS ((void));
void grammar_current_rule_prec_set PARAMS ((symbol_t *precsym)); void grammar_current_rule_prec_set PARAMS ((symbol_t *precsym));
void grammar_current_rule_symbol_append PARAMS ((symbol_t *symbol)); void grammar_current_rule_symbol_append PARAMS ((symbol_t *symbol,
location_t l));
void grammar_current_rule_action_append PARAMS ((const char *action, void grammar_current_rule_action_append PARAMS ((const char *action,
int line)); location_t l));
extern symbol_list *current_rule; extern symbol_list *current_rule;
void reader PARAMS ((void)); void reader PARAMS ((void));

View File

@@ -15,7 +15,7 @@
#define yyrestart gram_restart #define yyrestart gram_restart
#define yytext gram_text #define yytext gram_text
#line 19 "scan-gram.c" #line 19 "lex.yy.c"
/* A lexical scanner generated by flex */ /* A lexical scanner generated by flex */
/* Scanner skeleton version: /* Scanner skeleton version:
@@ -686,16 +686,16 @@ int yy_flex_debug = 1;
static yyconst short int yy_rule_linenum[92] = static yyconst short int yy_rule_linenum[92] =
{ 0, { 0,
117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
137, 138, 139, 140, 141, 142, 143, 145, 146, 147, 141, 142, 143, 144, 145, 146, 147, 149, 150, 151,
148, 150, 151, 152, 157, 160, 163, 166, 167, 170, 152, 154, 155, 156, 161, 164, 167, 170, 171, 174,
173, 176, 184, 190, 206, 207, 218, 230, 231, 232, 177, 180, 188, 194, 210, 211, 222, 234, 235, 236,
249, 258, 260, 280, 294, 296, 316, 328, 332, 333, 253, 262, 264, 284, 298, 300, 320, 332, 336, 337,
334, 335, 336, 337, 338, 339, 340, 355, 361, 362, 338, 339, 340, 341, 342, 343, 344, 359, 365, 366,
364, 382, 388, 389, 391, 409, 412, 415, 416, 427, 368, 386, 392, 393, 395, 413, 416, 419, 420, 431,
438, 440, 441, 443, 444, 447, 467, 474, 475, 476, 442, 444, 445, 447, 448, 451, 471, 478, 479, 480,
497 501
} ; } ;
@@ -741,6 +741,13 @@ char *yytext;
#include "reader.h" #include "reader.h"
/* Each time we match a string, move the end cursor to its end. */ /* Each time we match a string, move the end cursor to its end. */
#define YY_USER_INIT \
do { \
LOCATION_RESET (*yylloc); \
/* This is only to avoid GCC warnings. */ \
if (yycontrol) {;}; \
} while (0)
#define YY_USER_ACTION LOCATION_COLUMNS (*yylloc, yyleng) #define YY_USER_ACTION LOCATION_COLUMNS (*yylloc, yyleng)
#define YY_LINES LOCATION_LINES (*yylloc, yyleng); lineno += yyleng; #define YY_LINES LOCATION_LINES (*yylloc, yyleng); lineno += yyleng;
#define YY_STEP LOCATION_STEP (*yylloc) #define YY_STEP LOCATION_STEP (*yylloc)
@@ -779,9 +786,6 @@ scanner_last_string_free (void)
} }
/* This is only to avoid GCC warnings. */
#define YY_USER_INIT if (yycontrol) {;};
static int braces_level = 0; static int braces_level = 0;
static int percent_percent_count = 0; static int percent_percent_count = 0;
@@ -801,7 +805,7 @@ static void handle_at PARAMS ((char *cp));
#define SC_PROLOGUE 7 #define SC_PROLOGUE 7
#define SC_EPILOGUE 8 #define SC_EPILOGUE 8
#line 805 "scan-gram.c" #line 809 "lex.yy.c"
/* Macros after this point can all be overridden by user definitions in /* Macros after this point can all be overridden by user definitions in
* section 1. * section 1.
@@ -963,14 +967,14 @@ YY_DECL
register char *yy_cp, *yy_bp; register char *yy_cp, *yy_bp;
register int yy_act; register int yy_act;
#line 93 "scan-gram.l" #line 97 "scan-gram.l"
/* At each yylex invocation, mark the current position as the /* At each yylex invocation, mark the current position as the
start of the next token. */ start of the next token. */
#define TR_POS 0 #define TR_POS 0
#if TR_POS #if TR_POS
fprintf (stderr, "FOO1: "); fprintf (stderr, "FOO1: %p: ", yylloc);
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, "\n"); fprintf (stderr, "\n");
#endif #endif
@@ -986,7 +990,7 @@ YY_DECL
/*----------------------------. /*----------------------------.
| Scanning Bison directives. | | Scanning Bison directives. |
`----------------------------*/ `----------------------------*/
#line 990 "scan-gram.c" #line 994 "lex.yy.c"
if ( yy_init ) if ( yy_init )
{ {
@@ -1088,172 +1092,172 @@ do_action: /* This label is used only to access EOF actions. */
case 1: case 1:
YY_RULE_SETUP YY_RULE_SETUP
#line 117 "scan-gram.l" #line 121 "scan-gram.l"
return PERCENT_NONASSOC; return PERCENT_NONASSOC;
YY_BREAK YY_BREAK
case 2: case 2:
YY_RULE_SETUP YY_RULE_SETUP
#line 118 "scan-gram.l" #line 122 "scan-gram.l"
return PERCENT_DEBUG; return PERCENT_DEBUG;
YY_BREAK YY_BREAK
case 3: case 3:
YY_RULE_SETUP YY_RULE_SETUP
#line 119 "scan-gram.l" #line 123 "scan-gram.l"
return PERCENT_DEFINE; return PERCENT_DEFINE;
YY_BREAK YY_BREAK
case 4: case 4:
YY_RULE_SETUP YY_RULE_SETUP
#line 120 "scan-gram.l" #line 124 "scan-gram.l"
return PERCENT_DEFINES; return PERCENT_DEFINES;
YY_BREAK YY_BREAK
case 5: case 5:
YY_RULE_SETUP YY_RULE_SETUP
#line 121 "scan-gram.l" #line 125 "scan-gram.l"
return PERCENT_ERROR_VERBOSE; return PERCENT_ERROR_VERBOSE;
YY_BREAK YY_BREAK
case 6: case 6:
YY_RULE_SETUP YY_RULE_SETUP
#line 122 "scan-gram.l" #line 126 "scan-gram.l"
return PERCENT_EXPECT; return PERCENT_EXPECT;
YY_BREAK YY_BREAK
case 7: case 7:
YY_RULE_SETUP YY_RULE_SETUP
#line 123 "scan-gram.l" #line 127 "scan-gram.l"
return PERCENT_FILE_PREFIX; return PERCENT_FILE_PREFIX;
YY_BREAK YY_BREAK
case 8: case 8:
YY_RULE_SETUP YY_RULE_SETUP
#line 124 "scan-gram.l" #line 128 "scan-gram.l"
return PERCENT_YACC; return PERCENT_YACC;
YY_BREAK YY_BREAK
case 9: case 9:
YY_RULE_SETUP YY_RULE_SETUP
#line 125 "scan-gram.l" #line 129 "scan-gram.l"
return PERCENT_LEFT; return PERCENT_LEFT;
YY_BREAK YY_BREAK
case 10: case 10:
YY_RULE_SETUP YY_RULE_SETUP
#line 126 "scan-gram.l" #line 130 "scan-gram.l"
return PERCENT_LOCATIONS; return PERCENT_LOCATIONS;
YY_BREAK YY_BREAK
case 11: case 11:
YY_RULE_SETUP YY_RULE_SETUP
#line 127 "scan-gram.l" #line 131 "scan-gram.l"
return PERCENT_NAME_PREFIX; return PERCENT_NAME_PREFIX;
YY_BREAK YY_BREAK
case 12: case 12:
YY_RULE_SETUP YY_RULE_SETUP
#line 128 "scan-gram.l" #line 132 "scan-gram.l"
return PERCENT_NO_LINES; return PERCENT_NO_LINES;
YY_BREAK YY_BREAK
case 13: case 13:
YY_RULE_SETUP YY_RULE_SETUP
#line 129 "scan-gram.l" #line 133 "scan-gram.l"
return PERCENT_NONASSOC; return PERCENT_NONASSOC;
YY_BREAK YY_BREAK
case 14: case 14:
YY_RULE_SETUP YY_RULE_SETUP
#line 130 "scan-gram.l" #line 134 "scan-gram.l"
return PERCENT_NTERM; return PERCENT_NTERM;
YY_BREAK YY_BREAK
case 15: case 15:
YY_RULE_SETUP YY_RULE_SETUP
#line 131 "scan-gram.l" #line 135 "scan-gram.l"
return PERCENT_OUTPUT; return PERCENT_OUTPUT;
YY_BREAK YY_BREAK
case 16: case 16:
YY_RULE_SETUP YY_RULE_SETUP
#line 132 "scan-gram.l" #line 136 "scan-gram.l"
return PERCENT_PREC; return PERCENT_PREC;
YY_BREAK YY_BREAK
case 17: case 17:
YY_RULE_SETUP YY_RULE_SETUP
#line 133 "scan-gram.l" #line 137 "scan-gram.l"
return PERCENT_PURE_PARSER; return PERCENT_PURE_PARSER;
YY_BREAK YY_BREAK
case 18: case 18:
YY_RULE_SETUP YY_RULE_SETUP
#line 134 "scan-gram.l" #line 138 "scan-gram.l"
return PERCENT_RIGHT; return PERCENT_RIGHT;
YY_BREAK YY_BREAK
case 19: case 19:
YY_RULE_SETUP YY_RULE_SETUP
#line 135 "scan-gram.l" #line 139 "scan-gram.l"
return PERCENT_SKELETON; return PERCENT_SKELETON;
YY_BREAK YY_BREAK
case 20: case 20:
YY_RULE_SETUP YY_RULE_SETUP
#line 136 "scan-gram.l" #line 140 "scan-gram.l"
return PERCENT_START; return PERCENT_START;
YY_BREAK YY_BREAK
case 21: case 21:
YY_RULE_SETUP YY_RULE_SETUP
#line 137 "scan-gram.l" #line 141 "scan-gram.l"
return PERCENT_TOKEN; return PERCENT_TOKEN;
YY_BREAK YY_BREAK
case 22: case 22:
YY_RULE_SETUP YY_RULE_SETUP
#line 138 "scan-gram.l" #line 142 "scan-gram.l"
return PERCENT_TOKEN; return PERCENT_TOKEN;
YY_BREAK YY_BREAK
case 23: case 23:
YY_RULE_SETUP YY_RULE_SETUP
#line 139 "scan-gram.l" #line 143 "scan-gram.l"
return PERCENT_TOKEN_TABLE; return PERCENT_TOKEN_TABLE;
YY_BREAK YY_BREAK
case 24: case 24:
YY_RULE_SETUP YY_RULE_SETUP
#line 140 "scan-gram.l" #line 144 "scan-gram.l"
return PERCENT_TYPE; return PERCENT_TYPE;
YY_BREAK YY_BREAK
case 25: case 25:
YY_RULE_SETUP YY_RULE_SETUP
#line 141 "scan-gram.l" #line 145 "scan-gram.l"
return PERCENT_UNION; return PERCENT_UNION;
YY_BREAK YY_BREAK
case 26: case 26:
YY_RULE_SETUP YY_RULE_SETUP
#line 142 "scan-gram.l" #line 146 "scan-gram.l"
return PERCENT_VERBOSE; return PERCENT_VERBOSE;
YY_BREAK YY_BREAK
case 27: case 27:
YY_RULE_SETUP YY_RULE_SETUP
#line 143 "scan-gram.l" #line 147 "scan-gram.l"
return PERCENT_YACC; return PERCENT_YACC;
YY_BREAK YY_BREAK
case 28: case 28:
YY_RULE_SETUP YY_RULE_SETUP
#line 145 "scan-gram.l" #line 149 "scan-gram.l"
return EQUAL; return EQUAL;
YY_BREAK YY_BREAK
case 29: case 29:
YY_RULE_SETUP YY_RULE_SETUP
#line 146 "scan-gram.l" #line 150 "scan-gram.l"
return COLON; return COLON;
YY_BREAK YY_BREAK
case 30: case 30:
YY_RULE_SETUP YY_RULE_SETUP
#line 147 "scan-gram.l" #line 151 "scan-gram.l"
return PIPE; return PIPE;
YY_BREAK YY_BREAK
case 31: case 31:
YY_RULE_SETUP YY_RULE_SETUP
#line 148 "scan-gram.l" #line 152 "scan-gram.l"
return SEMICOLON; return SEMICOLON;
YY_BREAK YY_BREAK
case 32: case 32:
YY_RULE_SETUP YY_RULE_SETUP
#line 150 "scan-gram.l" #line 154 "scan-gram.l"
YY_LINES; YY_STEP; YY_LINES; YY_STEP;
YY_BREAK YY_BREAK
case 33: case 33:
YY_RULE_SETUP YY_RULE_SETUP
#line 151 "scan-gram.l" #line 155 "scan-gram.l"
YY_STEP; YY_STEP;
YY_BREAK YY_BREAK
case 34: case 34:
YY_RULE_SETUP YY_RULE_SETUP
#line 152 "scan-gram.l" #line 156 "scan-gram.l"
{ {
yylval->symbol = getsym (yytext); yylval->symbol = getsym (yytext);
return ID; return ID;
@@ -1261,48 +1265,48 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 35: case 35:
YY_RULE_SETUP YY_RULE_SETUP
#line 157 "scan-gram.l" #line 161 "scan-gram.l"
yylval->integer = strtol (yytext, 0, 10); return INT; yylval->integer = strtol (yytext, 0, 10); return INT;
YY_BREAK YY_BREAK
/* Characters. We don't check there is only one. */ /* Characters. We don't check there is only one. */
case 36: case 36:
YY_RULE_SETUP YY_RULE_SETUP
#line 160 "scan-gram.l" #line 164 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_ESCAPED_CHARACTER); YY_OBS_GROW; yy_push_state (SC_ESCAPED_CHARACTER);
YY_BREAK YY_BREAK
/* Strings. */ /* Strings. */
case 37: case 37:
YY_RULE_SETUP YY_RULE_SETUP
#line 163 "scan-gram.l" #line 167 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_ESCAPED_STRING); YY_OBS_GROW; yy_push_state (SC_ESCAPED_STRING);
YY_BREAK YY_BREAK
/* Comments. */ /* Comments. */
case 38: case 38:
YY_RULE_SETUP YY_RULE_SETUP
#line 166 "scan-gram.l" #line 170 "scan-gram.l"
yy_push_state (SC_COMMENT); yy_push_state (SC_COMMENT);
YY_BREAK YY_BREAK
case 39: case 39:
YY_RULE_SETUP YY_RULE_SETUP
#line 167 "scan-gram.l" #line 171 "scan-gram.l"
YY_STEP; YY_STEP;
YY_BREAK YY_BREAK
/* Prologue. */ /* Prologue. */
case 40: case 40:
YY_RULE_SETUP YY_RULE_SETUP
#line 170 "scan-gram.l" #line 174 "scan-gram.l"
yy_push_state (SC_PROLOGUE); yy_push_state (SC_PROLOGUE);
YY_BREAK YY_BREAK
/* Code in between braces. */ /* Code in between braces. */
case 41: case 41:
YY_RULE_SETUP YY_RULE_SETUP
#line 173 "scan-gram.l" #line 177 "scan-gram.l"
YY_OBS_GROW; ++braces_level; yy_push_state (SC_BRACED_CODE); YY_OBS_GROW; ++braces_level; yy_push_state (SC_BRACED_CODE);
YY_BREAK YY_BREAK
/* A type. */ /* A type. */
case 42: case 42:
YY_RULE_SETUP YY_RULE_SETUP
#line 176 "scan-gram.l" #line 180 "scan-gram.l"
{ {
obstack_grow (&string_obstack, yytext + 1, yyleng - 2); obstack_grow (&string_obstack, yytext + 1, yyleng - 2);
YY_OBS_FINISH; YY_OBS_FINISH;
@@ -1312,7 +1316,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 43: case 43:
YY_RULE_SETUP YY_RULE_SETUP
#line 184 "scan-gram.l" #line 188 "scan-gram.l"
{ {
if (++percent_percent_count == 2) if (++percent_percent_count == 2)
yy_push_state (SC_EPILOGUE); yy_push_state (SC_EPILOGUE);
@@ -1321,7 +1325,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 44: case 44:
YY_RULE_SETUP YY_RULE_SETUP
#line 190 "scan-gram.l" #line 194 "scan-gram.l"
{ {
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": invalid character: `%c'\n", *yytext); fprintf (stderr, ": invalid character: `%c'\n", *yytext);
@@ -1338,12 +1342,12 @@ YY_RULE_SETUP
case 45: case 45:
YY_RULE_SETUP YY_RULE_SETUP
#line 206 "scan-gram.l" #line 210 "scan-gram.l"
if (YY_START != SC_COMMENT) obstack_sgrow (&string_obstack, "@<:@"); if (YY_START != SC_COMMENT) obstack_sgrow (&string_obstack, "@<:@");
YY_BREAK YY_BREAK
case 46: case 46:
YY_RULE_SETUP YY_RULE_SETUP
#line 207 "scan-gram.l" #line 211 "scan-gram.l"
if (YY_START != SC_COMMENT) obstack_sgrow (&string_obstack, "@:>@"); if (YY_START != SC_COMMENT) obstack_sgrow (&string_obstack, "@:>@");
YY_BREAK YY_BREAK
@@ -1354,7 +1358,7 @@ if (YY_START != SC_COMMENT) obstack_sgrow (&string_obstack, "@:>@");
case 47: case 47:
YY_RULE_SETUP YY_RULE_SETUP
#line 218 "scan-gram.l" #line 222 "scan-gram.l"
{ /* End of the comment. */ { /* End of the comment. */
if (yy_top_state () == INITIAL) if (yy_top_state () == INITIAL)
{ {
@@ -1369,21 +1373,21 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 48: case 48:
YY_RULE_SETUP YY_RULE_SETUP
#line 230 "scan-gram.l" #line 234 "scan-gram.l"
if (yy_top_state () != INITIAL) YY_OBS_GROW; if (yy_top_state () != INITIAL) YY_OBS_GROW;
YY_BREAK YY_BREAK
case 49: case 49:
YY_RULE_SETUP YY_RULE_SETUP
#line 231 "scan-gram.l" #line 235 "scan-gram.l"
if (yy_top_state () != INITIAL) YY_OBS_GROW; YY_LINES; if (yy_top_state () != INITIAL) YY_OBS_GROW; YY_LINES;
YY_BREAK YY_BREAK
case 50: case 50:
YY_RULE_SETUP YY_RULE_SETUP
#line 232 "scan-gram.l" #line 236 "scan-gram.l"
/* Stray `*'. */if (yy_top_state () != INITIAL) YY_OBS_GROW; /* Stray `*'. */if (yy_top_state () != INITIAL) YY_OBS_GROW;
YY_BREAK YY_BREAK
case YY_STATE_EOF(SC_COMMENT): case YY_STATE_EOF(SC_COMMENT):
#line 234 "scan-gram.l" #line 238 "scan-gram.l"
{ {
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a comment\n"); fprintf (stderr, ": unexpected end of file in a comment\n");
@@ -1399,7 +1403,7 @@ case YY_STATE_EOF(SC_COMMENT):
case 51: case 51:
YY_RULE_SETUP YY_RULE_SETUP
#line 249 "scan-gram.l" #line 253 "scan-gram.l"
{ {
assert (yy_top_state () == INITIAL); assert (yy_top_state () == INITIAL);
YY_OBS_GROW; YY_OBS_GROW;
@@ -1411,16 +1415,16 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 52: case 52:
YY_RULE_SETUP YY_RULE_SETUP
#line 258 "scan-gram.l" #line 262 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case 53: case 53:
YY_RULE_SETUP YY_RULE_SETUP
#line 260 "scan-gram.l" #line 264 "scan-gram.l"
obstack_1grow (&string_obstack, '\n'); YY_LINES; obstack_1grow (&string_obstack, '\n'); YY_LINES;
YY_BREAK YY_BREAK
case YY_STATE_EOF(SC_ESCAPED_STRING): case YY_STATE_EOF(SC_ESCAPED_STRING):
#line 262 "scan-gram.l" #line 266 "scan-gram.l"
{ {
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a string\n"); fprintf (stderr, ": unexpected end of file in a string\n");
@@ -1440,7 +1444,7 @@ case YY_STATE_EOF(SC_ESCAPED_STRING):
case 54: case 54:
YY_RULE_SETUP YY_RULE_SETUP
#line 280 "scan-gram.l" #line 284 "scan-gram.l"
{ {
YY_OBS_GROW; YY_OBS_GROW;
assert (yy_top_state () == INITIAL); assert (yy_top_state () == INITIAL);
@@ -1457,16 +1461,16 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 55: case 55:
YY_RULE_SETUP YY_RULE_SETUP
#line 294 "scan-gram.l" #line 298 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case 56: case 56:
YY_RULE_SETUP YY_RULE_SETUP
#line 296 "scan-gram.l" #line 300 "scan-gram.l"
obstack_1grow (&string_obstack, '\n'); YY_LINES; obstack_1grow (&string_obstack, '\n'); YY_LINES;
YY_BREAK YY_BREAK
case YY_STATE_EOF(SC_ESCAPED_CHARACTER): case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
#line 298 "scan-gram.l" #line 302 "scan-gram.l"
{ {
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a character\n"); fprintf (stderr, ": unexpected end of file in a character\n");
@@ -1485,7 +1489,7 @@ case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
case 57: case 57:
YY_RULE_SETUP YY_RULE_SETUP
#line 316 "scan-gram.l" #line 320 "scan-gram.l"
{ {
long c = strtol (yytext + 1, 0, 8); long c = strtol (yytext + 1, 0, 8);
if (c > 255) if (c > 255)
@@ -1500,54 +1504,54 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 58: case 58:
YY_RULE_SETUP YY_RULE_SETUP
#line 328 "scan-gram.l" #line 332 "scan-gram.l"
{ {
obstack_1grow (&string_obstack, strtol (yytext + 2, 0, 16)); obstack_1grow (&string_obstack, strtol (yytext + 2, 0, 16));
} }
YY_BREAK YY_BREAK
case 59: case 59:
YY_RULE_SETUP YY_RULE_SETUP
#line 332 "scan-gram.l" #line 336 "scan-gram.l"
obstack_1grow (&string_obstack, '\a'); obstack_1grow (&string_obstack, '\a');
YY_BREAK YY_BREAK
case 60: case 60:
YY_RULE_SETUP YY_RULE_SETUP
#line 333 "scan-gram.l" #line 337 "scan-gram.l"
obstack_1grow (&string_obstack, '\b'); obstack_1grow (&string_obstack, '\b');
YY_BREAK YY_BREAK
case 61: case 61:
YY_RULE_SETUP YY_RULE_SETUP
#line 334 "scan-gram.l" #line 338 "scan-gram.l"
obstack_1grow (&string_obstack, '\f'); obstack_1grow (&string_obstack, '\f');
YY_BREAK YY_BREAK
case 62: case 62:
YY_RULE_SETUP YY_RULE_SETUP
#line 335 "scan-gram.l" #line 339 "scan-gram.l"
obstack_1grow (&string_obstack, '\n'); obstack_1grow (&string_obstack, '\n');
YY_BREAK YY_BREAK
case 63: case 63:
YY_RULE_SETUP YY_RULE_SETUP
#line 336 "scan-gram.l" #line 340 "scan-gram.l"
obstack_1grow (&string_obstack, '\r'); obstack_1grow (&string_obstack, '\r');
YY_BREAK YY_BREAK
case 64: case 64:
YY_RULE_SETUP YY_RULE_SETUP
#line 337 "scan-gram.l" #line 341 "scan-gram.l"
obstack_1grow (&string_obstack, '\t'); obstack_1grow (&string_obstack, '\t');
YY_BREAK YY_BREAK
case 65: case 65:
YY_RULE_SETUP YY_RULE_SETUP
#line 338 "scan-gram.l" #line 342 "scan-gram.l"
obstack_1grow (&string_obstack, '\v'); obstack_1grow (&string_obstack, '\v');
YY_BREAK YY_BREAK
case 66: case 66:
YY_RULE_SETUP YY_RULE_SETUP
#line 339 "scan-gram.l" #line 343 "scan-gram.l"
obstack_1grow (&string_obstack, yytext[1]); obstack_1grow (&string_obstack, yytext[1]);
YY_BREAK YY_BREAK
case 67: case 67:
YY_RULE_SETUP YY_RULE_SETUP
#line 340 "scan-gram.l" #line 344 "scan-gram.l"
{ {
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unrecognized escape: %s\n", yytext); fprintf (stderr, ": unrecognized escape: %s\n", yytext);
@@ -1563,7 +1567,7 @@ YY_RULE_SETUP
case 68: case 68:
YY_RULE_SETUP YY_RULE_SETUP
#line 355 "scan-gram.l" #line 359 "scan-gram.l"
{ {
YY_OBS_GROW; YY_OBS_GROW;
assert (yy_top_state () != INITIAL); assert (yy_top_state () != INITIAL);
@@ -1572,21 +1576,21 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 69: case 69:
YY_RULE_SETUP YY_RULE_SETUP
#line 361 "scan-gram.l" #line 365 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case 70: case 70:
YY_RULE_SETUP YY_RULE_SETUP
#line 362 "scan-gram.l" #line 366 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case 71: case 71:
YY_RULE_SETUP YY_RULE_SETUP
#line 364 "scan-gram.l" #line 368 "scan-gram.l"
YY_OBS_GROW; YY_LINES; YY_OBS_GROW; YY_LINES;
YY_BREAK YY_BREAK
case YY_STATE_EOF(SC_CHARACTER): case YY_STATE_EOF(SC_CHARACTER):
#line 366 "scan-gram.l" #line 370 "scan-gram.l"
{ {
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a character\n"); fprintf (stderr, ": unexpected end of file in a character\n");
@@ -1603,7 +1607,7 @@ case YY_STATE_EOF(SC_CHARACTER):
case 72: case 72:
YY_RULE_SETUP YY_RULE_SETUP
#line 382 "scan-gram.l" #line 386 "scan-gram.l"
{ {
assert (yy_top_state () != INITIAL); assert (yy_top_state () != INITIAL);
YY_OBS_GROW; YY_OBS_GROW;
@@ -1612,21 +1616,21 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 73: case 73:
YY_RULE_SETUP YY_RULE_SETUP
#line 388 "scan-gram.l" #line 392 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case 74: case 74:
YY_RULE_SETUP YY_RULE_SETUP
#line 389 "scan-gram.l" #line 393 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case 75: case 75:
YY_RULE_SETUP YY_RULE_SETUP
#line 391 "scan-gram.l" #line 395 "scan-gram.l"
YY_OBS_GROW; YY_LINES; YY_OBS_GROW; YY_LINES;
YY_BREAK YY_BREAK
case YY_STATE_EOF(SC_STRING): case YY_STATE_EOF(SC_STRING):
#line 393 "scan-gram.l" #line 397 "scan-gram.l"
{ {
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a string\n"); fprintf (stderr, ": unexpected end of file in a string\n");
@@ -1643,24 +1647,24 @@ case YY_STATE_EOF(SC_STRING):
/* Characters. We don't check there is only one. */ /* Characters. We don't check there is only one. */
case 76: case 76:
YY_RULE_SETUP YY_RULE_SETUP
#line 409 "scan-gram.l" #line 413 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_CHARACTER); YY_OBS_GROW; yy_push_state (SC_CHARACTER);
YY_BREAK YY_BREAK
/* Strings. */ /* Strings. */
case 77: case 77:
YY_RULE_SETUP YY_RULE_SETUP
#line 412 "scan-gram.l" #line 416 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_STRING); YY_OBS_GROW; yy_push_state (SC_STRING);
YY_BREAK YY_BREAK
/* Comments. */ /* Comments. */
case 78: case 78:
YY_RULE_SETUP YY_RULE_SETUP
#line 415 "scan-gram.l" #line 419 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_COMMENT); YY_OBS_GROW; yy_push_state (SC_COMMENT);
YY_BREAK YY_BREAK
case 79: case 79:
YY_RULE_SETUP YY_RULE_SETUP
#line 416 "scan-gram.l" #line 420 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
@@ -1672,7 +1676,7 @@ YY_OBS_GROW;
case 80: case 80:
YY_RULE_SETUP YY_RULE_SETUP
#line 427 "scan-gram.l" #line 431 "scan-gram.l"
{ {
YY_OBS_GROW; YY_OBS_GROW;
if (--braces_level == 0) if (--braces_level == 0)
@@ -1686,37 +1690,37 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 81: case 81:
YY_RULE_SETUP YY_RULE_SETUP
#line 438 "scan-gram.l" #line 442 "scan-gram.l"
YY_OBS_GROW; braces_level++; YY_OBS_GROW; braces_level++;
YY_BREAK YY_BREAK
case 82: case 82:
YY_RULE_SETUP YY_RULE_SETUP
#line 440 "scan-gram.l" #line 444 "scan-gram.l"
{ handle_dollar (yytext); } { handle_dollar (yytext); }
YY_BREAK YY_BREAK
case 83: case 83:
YY_RULE_SETUP YY_RULE_SETUP
#line 441 "scan-gram.l" #line 445 "scan-gram.l"
{ handle_at (yytext); } { handle_at (yytext); }
YY_BREAK YY_BREAK
case 84: case 84:
YY_RULE_SETUP YY_RULE_SETUP
#line 443 "scan-gram.l" #line 447 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case 85: case 85:
YY_RULE_SETUP YY_RULE_SETUP
#line 444 "scan-gram.l" #line 448 "scan-gram.l"
YY_OBS_GROW; YY_LINES; YY_OBS_GROW; YY_LINES;
YY_BREAK YY_BREAK
/* A lose $, or /, or etc. */ /* A lose $, or /, or etc. */
case 86: case 86:
YY_RULE_SETUP YY_RULE_SETUP
#line 447 "scan-gram.l" #line 451 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case YY_STATE_EOF(SC_BRACED_CODE): case YY_STATE_EOF(SC_BRACED_CODE):
#line 449 "scan-gram.l" #line 453 "scan-gram.l"
{ {
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a braced code\n"); fprintf (stderr, ": unexpected end of file in a braced code\n");
@@ -1734,7 +1738,7 @@ case YY_STATE_EOF(SC_BRACED_CODE):
case 87: case 87:
YY_RULE_SETUP YY_RULE_SETUP
#line 467 "scan-gram.l" #line 471 "scan-gram.l"
{ {
yy_pop_state (); yy_pop_state ();
YY_OBS_FINISH; YY_OBS_FINISH;
@@ -1744,21 +1748,21 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 88: case 88:
YY_RULE_SETUP YY_RULE_SETUP
#line 474 "scan-gram.l" #line 478 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case 89: case 89:
YY_RULE_SETUP YY_RULE_SETUP
#line 475 "scan-gram.l" #line 479 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case 90: case 90:
YY_RULE_SETUP YY_RULE_SETUP
#line 476 "scan-gram.l" #line 480 "scan-gram.l"
YY_OBS_GROW; YY_LINES; YY_OBS_GROW; YY_LINES;
YY_BREAK YY_BREAK
case YY_STATE_EOF(SC_PROLOGUE): case YY_STATE_EOF(SC_PROLOGUE):
#line 478 "scan-gram.l" #line 482 "scan-gram.l"
{ {
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a prologue\n"); fprintf (stderr, ": unexpected end of file in a prologue\n");
@@ -1777,11 +1781,11 @@ case YY_STATE_EOF(SC_PROLOGUE):
case 91: case 91:
YY_RULE_SETUP YY_RULE_SETUP
#line 497 "scan-gram.l" #line 501 "scan-gram.l"
YY_OBS_GROW; YY_OBS_GROW;
YY_BREAK YY_BREAK
case YY_STATE_EOF(SC_EPILOGUE): case YY_STATE_EOF(SC_EPILOGUE):
#line 499 "scan-gram.l" #line 503 "scan-gram.l"
{ {
yy_pop_state (); yy_pop_state ();
YY_OBS_FINISH; YY_OBS_FINISH;
@@ -1792,10 +1796,10 @@ case YY_STATE_EOF(SC_EPILOGUE):
case 92: case 92:
YY_RULE_SETUP YY_RULE_SETUP
#line 508 "scan-gram.l" #line 512 "scan-gram.l"
YY_FATAL_ERROR( "flex scanner jammed" ); YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK YY_BREAK
#line 1799 "scan-gram.c" #line 1803 "lex.yy.c"
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
yyterminate(); yyterminate();
@@ -2685,7 +2689,7 @@ int main()
return 0; return 0;
} }
#endif #endif
#line 508 "scan-gram.l" #line 512 "scan-gram.l"
/*------------------------------------------------------------------. /*------------------------------------------------------------------.

View File

@@ -31,6 +31,13 @@
#include "reader.h" #include "reader.h"
/* Each time we match a string, move the end cursor to its end. */ /* Each time we match a string, move the end cursor to its end. */
#define YY_USER_INIT \
do { \
LOCATION_RESET (*yylloc); \
/* This is only to avoid GCC warnings. */ \
if (yycontrol) {;}; \
} while (0)
#define YY_USER_ACTION LOCATION_COLUMNS (*yylloc, yyleng) #define YY_USER_ACTION LOCATION_COLUMNS (*yylloc, yyleng)
#define YY_LINES LOCATION_LINES (*yylloc, yyleng); lineno += yyleng; #define YY_LINES LOCATION_LINES (*yylloc, yyleng); lineno += yyleng;
#define YY_STEP LOCATION_STEP (*yylloc) #define YY_STEP LOCATION_STEP (*yylloc)
@@ -69,9 +76,6 @@ scanner_last_string_free (void)
} }
/* This is only to avoid GCC warnings. */
#define YY_USER_INIT if (yycontrol) {;};
static int braces_level = 0; static int braces_level = 0;
static int percent_percent_count = 0; static int percent_percent_count = 0;
@@ -96,7 +100,7 @@ blanks [ \t\f]+
start of the next token. */ start of the next token. */
#define TR_POS 0 #define TR_POS 0
#if TR_POS #if TR_POS
fprintf (stderr, "FOO1: "); fprintf (stderr, "FOO1: %p: ", yylloc);
LOCATION_PRINT (stderr, *yylloc); LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, "\n"); fprintf (stderr, "\n");
#endif #endif

View File

@@ -34,6 +34,7 @@ symbol_t *undeftoken = NULL;
symbol_t *eoftoken = NULL; symbol_t *eoftoken = NULL;
symbol_t *axiom = NULL; symbol_t *axiom = NULL;
symbol_t *startsymbol = NULL; symbol_t *startsymbol = NULL;
location_t startsymbol_location;
/*---------------------------------. /*---------------------------------.
| Create a new symbol, named TAG. | | Create a new symbol, named TAG. |

View File

@@ -22,6 +22,8 @@
#ifndef SYMTAB_H_ #ifndef SYMTAB_H_
# define SYMTAB_H_ # define SYMTAB_H_
# include "location.h"
/*----------. /*----------.
| Symbols. | | Symbols. |
`----------*/ `----------*/
@@ -112,6 +114,7 @@ extern symbol_t *undeftoken;
extern symbol_t *eoftoken; extern symbol_t *eoftoken;
extern symbol_t *axiom; extern symbol_t *axiom;
extern symbol_t *startsymbol; extern symbol_t *startsymbol;
extern location_t startsymbol_location;
/*---------------. /*---------------.

View File

@@ -149,10 +149,10 @@ AT_CHECK([cat input.output], [],
[[Grammar [[Grammar
Number, Line, Rule Number, Line, Rule
0 2 $axiom -> expr $ 0 5 $axiom -> expr $
1 2 @1 -> /* empty */ 1 5 @1 -> /* empty */
2 2 expr -> 'a' @1 'b' 2 2 expr -> 'a' @1 'b'
3 15 @2 -> /* empty */ 3 18 @2 -> /* empty */
4 15 expr -> @2 'c' 4 15 expr -> @2 'c'
@@ -380,7 +380,7 @@ AT_CHECK([sed -n 's/ *$//;/^$/!p' input.output], 0,
1 6 CONST_DEC_PART -> CONST_DEC_LIST 1 6 CONST_DEC_PART -> CONST_DEC_LIST
2 10 CONST_DEC_LIST -> CONST_DEC 2 10 CONST_DEC_LIST -> CONST_DEC
3 12 CONST_DEC_LIST -> CONST_DEC_LIST CONST_DEC 3 12 CONST_DEC_LIST -> CONST_DEC_LIST CONST_DEC
4 15 @1 -> /* empty */ 4 16 @1 -> /* empty */
5 15 CONST_DEC -> @1 undef_id_tok '=' const_id_tok ';' 5 15 CONST_DEC -> @1 undef_id_tok '=' const_id_tok ';'
Terminals, with rules where they appear Terminals, with rules where they appear
$ (0) 0 $ (0) 0