Initial check-in introducing experimental GLR parsing. See entry in

ChangeLog dated 2002-06-27 from Paul Hilfinger for details.
This commit is contained in:
Paul Hilfinger
2002-06-28 02:26:44 +00:00
parent 01241d47b4
commit 676385e29c
31 changed files with 2422 additions and 1299 deletions

121
ChangeLog
View File

@@ -1,4 +1,123 @@
2002-06-27 Akim Demaille <akim@epita.fr>
2002-06-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
Accumulated changelog for new GLR parsing features.
* src/conflicts.c (count_total_conflicts): Change name to
conflicts_total_count.
* src/conflicts.h: Ditto.
* src/output.c (token_actions): Use the new name.
(output_conflicts): Change conflp => conflict_list_heads, and
confl => conflict_list for better readability.
* data/glr.c: Use the new names.
* NEWS: Add self to GLR announcement.
* src/reader.c (free_merger_functions): Cleanup: XFREE->free.
* doc/bison.texinfo (GLR Parsers): Make corrections suggested by
Akim Demaille.
* data/bison.glr: Change name to glr.c
* data/glr.c: Renamed from bison.glr.
* data/Makefile.am: Add glr.c
* src/getargs.c:
* src/symlist.h: Add dprec and merger fields to symbol_list_s.
* src/symlist.c (symbol_list_new): Initialize dprec and merger fields.
Originally 2002-06-16 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
* data/bison.glr: Be sure to restore the
current #line when returning to the skeleton contents after having
exposed the input file's #line.
Originally 2002-06-13 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
* data/bison.glr: Bring up to date with changes to bison.simple.
Originally 2002-06-03 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
* data/bison.glr: Correct definitions that use b4_prefix.
Various reformatting.
(GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack.
(yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove
yytokenp argument; now part of stack.
(yychar): Define to behave as documented.
(yyclearin): Ditto.
Originally 2002-05-14 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
* src/reader.h: Add declaration for free_merger_functions.
* src/reader.c (merge_functions): New variable.
(get_merge_function): New function.
(free_merger_functions): New function.
(readgram): Check for %prec that is not followed by a symbol.
Handle %dprec and %merge declarations.
(packgram): Initialize dprec and merger fields in rules array.
* src/output.c (conflict_tos, conflrow, conflict_table, conflict_list,
conflict_list_cnt, conflict_list_free): New variables.
(table_grow): Also grow conflict_table.
(prepare_rules): Output dprec and merger tables.
(conflict_row): New function.
(action_row): Output conflict lists for GLR parser. Don't use
default reduction in conflicted states for GLR parser so that there
are spaces for the conflict lists.
(save_row): Also save conflict information.
(token_actions): Allocate conflict list.
(merger_output): New function.
(pack_vector): Pack conflict table, too.
(output_conflicts): New function to output yyconflp and yyconfl.
(output_check): Allocate conflict_tos.
(output_actions): Output conflict tables, also.
(output_skeleton): Output b4_mergers definition.
(prepare): Output b4_max_rhs_length definition.
Use 'bison.glr' as default skeleton for GLR parsers.
* src/gram.c (glr_parser): New flag.
(grammar_free): Call free_merger_functions.
* src/conflicts.c (count_rr_conflicts): Augment to optionally count
all pairs of conflicting reductions, rather than just all tokens
causing conflicts. Needed to size conflict tables.
(conflicts_output): Modify call to count_rr_conflicts for new
interface.
(conflicts_print): Ditto.
(count_total_conflicts): New function.
* src/reader.h (merger_list): New type.
(merge_functions): New variable.
* src/lex.h (tok_dprec, tok_merge): New token types.
* src/gram.h (rule_s): Add dprec and merger fields.
(glr_parser): New flag.
* src/conflicts.h (count_total_conflicts): New function.
* src/options.c (option_table): Add %dprec, %merge, and %glr-parser.
* doc/bison.texinfo (Generalized LR Parsing): New section.
(GLR Parsers): New section.
(Language and Grammar): Mention GLR parsing.
(Table of Symbols): Add %dprec, %glr-parser, %merge, GLR
Correct typo ("tge" -> "the").
* data/bison.glr: New skeleton for GLR parsing.
* tests/cxx-gram.at: New tests for GLR parsing.
* tests/testsuite.at: Include cxx-gram.at.
* tests/Makefile.am: Add cxx-gram.at.
* src/parse-gram.y:
* src/scan-gram.l: Add %dprec, %glr-parser, %merge.
* src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser.
2002-06-27 Akim Demaille <akim@epita.fr>
* src/options.h, src/options.c: Remove.
* src/getargs.c (short_options, long_options): New.

8
NEWS
View File

@@ -3,6 +3,14 @@ Bison News
Changes in version 1.49b:
* GLR parsing
The declaration
%glr-parser
causes Bison to produce a Generalized LR (GLR) parser, capable of handling
almost any context-free grammar, ambiguous or not. The new declarations
%dprec and %merge on grammar rules allow parse-time resolution of
ambiguities. Contributed by Paul Hilfinger.
* Output Directory
When not in Yacc compatibility mode, when the output file was not
specified, runnning `bison foo/bar.y' created `foo/bar.c'. It

View File

@@ -15,7 +15,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
## 02111-1307 USA
dist_pkgdata_DATA = yacc.c lalr1.cc
dist_pkgdata_DATA = yacc.c lalr1.cc glr.c
m4sugardir = $(pkgdatadir)/m4sugar
dist_m4sugar_DATA = m4sugar/m4sugar.m4 m4sugar/version.m4

View File

@@ -282,6 +282,7 @@ The Bison Parser Algorithm
* Parser States:: The parser is a finite-state-machine with stack.
* Reduce/Reduce:: When two rules are applicable in the same situation.
* Mystery Conflicts:: Reduce/reduce conflicts that look unjustified.
* Generalized LR Parsing:: Parsing arbitrary context-free grammars.
* Stack Overflow:: What happens when stack gets full. How to avoid it.
Operator Precedence
@@ -388,6 +389,7 @@ use Bison or Yacc, we suggest you start by reading this chapter carefully.
a semantic value (the value of an integer,
the name of an identifier, etc.).
* Semantic Actions:: Each rule can have an action containing C code.
* GLR Parsers:: Writing parsers for general context-free languages
* Locations Overview:: Tracking Locations.
* Bison Parser:: What are Bison's input and output,
how is the output used?
@@ -418,8 +420,12 @@ specify the language Algol 60. Any grammar expressed in BNF is a
context-free grammar. The input to Bison is essentially machine-readable
BNF.
Not all context-free languages can be handled by Bison, only those
that are LALR(1). In brief, this means that it must be possible to
@cindex LALR(1) grammars
@cindex LR(1) grammars
There are various important subclasses of context-free grammar. Although it
can handle almost all context-free grammars, Bison is optimized for what
are called LALR(1) grammars.
In brief, in these grammars, it must be possible to
tell how to parse any portion of an input string with just a single
token of look-ahead. Strictly speaking, that is a description of an
LR(1) grammar, and LALR(1) involves additional restrictions that are
@@ -427,6 +433,24 @@ hard to explain simply; but it is rare in actual practice to find an
LR(1) grammar that fails to be LALR(1). @xref{Mystery Conflicts, ,
Mysterious Reduce/Reduce Conflicts}, for more information on this.
@cindex GLR parsing
@cindex generalized LR (GLR) parsing
@cindex ambiguous grammars
@cindex non-deterministic parsing
Parsers for LALR(1) grammars are @dfn{deterministic}, meaning roughly that
the next grammar rule to apply at any point in the input is uniquely
determined by the preceding input and a fixed, finite portion (called
a @dfn{look-ahead}) of the remaining input.
A context-free grammar can be @dfn{ambiguous}, meaning that
there are multiple ways to apply the grammar rules to get the some inputs.
Even unambiguous grammars can be @dfn{non-deterministic}, meaning that no
fixed look-ahead always suffices to determine the next grammar rule to apply.
With the proper declarations, Bison is also able to parse these more general
context-free grammars, using a technique known as GLR parsing (for
Generalized LR). Bison's GLR parsers are able to handle any context-free
grammar for which the number of possible parses of any given string
is finite.
@cindex symbols (abstract)
@cindex token
@cindex syntactic grouping
@@ -632,6 +656,180 @@ expr: expr '+' expr @{ $$ = $1 + $3; @}
The action says how to produce the semantic value of the sum expression
from the values of the two subexpressions.
@node GLR Parsers
@section Writing GLR Parsers
@cindex GLR parsing
@cindex generalized LR (GLR) parsing
@findex %glr-parser
@cindex conflicts
@cindex shift/reduce conflicts
In some grammars, there will be cases where Bison's standard LALR(1)
parsing algorithm cannot decide whether to apply a certain grammar rule
at a given point. That is, it may not be able to decide (on the basis
of the input read so far) which of two possible reductions (applications
of a grammar rule) applies, or whether to apply a reduction or read more
of the input and apply a reduction later in the input. These are known
respectively as @dfn{reduce/reduce} conflicts (@pxref{Reduce/Reduce}),
and @dfn{shift/reduce} conflicts (@pxref{Shift/Reduce}).
To use a grammar that is not easily modified to be LALR(1), a more
general parsing algorithm is sometimes necessary. If you include
@code{%glr-parser} among the Bison declarations in your file
(@pxref{Grammar Outline}), the result will be a Generalized LR (GLR)
parser. These parsers handle Bison grammars that contain no unresolved
conflicts (i.e., after applying precedence declarations) identically to
LALR(1) parsers. However, when faced with unresolved shift/reduce and
reduce/reduce conflicts, GLR parsers use the simple expedient of doing
both, effectively cloning the parser to follow both possibilities. Each
of the resulting parsers can again split, so that at any given time,
there can be any number of possible parses being explored. The parsers
proceed in lockstep; that is, all of them consume (shift) a given input
symbol before any of them proceed to the next. Each of the cloned
parsers eventually meets one of two possible fates: either it runs into
a parsing error, in which case it simply vanishes, or it merges with
another parser, because the two of them have reduced the input to an
identical set of symbols.
During the time that there are multiple parsers, semantic actions are
recorded, but not performed. When a parser disappears, its recorded
semantic actions disappear as well, and are never performed. When a
reduction makes two parsers identical, causing them to merge, Bison
records both sets of semantic actions. Whenever the last two parsers
merge, reverting to the single-parser case, Bison resolves all the
outstanding actions either by precedences given to the grammar rules
involved, or by performing both actions, and then calling a designated
user-defined function on the resulting values to produce an arbitrary
merged result.
Let's consider an example, vastly simplified from C++.
@example
%@{
#define YYSTYPE const char*
%@}
%token TYPENAME ID
%right '='
%left '+'
%glr-parser
%%
prog :
| prog stmt @{ printf ("\n"); @}
;
stmt : expr ';' %dprec 1
| decl %dprec 2
;
expr : ID @{ printf ("%s ", $$); @}
| TYPENAME '(' expr ')'
@{ printf ("%s <cast> ", $1); @}
| expr '+' expr @{ printf ("+ "); @}
| expr '=' expr @{ printf ("= "); @}
;
decl : TYPENAME declarator ';'
@{ printf ("%s <declare> ", $1); @}
| TYPENAME declarator '=' expr ';'
@{ printf ("%s <init-declare> ", $1); @}
;
declarator : ID @{ printf ("\"%s\" ", $1); @}
| '(' declarator ')'
;
@end example
@noindent
This models a problematic part of the C++ grammar---the ambiguity between
certain declarations and statements. For example,
@example
T (x) = y+z;
@end example
@noindent
parses as either an @code{expr} or a @code{stmt}
(assuming that @samp{T} is recognized as a TYPENAME and @samp{x} as an ID).
Bison detects this as a reduce/reduce conflict between the rules
@code{expr : ID} and @code{declarator : ID}, which it cannot resolve at the
time it encounters @code{x} in the example above. The two @code{%dprec}
declarations, however, give precedence to interpreting the example as a
@code{decl}, which implies that @code{x} is a declarator.
The parser therefore prints
@example
"x" y z + T <init-declare>
@end example
Consider a different input string for this parser:
@example
T (x) + y;
@end example
@noindent
Here, there is no ambiguity (this cannot be parsed as a declaration).
However, at the time the Bison parser encounters @code{x}, it does not
have enough information to resolve the reduce/reduce conflict (again,
between @code{x} as an @code{expr} or a @code{declarator}). In this
case, no precedence declaration is used. Instead, the parser splits
into two, one assuming that @code{x} is an @code{expr}, and the other
assuming @code{x} is a @code{declarator}. The second of these parsers
then vanishes when it sees @code{+}, and the parser prints
@example
x T <cast> y +
@end example
Suppose that instead of resolving the ambiguity, you wanted to see all
the possibilities. For this purpose, we must @dfn{merge} the semantic
actions of the two possible parsers, rather than choosing one over the
other. To do so, you could change the declaration of @code{stmt} as
follows:
@example
stmt : expr ';' %merge <stmtMerge>
| decl %merge <stmtMerge>
;
@end example
@noindent
and define the @code{stmtMerge} function as:
@example
static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1)
@{
printf ("<OR> ");
return "";
@}
@end example
@noindent
with an accompanying forward declaration
in the C declarations at the beginning of the file:
@example
%@{
#define YYSTYPE const char*
static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);
%@}
@end example
@noindent
With these declarations, the resulting parser will parse the first example
as both an @code{expr} and a @code{decl}, and print
@example
"x" y z + T <init-declare> x T <cast> y z + = <OR>
@end example
@node Locations Overview
@section Locations
@cindex location
@@ -2913,7 +3111,7 @@ the location of the grouping (the result of the computation). The second one
is an array holding locations of all right hand side elements of the rule
being matched. The last one is the size of the right hand side rule.
By default, it is defined this way:
By default, it is defined this way for simple LALR(1) parsers:
@example
@group
@@ -2925,6 +3123,19 @@ By default, it is defined this way:
@end group
@end example
@noindent
and like this for GLR parsers:
@example
@group
#define YYLLOC_DEFAULT(Current, Rhs, N) \
Current.first_line = YYRHSLOC(Rhs,1).first_line; \
Current.first_column = YYRHSLOC(Rhs,1).first_column; \
Current.last_line = YYRHSLOC(Rhs,N).last_line; \
Current.last_column = YYRHSLOC(Rhs,N).last_column;
@end group
@end example
When defining @code{YYLLOC_DEFAULT}, you should consider that:
@itemize @bullet
@@ -3890,6 +4101,7 @@ Return immediately from @code{yyparse}, indicating success.
@findex YYBACKUP
Unshift a token. This macro is allowed only for rules that reduce
a single value, and only when there is no look-ahead token.
It is also disallowed in GLR parsers.
It installs a look-ahead token with token type @var{token} and
semantic value @var{value}; then it discards the value that was
going to be reduced by this rule.
@@ -4030,6 +4242,7 @@ This kind of parser is known in the literature as a bottom-up parser.
* Parser States:: The parser is a finite-state-machine with stack.
* Reduce/Reduce:: When two rules are applicable in the same situation.
* Mystery Conflicts:: Reduce/reduce conflicts that look unjustified.
* Generalized LR Parsing:: Parsing arbitrary context-free grammars.
* Stack Overflow:: What happens when stack gets full. How to avoid it.
@end menu
@@ -4624,6 +4837,82 @@ return_spec:
;
@end example
@node Generalized LR Parsing
@section Generalized LR (GLR) Parsing
@cindex GLR parsing
@cindex generalized LR (GLR) parsing
@cindex ambiguous grammars
@cindex non-deterministic parsing
Bison produces @emph{deterministic} parsers that choose uniquely
when to reduce and which reduction to apply
based on a summary of the preceding input and on one extra token of lookahead.
As a result, normal Bison handles a proper subset of the family of
context-free languages.
Ambiguous grammars, since they have strings with more than one possible
sequence of reductions cannot have deterministic parsers in this sense.
The same is true of languages that require more than one symbol of
lookahead, since the parser lacks the information necessary to make a
decision at the point it must be made in a shift-reduce parser.
Finally, as previously mentioned (@pxref{Mystery Conflicts}),
there are languages where Bison's particular choice of how to
summarize the input seen so far loses necessary information.
When you use the @samp{%glr-parser} declaration in your grammar file,
Bison generates a parser that uses a different algorithm, called
Generalized LR (or GLR). A Bison GLR parser uses the same basic
algorithm for parsing as an ordinary Bison parser, but behaves
differently in cases where there is a shift-reduce conflict that has not
been resolved by precedence rules (@pxref{Precedence}) or a
reduce-reduce conflict. When a GLR parser encounters such a situation, it
effectively @emph{splits} into a several parsers, one for each possible
shift or reduction. These parsers then proceed as usual, consuming
tokens in lock-step. Some of the stacks may encounter other conflicts
and split further, with the result that instead of a sequence of states,
a Bison GLR parsing stack is what is in effect a tree of states.
In effect, each stack represents a guess as to what the proper parse
is. Additional input may indicate that a guess was wrong, in which case
the appropriate stack silently disappears. Otherwise, the semantics
actions generated in each stack are saved, rather than being executed
immediately. When a stack disappears, its saved semantic actions never
get executed. When a reduction causes two stacks to become equivalent,
their sets of semantic actions are both saved with the state that
results from the reduction. We say that two stacks are equivalent
when they both represent the same sequence of states,
and each pair of corresponding states represents a
grammar symbol that produces the same segment of the input token
stream.
Whenever the parser makes a transition from having multiple
states to having one, it reverts to the normal LALR(1) parsing
algorithm, after resolving and executing the saved-up actions.
At this transition, some of the states on the stack will have semantic
values that are sets (actually multisets) of possible actions. The
parser tries to pick one of the actions by first finding one whose rule
has the highest dynamic precedence, as set by the @samp{%dprec}
declaration. Otherwise, if the alternative actions are not ordered by
precedence, but there the same merging function is declared for both
rules by the @samp{%merge} declaration,
Bison resolves and evaluates both and then calls the merge function on
the result. Otherwise, it reports an ambiguity.
It is possible to use a data structure for the GLR parsing tree that
permits the processing of any LALR(1) grammar in linear time (in the
size of the input), any unambiguous (not necessarily LALR(1)) grammar in
quadratic worst-case time, and any general (possibly ambiguous)
context-free grammar in cubic worst-case time. However, Bison currently
uses a simpler data structure that requires time proportional to the
length of the input times the maximum number of stacks required for any
prefix of the input. Thus, really ambiguous or non-deterministic
grammars can require exponential time and space to process. Such badly
behaving examples, however, are not generally of practical interest.
Usually, non-determinism in a grammar is local---the parser is ``in
doubt'' only for a few tokens at a time. Therefore, the current data
structure should generally be adequate. On LALR(1) portions of a
grammar, in particular, it is only slightly slower than with the default
Bison parser.
@node Stack Overflow
@section Stack Overflow, and How to Avoid It
@cindex stack overflow
@@ -5912,10 +6201,17 @@ Equip the parser for debugging. @xref{Decl Summary}.
Bison declaration to create a header file meant for the scanner.
@xref{Decl Summary}.
@item %dprec
Bison declaration to assign a precedence to a rule that is used at parse
time to resolve reduce/reduce conflicts. @xref{GLR Parsers}.
@item %file-prefix="@var{prefix}"
Bison declaration to set tge prefix of the output files. @xref{Decl
Bison declaration to set the prefix of the output files. @xref{Decl
Summary}.
@item %glr-parser
Bison declaration to produce a GLR parser. @xref{GLR Parsers}.
@c @item %source-extension
@c Bison declaration to specify the generated parser output file extension.
@c @xref{Decl Summary}.
@@ -5928,6 +6224,12 @@ Summary}.
Bison declaration to assign left associativity to token(s).
@xref{Precedence Decl, ,Operator Precedence}.
@item %merge
Bison declaration to assign a merging function to a rule. If there is a
reduce/reduce conflict with a rule having the same merging function, the
function is applied to the two semantic values to get a single result.
@xref{GLR Parsers}.
@item %name-prefix="@var{prefix}"
Bison declaration to rename the external symbols. @xref{Decl Summary}.
@@ -6040,6 +6342,13 @@ machine. In the case of the parser, the input is the language being
parsed, and the states correspond to various stages in the grammar
rules. @xref{Algorithm, ,The Bison Parser Algorithm }.
@item Generalized LR (GLR)
A parsing algorithm that can handle all context-free grammars, including those
that are not LALR(1). It resolves situations that Bison's usual LALR(1)
algorithm cannot by effectively splitting off multiple parsers, trying all
possible parsers, and discarding those that fail in the light of additional
right context. @xref{Generalized LR Parsing, ,Generalized LR Parsing}.
@item Grouping
A language construct that is (in general) grammatically divisible;
for example, `expression' or `declaration' in C.

102
po/de.po
View File

@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.35\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-04-26 11:58:57+0200\n"
"Last-Translator: Michael Piefel <piefel@informatik.hu-berlin.de>\n"
"Language-Team: German <de@li.org>\n"
@@ -47,49 +47,49 @@ msgstr "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n"
msgid " Conflict between rule %d and token %s resolved as an error"
msgstr "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d Schiebe/Reduziere-Konflikt"
msgstr[1] "%d Schiebe/Reduziere-Konflikte"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "und"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d Reduziere/Reduziere-Konflikt"
msgstr[1] "%d Reduziere/Reduziere-Konflikte"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "Zustand %d enthält "
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "Konflikte: "
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d Schiebe/Reduziere"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d Reduziere/Reduziere"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s enthält "
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -105,16 +105,16 @@ msgstr "kann Datei »%s« nicht öffnen"
msgid "cannot close file"
msgstr "kann Datei nicht schließen"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison generiert Parser für LALR(1)-Grammatiken.\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Aufruf: %s [OPTION]... DATEI\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -124,7 +124,7 @@ msgstr ""
"für die äquivalente kurze Option erforderlich. Ähnlich für optionale "
"Argumente.\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -136,7 +136,7 @@ msgstr ""
" -v, --version Versionsinformation anzeigen und beenden.\n"
" -y, --yacc POSIX' yacc emulieren\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -158,7 +158,7 @@ msgstr ""
" -k, --token-table einer Tabellen der Token-Namen mit "
"einschließen\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -178,7 +178,7 @@ msgstr ""
" -g, --graph auch eine VCG-Beschreibung des Automaten "
"herstellen\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -189,28 +189,28 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr ""
"Berichten Sie Fehler (auf Englisch, mit LC_ALL=C) an <bug-bison@gnu.org>.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -219,17 +219,17 @@ msgstr ""
"gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE "
"ZWECKE.\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "»%s --help« gibt weitere Informationen.\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: keine Grammatik-Datei angegeben\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n"
@@ -317,34 +317,64 @@ msgstr " auf der linken Seite:"
msgid " on right:"
msgstr " auf der rechten Seite:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "mehr als eine %s-Deklaration"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "Regel für %s vorhanden, welches aber ein Token ist"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "Typkonflikt (»%s« »%s«) bei Default-Aktion"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr "leere Regel für Nicht-Terminal mit Typ und keine Aktion"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "zwei @prec-Anweisungen nacheinander"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "Eingabegrammatik enthält keine Regeln"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "zu viele Symbole (Token plus Nicht-Terminale); Maximum %d"
@@ -407,22 +437,22 @@ msgstr[1] "%d nutzlose Regeln"
msgid "Start symbol %s does not derive any sentence"
msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ von »%s« hat keinen deklarierten Typ"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "unzulässiger @-Wert"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d von »%s« hat keinen deklarierten Typ"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s ist unzulässig"

102
po/es.po
View File

@@ -29,7 +29,7 @@
msgid ""
msgstr ""
"Project-Id-Version: GNU bison 1.35\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-04-03 10:19+0200\n"
"Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -83,30 +83,30 @@ msgstr ""
"El conflicto en el estado %d entre la regla %d y el terminal %s se resuelve "
"como %s.\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d conflicto desplazamiento/reducción"
msgstr[1] "%d conflictos desplazamiento/reducción"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "y"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d conflicto reducción/reducción"
msgstr[1] " %d conflictos reducción/reducción"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "El estado %d contiene"
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "conflictos: "
@@ -122,7 +122,7 @@ msgstr "conflictos: "
# ok
# ngp
#
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d desplazamiento(s)/reducción(ones)"
@@ -139,17 +139,17 @@ msgstr " %d desplazamiento(s)/reducci
#
# ok
# ngp
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d reducción(ones)/reducción(ones)"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s contiene "
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -165,16 +165,16 @@ msgstr "no se puede abrir el fichero `%s'"
msgid "cannot close file"
msgstr "no se puede cerrar el fichero"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison genera analizadores para gramáticas LALR(1).\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Utilización: %s [OPCIÓN]... FICHERO\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -184,7 +184,7 @@ msgstr ""
"para la opción corta equivalente también. De igual forma para los argumentos "
"opcionales.\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -196,7 +196,7 @@ msgstr ""
" -V, --version informa de la versión y termina\n"
" -y, --yacc emula POSIX yacc\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -216,7 +216,7 @@ msgstr ""
" -n, --no-parser solamente genera las tablas\n"
" --k, --token-table incluye una tabla de nombres de terminales\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -237,7 +237,7 @@ msgstr ""
" -g, --graph también produce una descripción en VCG del "
"automaton\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -248,27 +248,27 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr "Informe de los errores a <bug-bison@gnu.org>.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -278,20 +278,20 @@ msgstr ""
"NINGUNA garantía; ni siquiera para COMERCIALIZACIÓN o ADAPTACIÓN PARA UN\n"
"USO PARTICULAR\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Pruebe `%s --help' para más información.\n"
# Me parece menos "computadora" decir "ningún fichero de gramática" - cll
#
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: no se ha especificado ningún fichero de gramática\n"
# Ignorar es no saber, to ignore es no hacer caso, que no es lo mismo. sv
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: los argumentos extra después de '%s' no se tendrán en cuenta\n"
@@ -379,34 +379,64 @@ msgstr " en la izquierda:"
msgid " on right:"
msgstr " en la derecha:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "múltiples declaraciones de %s"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "se ha dado una regla para %s, que es un terminal"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto"
#: src/reader.c:235
#: src/reader.c:290
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"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "dos @prec en una línea"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "no hay reglas en la gramática de entrada"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "demasiados símbolos (terminales y no terminales); máximo %d"
@@ -469,22 +499,22 @@ msgstr[1] "%d reglas sin uso"
msgid "Start symbol %s does not derive any sentence"
msgstr "El símbolo de inicio (axioma) %s no deriva ninguna sentencia"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ de `%s' no tiene tipo declarado"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "valor @ no válido"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d de `%s' no tiene tipo declarado"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s no es válido"

102
po/et.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.33b\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-03-05 16:27+0200\n"
"Last-Translator: Toomas Soome <tsoome@ut.ee>\n"
"Language-Team: Estonian <et@li.org>\n"
@@ -46,49 +46,49 @@ msgstr "Konflikt olekus %d reegli %d ja m
msgid " Conflict between rule %d and token %s resolved as an error"
msgstr "Konflikt olekus %d reegli %d ja märgi %s vahel lahendatud, kui %s.\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d nihutamine/redutseerimine konflikt"
msgstr[1] "%d nihutamine/redutseerimine konflikti"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "ja"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d redutseerimine/redutseerimine konflikt"
msgstr[1] "%d redutseerimine/redutseerimine konflikti"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "Olek %d sisaldab "
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "konfliktid: "
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d nihutamine/redutseerimine"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d redutseerimine/redutseerimine"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s sisaldab "
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -104,16 +104,16 @@ msgstr "faili `%s' ei saa avada"
msgid "cannot close file"
msgstr "faili ei õnnestu sulgeda"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison genereerib parsereid LALR(1) grammatikatele.\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Kasuta: %s [VÕTI]...FAIL\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -121,7 +121,7 @@ msgstr ""
"Kui pikk võti näitab, et argument on kohustuslik, siis on see kohustuslik \n"
"ka lühikese võtme korral. Sama ka vabalt valitavate võtmete korral.\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -133,7 +133,7 @@ msgstr ""
" -V, --version esita versiooniinfo ja lõpeta töö\n"
" -y, --yacc emuleeri POSIX yacc\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -153,7 +153,7 @@ msgstr ""
" -n, --no-parser genereeri ainult tabelid\n"
" -k, --token-table lisa ka sümbolite nimede tabel\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -172,7 +172,7 @@ msgstr ""
" -o, --output-file=FAIL jäta väljund FAILi\n"
" -g, --graph loo automaadi kirjeldus VCG graafina\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -183,27 +183,27 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr "Teatage palun vigadest aadressil <bug-bison@gnu.org>.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Autoriõigus 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -211,17 +211,17 @@ msgstr ""
"See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n"
"PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Lisainfo saamiseks proovige `%s --help'.\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: puudub grammatikafail\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ignoreerin lisaargumente peale `%s'\n"
@@ -309,34 +309,64 @@ msgstr " vasakul:"
msgid " on right:"
msgstr " paremal:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "korduvad %s deklaratsioonid"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "%s jaoks on antud reegel, aga see on märk"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "kaks @prec ühel real"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "sisendgrammatikas pole reegleid"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d"
@@ -399,22 +429,22 @@ msgstr[1] "%d kasutamata reeglit"
msgid "Start symbol %s does not derive any sentence"
msgstr "Stardisümbolist %s ei tuletata ühtegi lauset"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "`%s' $$ ei oma deklareeritud tüüpi"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "vigane @ väärtus"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d `%s' ei oma deklareeritud tüüpi"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s on vigane"

102
po/fr.po
View File

@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: GNU bison 1.34a\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-03-21 15:00-0500\n"
"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
"Language-Team: French <traduc@traduc.org>\n"
@@ -50,49 +50,49 @@ msgid " Conflict between rule %d and token %s resolved as an error"
msgstr ""
"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d conflit par décalage/réduction"
msgstr[1] "%d conflits par décalage/réduction"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "et"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d conflit par réduction/réduction"
msgstr[1] "%d conflits par réduction/réduction"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "L'état %d contient "
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "conflits: "
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d décalage/réduction"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d réduction/réduction"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s contient "
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -108,16 +108,16 @@ msgstr "ne peut ouvrir le fichier
msgid "cannot close file"
msgstr "ne peut fermer le fichier"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison génère des analyseurs pour les grammaires de type LALR(1).\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Usage: %s [OPTION]... FICHIER\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -126,7 +126,7 @@ msgstr ""
"il est alors obligatoire également pour une option de forme courte.\n"
"Il en est de même pour les arguments optionnels.\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -138,7 +138,7 @@ msgstr ""
" -V, --version afficher le nom et la version du logiciel\n"
" -y, --yacc émuler yacc en mode POSIX\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -160,7 +160,7 @@ msgstr ""
" -r, --raw compter les jetons à partir de 3\n"
" -k, --token-table inclure la table des noms de jetons\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -180,7 +180,7 @@ msgstr ""
" -g, --graph produire aussi la description du graphe VCG de "
"l'automate\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -191,27 +191,27 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr "Rapporter toutes anomalies à <bug-bison@gnu.org>.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002 Free Software Foundation, "
"Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -220,17 +220,17 @@ msgstr ""
"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
"COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Pour en savoir davantage, faites: « %s --help ».\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: grammaire manquante\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: arguments supplémentaires ignorés après « %s »\n"
@@ -318,34 +318,64 @@ msgstr "
msgid " on right:"
msgstr " à droite:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "multiples déclarations %s"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "la règle pour %s, qui est un terminal"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "conflit de type (« %s » « %s ») pour l'action par défaut"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr "règle vide pour une catégorie typée et aucune action"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "deux @prec de suite"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "la grammaire n'a pas de règles"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "trop de symboles (jeton plus non terminaux); maximum %d"
@@ -408,22 +438,22 @@ msgstr[1] "%d r
msgid "Start symbol %s does not derive any sentence"
msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ de « %s » n'a pas son type déclaré"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "valeur @ invalide"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d de « %s » n'a pas de type déclaré"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s n'est pas valide"

102
po/hr.po
View File

@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.34a\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-04-10 22:20+01\n"
"Last-Translator: Denis Lackovic <delacko@fly.srk.fer.hr>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -48,49 +48,49 @@ msgstr "Konflikt u stanju %d izme
msgid " Conflict between rule %d and token %s resolved as an error"
msgstr "Konflikt u stanju %d izmeðu pravila %d i znaka %s razrije¹en kao %s.\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d pomakni/reduciraj konflikat"
msgstr[1] "%d pomakni/reduciraj konflikata"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "i"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d reduciraj/reduciraj konflikt"
msgstr[1] "%d reduciraj/reduciraj konflikata"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "Stanje %d sadr¾i"
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "konflikt:"
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d pomakni/reduciraj"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d reduviraj/reduciraj"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s sadr¾i"
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -106,16 +106,16 @@ msgstr "ne mogu otvoriti datoteku `%s'"
msgid "cannot close file"
msgstr "ne mogu zatvoriti datoteku"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison generira parsere za LALR(1) gramatike.\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Kori¹tenje: %s [OPCIJA]... DATOTEKA\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -123,7 +123,7 @@ msgstr ""
"Ako duga opcija ka¾e da je argument obavezan, tada je on obavezan\n"
"i za ekvivalentnu kratku opciju. Slièno je i za opcionalne argumente.\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -135,7 +135,7 @@ msgstr ""
" -V, --version prika¾i verziju i izaði\n"
" -y, --yacc emuliraj POSIX yacc\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -155,7 +155,7 @@ msgstr ""
" -n, --no-parser generiraj samo tablice\n"
" -k, --token-table ukljuèi tablicu imena znakova\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -174,7 +174,7 @@ msgstr ""
" -o, --output=DATOTEKA ispi¹i izlaz u DATOTEKU\n"
" -g, --graph takoðer proizvedi VCG opis automata\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -185,27 +185,27 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr "Izvjesti o bugovima na <bug-bison@gnu.org>.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -214,17 +214,17 @@ msgstr ""
"kopiranja. NEMA\n"
"garancije; èak ni tvrdnje o ISPLATIVOSTI ili POGODNOSTI ZA NEKU SVRHU.\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Poku¹aj `%s --help' za vi¹e informacija.\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: nije data datoteka sa gramatikom\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: dodatni argumenti se ignoriraju nakon `%s'\n"
@@ -312,34 +312,64 @@ msgstr "s lijeva:"
msgid " on right:"
msgstr "s desna:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "vi¹estruke %s deklaracije"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "pravilo dato za %s, a to je znak"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "sudar tipova (`%s' `%s') na deaultnoj akciji"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr "prazno pravilo za nezavr¹ni znak, i nema akcije"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "dva @prec's u retku"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "nema pravila u ulaznoj gramatici"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "previ¹e simbola (znakovi plus nezavr¹ni znakovi); maksimalno %d"
@@ -402,22 +432,22 @@ msgstr[1] "%d beskorisnih pravila"
msgid "Start symbol %s does not derive any sentence"
msgstr "Poèetni simbol %s ne daje niti jednu reèenicu"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ od `%s' nema deklarirani tip"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "nedozvoljena @ vrijednost"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d od `%s' nema deklarirani tip"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s je nedozvoljeno"

102
po/it.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.31\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-01-18 12:40 CET\n"
"Last-Translator: Paolo Bonzini <bonzini@gnu.org>\n"
"Language-Team: Italian <it@li.org>\n"
@@ -49,49 +49,49 @@ msgid " Conflict between rule %d and token %s resolved as an error"
msgstr ""
"Conflitto nello stato %d tra la regola %d e il token %s risolto come %s.\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d conflitto shift/riduzione"
msgstr[1] "%d conflitti shift/riduzione"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "e"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d conflitto riduzione/riduzione"
msgstr[1] "%d conflitti riduzione/riduzione"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "Lo stato %d contiene"
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "conflitti: "
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d shift/riduzione"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d riduzione/riduzione"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s contiene "
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -107,16 +107,16 @@ msgstr "impossibile aprire il file `%s'"
msgid "cannot close file"
msgstr "impossibile chiudere il file `%s'"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison genera parser per grammatiche LALR(1).\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Utilizzo: %s [OPZIONE]... FILE\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -125,7 +125,7 @@ msgstr ""
"è obbligatorio anche per l'equivalente opzione corta. Analogamente per\n"
"gli argomenti opzionali.\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -137,7 +137,7 @@ msgstr ""
" -V, --version mostra informazioni sulla versione ed esce\n"
" -y, --yacc emula il comportamento di POSIX yacc\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -156,7 +156,7 @@ msgstr ""
" -n, --no-parser genera le sole tabelle\n"
" -k, --token-table include una tabella di nomi dei token\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -175,7 +175,7 @@ msgstr ""
" -o, --output=FILE lascia l'output in FILE\n"
" -g, --graph produce anche una descrizione VCG dell'automa\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -186,26 +186,26 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr "Segnalare eventuali bug a <bug-bison@gnu.org>.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -214,17 +214,17 @@ msgstr ""
"sottoposta la copia. NON c'è ALCUNA garanzia, neanche di\n"
"COMMERCIABILITA` o di ADEGUATEZZA AD UN PARTICOLARE SCOPO.\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Provare `%s --help' per ulteriori informazioni.\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: nessun file grammatica specificato\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ignorati gli argomenti successivi a `%s'\n"
@@ -312,34 +312,64 @@ msgstr " nel primo membro:"
msgid " on right:"
msgstr " nel secondo membro:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "dichiarazioni multiple per %s"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "fornita una regola per il token %s"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "conflitto di tipo (`%s' e `%s') nell'azione di default"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr "regola vuota e nessuna azione per un nonterminale con tipo"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "due @prec di seguito"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "nessuna regola nella grammatica di input"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "troppi simboli (token e nonterminali); il massimo è %d"
@@ -402,22 +432,22 @@ msgstr[1] "%d regole inutili"
msgid "Start symbol %s does not derive any sentence"
msgstr "dal simbolo iniziale %s non deriva alcuna frase"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "Manca una dichiarazione di tipo per $$ di `%s'"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, c-format
msgid "invalid value: %s%d"
msgstr "valore non valido: %s%d"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "Manca una dichiarazione di tipo per $%d di `%s'"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s non è valido"

102
po/ja.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: GNU bison 1.30f\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2001-12-10 15:59+0900\n"
"Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n"
"Language-Team: Japanese <ja@li.org>\n"
@@ -46,47 +46,47 @@ msgstr "
msgid " Conflict between rule %d and token %s resolved as an error"
msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d シフト/還元衝突"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "および"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d 還元/還元衝突"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "状態 %d が含むのは "
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "衝突: "
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d シフト/還元"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d 還元/還元"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s の中身は"
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -101,16 +101,16 @@ msgstr "
msgid "cannot close file"
msgstr "ファイルを閉じることができません"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison は LALR(1) 文法の構文解析器を生成します。\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "使い方: %s [オプション]... ファイル\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -118,7 +118,7 @@ msgstr ""
"ロングオプションで必須の引数が示されていれば、同じ意味のショートオプション\n"
"でも同様に必須の引数となります。必須でない選択的引数でも同様です。\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -130,7 +130,7 @@ msgstr ""
" -V, --version バージョン情報を表示して終了する\n"
" -y, --yacc POSIX yacc をエミュレイトする\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -150,7 +150,7 @@ msgstr ""
" -n, --no-parser テーブルのみを生成する\n"
" -k, --token-table トークン名のテーブルを含める\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -169,7 +169,7 @@ msgstr ""
" -o, --output=FILE 出力先を FILE とする\n"
" -g, --graph オートマトンの VCG 記述子も作成する\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -180,26 +180,26 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr "バグレポートは <bug-bison@gnu.org> まで。\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -210,17 +210,17 @@ msgstr ""
"これはフリーソフトウェアです -- 複製についての条件はソースを見ましょう。\n"
"一切の保証はありません -- 商業性や目的適合性についての保証すらありません。\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "`%s --help' で詳細情報を参照してください\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: 文法ファイルが指定されていません\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: `%s' の後ろの余分な引数は無視されました\n"
@@ -308,34 +308,64 @@ msgstr "
msgid " on right:"
msgstr " 右辺:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "%s が複数個宣言されました"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "%s に規則が与えられ、それはトークンとなります"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "@prec のもの二つが同列になっています"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "入力した文法に規則が定義されていません"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "シンボルが多すぎます (トークン + 非終端アイテム) -- 最大 %d"
@@ -395,22 +425,22 @@ msgstr[0] "%d
msgid "Start symbol %s does not derive any sentence"
msgstr "開始シンボル %s はどの文にも由来しません"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "`%s' の $$ に宣言のない型があります"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "不適切な $ の値"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d 個の `%s' が宣言された型を持っていません"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s は不適切です"

102
po/nl.po
View File

@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.34a\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-03-20 12:54+0100\n"
"Last-Translator: Tim Van Holder <tim.van.holder@pandora.be>\n"
"Language-Team: Dutch <vertaling@nl.linux.org>\n"
@@ -50,49 +50,49 @@ msgid " Conflict between rule %d and token %s resolved as an error"
msgstr ""
"Conflict in staat %d tussen regel %d en token %s opgelost als \"%s\".\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d shift/reductie conflict"
msgstr[1] "%d shift/reductie conflicten"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "en"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d reductie/reductie conflict"
msgstr[1] "%d reductie/reductie conflicten"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "Staat %d bevat"
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "conflicten: "
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d vershuif/reductie"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d reductie/reductie"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s bevat"
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -109,16 +109,16 @@ msgid "cannot close file"
msgstr "kan bestand niet sluiten"
# Dank U, Akim :-)
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison genereert parsers voor LALR(1) grammatica's.\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Gebruik: %s [OPTIE]... BESTAND\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -128,7 +128,7 @@ msgstr ""
"optionele argumenten geldt dezelfde regel.\n"
# Misschien beter 'een POSIX-compatibele yacc'?
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -142,7 +142,7 @@ msgstr ""
# Correcte vervoeging van 'voorvoegen'?
# Betere vertaling voor 'directives'?
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -162,7 +162,7 @@ msgstr ""
" -n, --no-parser genereer alleen de tabellen\n"
" -k, --token-table genereer ook een tabel van tokennamen\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -182,7 +182,7 @@ msgstr ""
" -g, --graph genereer ook een VCG beschrijving van de "
"automaat\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -193,29 +193,29 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr ""
"Meld bugs aan <bug-bison@gnu.org>.\n"
"Meld fouten in de vertaling aan <vertaling@nl.linux.org>.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -224,17 +224,17 @@ msgstr ""
"garantie; zelfs niet voor VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD\n"
"DOEL.\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Probeer `%s --help' voor meer informatie.\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: geen grammaticabestand opgegeven\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: extra argumenten na `%s' worden genegeerd\n"
@@ -323,34 +323,64 @@ msgstr " links:"
msgid " on right:"
msgstr " rechts:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "meerdere %s declaraties"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "regel opgegeven voor token (%s)"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "type-conflict (`%s' `%s') bij standaardaktie"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr "lege regel voor niet-eindsymbool met type, en geen actie"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "twee @prec's na elkaar"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "invoergrammatica bevat geen regels"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "teveel symbolen (tokens plus niet-eindsymbolen); het maximum is %d"
@@ -414,22 +444,22 @@ msgstr[1] "%d nutteloze regels"
msgid "Start symbol %s does not derive any sentence"
msgstr "Startsymbool %s wordt vanuit geen enkele zin bereikt"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ van `%s' heeft geen gedeclareerd type"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "ongeldige @-waarde"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d van `%s' heeft geen gedeclareerd type"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s is ongeldig"

102
po/ru.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.32\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-01-25 12:19+0300\n"
"Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n"
"Language-Team: Russian <ru@li.org>\n"
@@ -50,7 +50,7 @@ msgid " Conflict between rule %d and token %s resolved as an error"
msgstr ""
"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
@@ -58,11 +58,11 @@ msgstr[0] "%d
msgstr[1] "%d ËÏÎÆÌÉËÔÁ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
msgstr[2] "%d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "É"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
@@ -70,31 +70,31 @@ msgstr[0] "%d
msgstr[1] "%d ËÏÎÆÌÉËÔÁ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
msgstr[2] "%d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ "
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "ËÏÎÆÌÉËÔÙ: "
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s ÓÏÄÅÒÖÉÔ "
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -111,16 +111,16 @@ msgstr "
msgid "cannot close file"
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison ÇÅÎÅÒÉÒÕÅÔ ÁÎÁÌÉÚÁÔÏÒÙ ÄÌÑ ÇÒÁÍÍÁÔÉË LALR(1).\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþé]... æáêì\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -129,7 +129,7 @@ msgstr ""
"Ñ×ÌÑÅÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍ ÄÌÑ ËÏÒÏÔËÏÊ ÆÏÒÍÙ. ôÏ ÖÅ ËÁÓÁÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ\n"
"ÁÒÇÕÍÅÎÔÏ×.\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -141,7 +141,7 @@ msgstr ""
" -V, --version ×Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
" -y, --yacc ÜÍÕÌÉÒÏ×ÁÔØ POSIX yacc\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -161,7 +161,7 @@ msgstr ""
" -n, --no-parser ÇÅÎÅÒÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÁÂÌÉÃÙ\n"
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -181,7 +181,7 @@ msgstr ""
" -g, --graph ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ Ë Á×ÔÏÍÁÔÕ × ×ÉÄÅ \n"
"VCG-ÇÒÁÆÁ\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -192,27 +192,27 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr "ïÛÉÂËÉ ÓÏÏÂÝÁÊÔÅ ÐÏ ÁÄÒÅÓÕ <bug-bison@gnu.org>.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -223,17 +223,17 @@ msgstr ""
"ðòéçïäîïóôé\n"
"äìñ ïðòåäåìåîîïê ãåìé.\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "éÓÐÏÌØÚÕÊÔÅ `%s --help' ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
@@ -321,35 +321,65 @@ msgstr "
msgid " on right:"
msgstr " ÎÁÐÒÁ×Ï:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr ""
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d"
@@ -415,22 +445,22 @@ msgstr[2] "%d
msgid "Start symbol %s does not derive any sentence"
msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d ÉÚ `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s"

102
po/sv.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.33b\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-03-05 10:18+0100\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.pp.se>\n"
"Language-Team: Swedish <sv@li.org>\n"
@@ -49,49 +49,49 @@ msgid " Conflict between rule %d and token %s resolved as an error"
msgstr ""
"Konflikt i tillstånd %d mellan regel %d och element %s, löstes med %s.\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d skifta/reducerakonflikt"
msgstr[1] "%d skifta/reducerakonflikter"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "och"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d reducera/reducerakonflikt"
msgstr[1] "%d reducera/reducerakonflikter"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "Tillstånd %d innehåller "
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "konflikter: "
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d skifta/reducera"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d reducera/reducera"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s innehåller "
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -107,16 +107,16 @@ msgstr "kan inte
msgid "cannot close file"
msgstr "kan inte stänga fil"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison genererar parsrar för LALR(1)-grammatiker.\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Användning: %s [FLAGGA]... FIL\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -125,7 +125,7 @@ msgstr ""
"obligatoriskt för den motsvarande korta flaggan också. Motsvarande\n"
"för valfria argument.\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -137,7 +137,7 @@ msgstr ""
" -V, --version visa versionsinformation och avsluta\n"
" -y, --yacc emulera POSIX-yacc\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -157,7 +157,7 @@ msgstr ""
" -n, --no-parser generera endast tabellerna\n"
" -k, --token-table inkludera en tabell över elementnamn\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -176,7 +176,7 @@ msgstr ""
" -o, --output=FIL lägg utdata i FIL\n"
" -g, --graph skapa också en VCG-beskrivning av automaten\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -187,29 +187,29 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr ""
"Rapportera fel till <bug-bison@gnu.org>.\n"
"Rapportera synpunkter på översättningen till <sv@li.org>.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -218,17 +218,17 @@ msgstr ""
"finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR ETT\n"
"SPECIELLT ÄNDAMÅL.\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Försök med \"%s --help\" för mer information.\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: ingen grammatikfil angiven\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: extra argument ignorerade efter \"%s\"\n"
@@ -316,34 +316,64 @@ msgstr " till v
msgid " on right:"
msgstr " till höger:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "flera %s-deklarationer"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "regel given för %s, som är ett element"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "typkonflikt (\"%s\" \"%s\") för standardåtgärd"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr "tom regel för typad icketerminal, och ingen åtgärd"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "två @prec i rad"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "inga regler i ingrammatiken"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "för många symboler (element plus icketerminaler); max %d"
@@ -406,22 +436,22 @@ msgstr[1] "%d oanv
msgid "Start symbol %s does not derive any sentence"
msgstr "Startsymbolen %s genererar inga meningar"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ för \"%s\" har ingen deklarerad typ"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "felaktigt @-värde"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d för \"%s\" har ingen deklarerad typ"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s är felaktigt"

102
po/tr.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.34\n"
"POT-Creation-Date: 2002-06-27 14:17+0200\n"
"POT-Creation-Date: 2002-06-27 17:56-0700\n"
"PO-Revision-Date: 2002-03-14 11:03GMT +02:00\n"
"Last-Translator: Altuð Bayram <altugbayram_2000@yahoo.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -53,49 +53,49 @@ msgstr ""
"%d durumu içinde %d kuralý ve %s andaçý arasýndaki çeliþki %s olarak\n"
"çözümlendi.\n"
#: src/conflicts.c:375
#: src/conflicts.c:378
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d öteleme/indirgeme çeliþkisi"
msgstr[1] "%d öteleme/indirgeme çeliþkisi"
#: src/conflicts.c:382
#: src/conflicts.c:385
msgid "and"
msgstr "ve"
#: src/conflicts.c:388
#: src/conflicts.c:391
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d indirgeme/indirgeme çeliþkisi"
msgstr[1] "%d indirgeme/indirgeme çeliþkisi"
#: src/conflicts.c:413
#: src/conflicts.c:416
#, c-format
msgid "State %d contains "
msgstr "%d durumu içerir"
#: src/conflicts.c:460
#: src/conflicts.c:487
msgid "conflicts: "
msgstr "çeliþkiler: "
#: src/conflicts.c:462
#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d öteleme/indirgeme"
#: src/conflicts.c:466
#: src/conflicts.c:493
#, c-format
msgid " %d reduce/reduce"
msgstr " %d indirgeme/indirgeme"
#: src/conflicts.c:471
#: src/conflicts.c:498
#, c-format
msgid "%s contains "
msgstr "%s içerir"
#: src/conflicts.c:478
#: src/conflicts.c:505
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
@@ -111,16 +111,16 @@ msgstr "`%s' dosyas
msgid "cannot close file"
msgstr "dosya kapatýlamýyor"
#: src/getargs.c:99
#: src/getargs.c:100
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison LALR(1) gramerler için ayrýþtýrýcýlar üretir.\n"
#: src/getargs.c:103
#: src/getargs.c:104
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Kullaným: %s [SEÇENEK]... DOSYA\n"
#: src/getargs.c:107
#: src/getargs.c:108
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
@@ -130,7 +130,7 @@ msgstr ""
"seçenek için de geçerlidir. Bu durum, seçimli argümanlar için de "
"geçerlidir.\n"
#: src/getargs.c:113
#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -142,7 +142,7 @@ msgstr ""
" -V, --version sürüm bilgisini ver ve çýk\n"
" -y, --yacc POSIX yacc öykünmesi\n"
#: src/getargs.c:120
#: src/getargs.c:121
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -162,7 +162,7 @@ msgstr ""
" -n, --no-parser sadece tablolarý üret\n"
" -k, --token-table andaç isimlerinin bir tablosunu içer\n"
#: src/getargs.c:132
#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
@@ -181,7 +181,7 @@ msgstr ""
" -o, --output=DOSYA çýktýyý dosyaya býrakýr\n"
" -g, --graph otomatýn bir VCG grafik açýklamasýný da üretir\n"
#: src/getargs.c:143
#: src/getargs.c:144
msgid ""
"THINGS is a list of comma separated words that can include:\n"
" `state' describe the states\n"
@@ -192,29 +192,29 @@ msgid ""
" `none' disable the report\n"
msgstr ""
#: src/getargs.c:154
#: src/getargs.c:155
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr ""
"Hatalarý <bug-bison@gnu.org>'a,\n"
"çeviri hatalarýný <gnu-tr-u12a@lists.sourceforge.net>'e bildir.\n"
#: src/getargs.c:168
#: src/getargs.c:169
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:170
#: src/getargs.c:171
msgid "Written by Robert Corbett and Richard Stallman.\n"
msgstr ""
#: src/getargs.c:174
#: src/getargs.c:175
#, fuzzy, c-format
msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
msgstr ""
"Kopyahakký 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:176
#: src/getargs.c:177
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -223,17 +223,17 @@ msgstr ""
"Hiçbir garantisi yoktur; hatta SATILABÝLÝRLÝÐÝ veya ÞAHSÝ KULLANIMINIZA\n"
"UYGUNLUÐU için bile garanti verilmez.\n"
#: src/getargs.c:333
#: src/getargs.c:334
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Daha fazla bilgi için `%s --help' yazýn.\n"
#: src/getargs.c:340
#: src/getargs.c:341
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: gramer dosyasý verilmemiþ\n"
#: src/getargs.c:344
#: src/getargs.c:345
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: '%s' den sonraki argümanlar yoksayýldý\n"
@@ -321,35 +321,65 @@ msgstr " solda:"
msgid " on right:"
msgstr " saðda:"
#: src/reader.c:52
#: src/reader.c:53
#, c-format
msgid "multiple %s declarations"
msgstr "çoklu %s bildirimleri"
#: src/reader.c:202
#: src/reader.c:139
#, c-format
msgid "result type clash on merge function %s: `%s' vs. `%s'"
msgstr ""
#: src/reader.c:257
#, c-format
msgid "rule given for %s, which is a token"
msgstr "bir andaç olan %s için verilen kural"
#: src/reader.c:227
#: src/reader.c:282
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý"
#: src/reader.c:235
#: src/reader.c:290
msgid "empty rule for typed nonterminal, and no action"
msgstr ""
"Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylem belirtilmemiþ"
#: src/reader.c:306
#: src/reader.c:361
msgid "two @prec's in a row"
msgstr "bir satýrda iki @prec"
#: src/reader.c:447
#: src/reader.c:371
#, c-format
msgid "%%dprec affects only GLR parsers"
msgstr ""
#: src/reader.c:373
#, c-format
msgid "%%dprec must be followed by positive number"
msgstr ""
#: src/reader.c:375
#, c-format
msgid "only one %%dprec allowed per rule"
msgstr ""
#: src/reader.c:386
#, c-format
msgid "%%merge affects only GLR parsers"
msgstr ""
#: src/reader.c:388
#, c-format
msgid "only one %%merge allowed per rule"
msgstr ""
#: src/reader.c:531
msgid "no rules in the input grammar"
msgstr "girdi grameri içinde kurallar yok"
#: src/reader.c:479
#: src/reader.c:563
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d"
@@ -412,22 +442,22 @@ msgstr[1] "%d yarars
msgid "Start symbol %s does not derive any sentence"
msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez"
#: scan-gram.l:556
#: scan-gram.l:559
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "`%s''in $$'ý bildirilmiþ tip deðil"
#: scan-gram.l:573 scan-gram.l:660
#: scan-gram.l:576 scan-gram.l:663
#, fuzzy, c-format
msgid "invalid value: %s%d"
msgstr "geçersiz @ deðeri"
#: scan-gram.l:580
#: scan-gram.l:583
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "`%2$s''in %1$d'i bildirilmiþ tip deðil"
#: scan-gram.l:591 scan-gram.l:608 scan-gram.l:667 scan-gram.l:684
#: scan-gram.l:594 scan-gram.l:611 scan-gram.l:670 scan-gram.l:687
#, c-format
msgid "%s is invalid"
msgstr "%s geçersizdir"

View File

@@ -331,12 +331,15 @@ count_sr_conflicts (state_t *state)
}
/*----------------------------------------------.
| Count the number of reduce/reduce conflicts. |
`----------------------------------------------*/
/*----------------------------------------------------------------.
| Count the number of reduce/reduce conflicts. If ONE_PER_TOKEN, |
| count one conflict for each token that has any reduce/reduce |
| conflicts. Otherwise, count one conflict for each pair of |
| conflicting reductions. |
+`----------------------------------------------------------------*/
static int
count_rr_conflicts (state_t *state)
count_rr_conflicts (state_t *state, int one_per_token)
{
int i;
int rrc_count = 0;
@@ -353,7 +356,7 @@ count_rr_conflicts (state_t *state)
count++;
if (count >= 2)
rrc_count++;
rrc_count += one_per_token ? 1 : count-1;
}
return rrc_count;
@@ -412,13 +415,37 @@ conflicts_output (FILE *out)
{
fprintf (out, _("State %d contains "), i);
fputs (conflict_report (count_sr_conflicts (states[i]),
count_rr_conflicts (states[i])), out);
count_rr_conflicts (states[i], TRUE)), out);
printed_sth = TRUE;
}
if (printed_sth)
fputs ("\n\n", out);
}
/*--------------------------------------------------------.
| Total the number of S/R and R/R conflicts. Unlike the |
| code in conflicts_output, however, count EACH pair of |
| reductions for the same state and lookahead as one |
| conflict. |
`--------------------------------------------------------*/
int
conflicts_total_count (void)
{
int i;
int count;
/* Conflicts by state. */
count = 0;
for (i = 0; i < nstates; i++)
if (conflicts[i])
{
count += count_sr_conflicts (states[i]);
count += count_rr_conflicts (states[i], FALSE);
}
return count;
}
/*------------------------------------------.
| Reporting the total number of conflicts. |
@@ -442,7 +469,7 @@ conflicts_print (void)
if (conflicts[i])
{
src_total += count_sr_conflicts (states[i]);
rrc_total += count_rr_conflicts (states[i]);
rrc_total += count_rr_conflicts (states[i], TRUE);
}
src_ok = src_total == (expected_conflicts == -1 ? 0 : expected_conflicts);

View File

@@ -24,6 +24,7 @@
void conflicts_solve PARAMS ((void));
void conflicts_print PARAMS ((void));
int conflicts_total_count PARAMS ((void));
void conflicts_output PARAMS ((FILE *out));
void conflicts_free PARAMS ((void));

View File

@@ -43,6 +43,7 @@ symbol_number_t *token_translations = NULL;
int max_user_token_number = 256;
int glr_parser = 0;
int pure_parser = 0;
@@ -249,4 +250,5 @@ grammar_free (void)
XFREE (token_translations);
/* Free the symbol table data structure. */
symbols_free ();
free_merger_functions ();
}

View File

@@ -68,6 +68,10 @@
RULES[R].assoc -- the associativity of R.
RULES[R].dprec -- the dynamic precedence level of R (for GLR parsing).
RULES[R].merger -- index of merging function for R (for GLR parsing).
RULES[R].line -- the line where R was defined.
RULES[R].useful -- TRUE iff the rule is used (i.e., FALSE if thrown
@@ -141,6 +145,9 @@ typedef struct rule_s
/* This symbol provides both the associativity, and the precedence. */
symbol_t *prec;
short dprec;
short merger;
/* This symbol was attached to the rule via %prec. */
symbol_t *precsym;
@@ -163,6 +170,12 @@ extern symbol_number_t *token_translations;
extern int max_user_token_number;
/* GLR_PARSER is nonzero if the input file says to use the GLR
(Generalized LR) parser, and to output some additional
information used by the GLR algorithm. */
extern int glr_parser;
/* PURE_PARSER is nonzero if should generate a parser that is all pure
and reentrant. */

View File

@@ -115,14 +115,21 @@ static int nvectors;
static int nentries;
static short **froms = NULL;
static short **tos = NULL;
static unsigned int **conflict_tos = NULL;
static short *tally = NULL;
static short *width = NULL;
static short *actrow = NULL;
static short *conflrow = NULL;
static short *state_count = NULL;
static short *order = NULL;
static short *base = NULL;
static short *pos = NULL;
static unsigned int *conflict_table = NULL;
static unsigned int *conflict_list = NULL;
static int conflict_list_cnt;
static int conflict_list_free;
/* TABLE_SIZE is the allocated size of both TABLE and CHECK.
We start with the original hard-coded value: SHRT_MAX
(yes, not USHRT_MAX). */
@@ -157,6 +164,8 @@ table_grow (size_t desired)
table = XREALLOC (table, short, table_size);
check = XREALLOC (check, short, table_size);
if (glr_parser)
conflict_table = XREALLOC (conflict_table, unsigned int, table_size);
for (/* Nothing. */; old_size < table_size; ++old_size)
{
@@ -278,7 +287,7 @@ prepare_tokens (void)
/*-------------------------------------------------------------.
| Prepare the muscles related to the rules: rhs, prhs, r1, r2, |
| rline. |
| rline, dprec, merger |
`-------------------------------------------------------------*/
static void
@@ -291,6 +300,8 @@ prepare_rules (void)
unsigned int *rline = XMALLOC (unsigned int, nrules + 1);
symbol_number_t *r1 = XMALLOC (symbol_number_t, nrules + 1);
unsigned int *r2 = XMALLOC (unsigned int, nrules + 1);
short *dprec = XMALLOC (short, nrules + 1);
short *merger = XMALLOC (short, nrules + 1);
for (r = 1; r < nrules + 1; ++r)
{
@@ -308,6 +319,10 @@ prepare_rules (void)
rhs[i++] = -1;
/* Line where rule was defined. */
rline[r] = rules[r].location.first_line;
/* Dynamic precedence (GLR) */
dprec[r] = rules[r].dprec;
/* Merger-function index (GLR) */
merger[r] = rules[r].merger;
}
assert (i == nritems);
@@ -316,12 +331,16 @@ prepare_rules (void)
muscle_insert_unsigned_int_table ("rline", rline, 0, 1, nrules + 1);
muscle_insert_symbol_number_table ("r1", r1, 0, 1, nrules + 1);
muscle_insert_unsigned_int_table ("r2", r2, 0, 1, nrules + 1);
muscle_insert_short_table ("dprec", dprec, 0, 1, nrules + 1);
muscle_insert_short_table ("merger", merger, 0, 1, nrules + 1);
free (rhs);
free (prhs);
free (rline);
free (r1);
free (r2);
free (dprec);
free (merger);
}
/*--------------------------------------------.
@@ -341,6 +360,50 @@ prepare_states (void)
}
/*-------------------------------------------------------------------.
| For GLR parsers, for each conflicted token in STATE, as indicated |
| by non-zero entries in conflrow, create a list of possible |
| reductions that are alternatives to the shift or reduction |
| currently recorded for that token in STATE. Store the alternative |
| reductions followed by a 0 in conflict_list, updating |
| conflict_list_cnt, and storing an index to the start of the list |
| back into conflrow. |
`-------------------------------------------------------------------*/
static void
conflict_row (state_t *state)
{
int i, j;
if (! glr_parser)
return;
for (j = 0; j < ntokens; j += 1)
if (conflrow[j])
{
conflrow[j] = conflict_list_cnt;
/* find all reductions for token j, and record all that do
* not match actrow[j] */
for (i = 0; i < state->nlookaheads; i += 1)
if (bitset_test (state->lookaheads[i], j)
&& actrow[j] != -state->lookaheads_rule[i]->number)
{
assert (conflict_list_free > 0);
conflict_list[conflict_list_cnt]
= state->lookaheads_rule[i]->number;
conflict_list_cnt += 1;
conflict_list_free -= 1;
}
/* Leave a 0 at the end */
assert (conflict_list_free > 0);
conflict_list_cnt += 1;
conflict_list_free -= 1;
}
}
/*------------------------------------------------------------------.
| Decide what to do for each type of token if seen as the lookahead |
| token in specified state. The value returned is used as the |
@@ -353,6 +416,11 @@ prepare_states (void)
| This is where conflicts are resolved. The loop over lookahead |
| rules considered lower-numbered rules last, and the last rule |
| considered that likes a token gets to handle it. |
| |
| For GLR parsers, also sets conflrow[SYM] to an index into |
| conflict_list iff there is an unresolved conflict (s/r or r/r) |
| with symbol SYM. The default reduction is not used for a symbol |
| that has any such conflicts. |
`------------------------------------------------------------------*/
static int
@@ -365,9 +433,10 @@ action_row (state_t *state)
errs *errp = state->errs;
/* set nonzero to inhibit having any default reduction */
int nodefault = 0;
int conflicted = 0;
for (i = 0; i < ntokens; i++)
actrow[i] = 0;
actrow[i] = conflrow[i] = 0;
if (redp->nreds >= 1)
{
@@ -381,7 +450,11 @@ action_row (state_t *state)
/* and record this rule as the rule to use if that
token follows. */
if (bitset_test (state->lookaheads[i], j))
actrow[j] = -state->lookaheads_rule[i]->number;
{
if (actrow[j] != 0)
conflicted = conflrow[j] = 1;
actrow[j] = -state->lookaheads_rule[i]->number;
}
}
/* Now see which tokens are allowed for shifts in this state. For
@@ -399,6 +472,8 @@ action_row (state_t *state)
if (ISVAR (symbol))
break;
if (actrow[symbol] != 0)
conflicted = conflrow[symbol] = 1;
actrow[symbol] = shift_state;
/* Do not use any default reduction if there is a shift for
@@ -442,18 +517,20 @@ action_row (state_t *state)
}
}
/* actions which match the default are replaced with zero,
which means "use the default" */
/* GLR parsers need space for conflict lists, so we can't
default conflicted entries. For non-conflicted entries
or as long as we are not building a GLR parser,
actions that match the default are replaced with zero,
which means "use the default". */
if (max > 0)
{
int j;
for (j = 0; j < ntokens; j++)
if (actrow[j] == default_rule)
if (actrow[j] == default_rule && ! (glr_parser && conflrow[j]))
actrow[j] = 0;
default_rule = -default_rule;
}
default_rule = -default_rule;
}
}
@@ -465,6 +542,9 @@ action_row (state_t *state)
if (actrow[i] == SHRT_MIN)
actrow[i] = 0;
if (conflicted)
conflict_row (state);
return default_rule;
}
@@ -477,6 +557,7 @@ save_row (int state)
short *sp;
short *sp1;
short *sp2;
unsigned int *sp3;
count = 0;
for (i = 0; i < ntokens; i++)
@@ -488,12 +569,18 @@ save_row (int state)
froms[state] = sp1 = sp = XCALLOC (short, count);
tos[state] = sp2 = XCALLOC (short, count);
if (glr_parser)
conflict_tos[state] = sp3 = XCALLOC (unsigned int, count);
else
conflict_tos[state] = NULL;
for (i = 0; i < ntokens; i++)
if (actrow[i] != 0)
{
*sp1++ = i;
*sp2++ = actrow[i];
if (glr_parser)
*sp3++ = conflrow[i];
}
tally[state] = count;
@@ -513,9 +600,22 @@ static void
token_actions (void)
{
size_t i;
int nconflict = conflicts_total_count ();
short *yydefact = XCALLOC (short, nstates);
actrow = XCALLOC (short, ntokens);
conflrow = XCALLOC (short, ntokens);
if (glr_parser)
{
conflict_list = XCALLOC (unsigned int, 1 + 2 * nconflict);
conflict_list_free = 2 * nconflict;
conflict_list_cnt = 1;
}
else
conflict_list_free = conflict_list_cnt = 0;
for (i = 0; i < nstates; ++i)
{
yydefact[i] = action_row (states[i]);
@@ -525,6 +625,7 @@ token_actions (void)
muscle_insert_short_table ("defact", yydefact,
yydefact[0], 1, nstates);
XFREE (actrow);
XFREE (conflrow);
XFREE (yydefact);
}
@@ -555,6 +656,28 @@ actions_output (FILE *out)
fputs ("]])\n\n", out);
}
/*--------------------------------------.
| Output the merge functions to OUT. |
`--------------------------------------*/
void
merger_output (FILE *out)
{
int n;
merger_list* p;
fputs ("m4_define([b4_mergers], \n[[", out);
for (n = 1, p = merge_functions; p != NULL; n += 1, p = p->next)
{
if (p->type[0] == '\0')
fprintf (out, " case %d: yyval = %s (*yy0, *yy1); break;\n",
n, p->name);
else
fprintf (out, " case %d: yyval.%s = %s (*yy0, *yy1); break;\n",
n, p->type, p->name);
}
fputs ("]])\n\n", out);
}
/*---------------------------------------.
| Output the tokens definition to OOUT. |
@@ -844,6 +967,7 @@ pack_vector (int vector)
int loc = 0;
short *from = froms[i];
short *to = tos[i];
unsigned int *conflict_to = conflict_tos[i];
assert (t);
@@ -872,6 +996,8 @@ pack_vector (int vector)
{
loc = j + from[k];
table[loc] = to[k];
if (glr_parser && conflict_to != NULL)
conflict_table[loc] = conflict_to[k];
check[loc] = from[k];
}
@@ -900,6 +1026,8 @@ pack_table (void)
base = XCALLOC (short, nvectors);
pos = XCALLOC (short, nentries);
table = XCALLOC (short, table_size);
if (glr_parser)
conflict_table = XCALLOC (unsigned int, table_size);
check = XCALLOC (short, table_size);
lowzero = 0;
@@ -928,14 +1056,16 @@ pack_table (void)
{
XFREE (froms[i]);
XFREE (tos[i]);
XFREE (conflict_tos[i]);
}
XFREE (froms);
XFREE (tos);
XFREE (conflict_tos);
XFREE (pos);
}
/* the following functions output yytable, yycheck
/* the following functions output yytable, yycheck, yyconflp, yyconfl,
and the vectors whose elements index the portion starts */
static void
@@ -961,6 +1091,28 @@ output_table (void)
}
static void
output_conflicts (void)
{
/* GLR parsing slightly modifies yytable and yycheck
(and thus yypact) so that in states with unresolved conflicts,
the default reduction is not used in the conflicted entries, so
that there is a place to put a conflict pointer. This means that
yyconflp and yyconfl are nonsense for a non-GLR parser, so we
avoid accidents by not writing them out in that case. */
if (! glr_parser)
return;
muscle_insert_unsigned_int_table ("conflict_list_heads", conflict_table,
conflict_table[0], 1, high+1);
muscle_insert_unsigned_int_table ("conflicting_rules", conflict_list,
conflict_list[0], 1, conflict_list_cnt);
XFREE (conflict_table);
XFREE (conflict_list);
}
static void
output_check (void)
{
@@ -982,6 +1134,7 @@ output_actions (void)
froms = XCALLOC (short *, nvectors);
tos = XCALLOC (short *, nvectors);
conflict_tos = XCALLOC (unsigned int *, nvectors);
tally = XCALLOC (short, nvectors);
width = XCALLOC (short, nvectors);
@@ -999,6 +1152,7 @@ output_actions (void)
output_base ();
output_table ();
output_conflicts ();
output_check ();
@@ -1084,6 +1238,7 @@ output_skeleton (void)
fputs ("m4_init()\n", out);
actions_output (out);
merger_output (out);
token_definitions_output (out);
symbol_destructors_output (out);
symbol_printers_output (out);
@@ -1140,7 +1295,12 @@ prepare (void)
/* Find the right skeleton file. */
if (!skeleton)
skeleton = "yacc.c";
{
if (glr_parser)
skeleton = "glr.c";
else
skeleton = "yacc.c";
}
/* Parse the skeleton file and output the needed parsers. */
muscle_insert ("skeleton", skeleton);

File diff suppressed because it is too large Load Diff

View File

@@ -23,30 +23,33 @@
PERCENT_EXPECT = 270,
PERCENT_START = 271,
PERCENT_PREC = 272,
PERCENT_VERBOSE = 273,
PERCENT_ERROR_VERBOSE = 274,
PERCENT_OUTPUT = 275,
PERCENT_FILE_PREFIX = 276,
PERCENT_NAME_PREFIX = 277,
PERCENT_DEFINE = 278,
PERCENT_PURE_PARSER = 279,
PERCENT_DEFINES = 280,
PERCENT_YACC = 281,
PERCENT_DEBUG = 282,
PERCENT_LOCATIONS = 283,
PERCENT_NO_LINES = 284,
PERCENT_SKELETON = 285,
PERCENT_TOKEN_TABLE = 286,
TYPE = 287,
EQUAL = 288,
SEMICOLON = 289,
COLON = 290,
PIPE = 291,
ID = 292,
PERCENT_PERCENT = 293,
PROLOGUE = 294,
EPILOGUE = 295,
BRACED_CODE = 296
PERCENT_DPREC = 273,
PERCENT_MERGE = 274,
PERCENT_VERBOSE = 275,
PERCENT_ERROR_VERBOSE = 276,
PERCENT_OUTPUT = 277,
PERCENT_FILE_PREFIX = 278,
PERCENT_NAME_PREFIX = 279,
PERCENT_DEFINE = 280,
PERCENT_PURE_PARSER = 281,
PERCENT_GLR_PARSER = 282,
PERCENT_DEFINES = 283,
PERCENT_YACC = 284,
PERCENT_DEBUG = 285,
PERCENT_LOCATIONS = 286,
PERCENT_NO_LINES = 287,
PERCENT_SKELETON = 288,
PERCENT_TOKEN_TABLE = 289,
TYPE = 290,
EQUAL = 291,
SEMICOLON = 292,
COLON = 293,
PIPE = 294,
ID = 295,
PERCENT_PERCENT = 296,
PROLOGUE = 297,
EPILOGUE = 298,
BRACED_CODE = 299
};
# endif
/* POSIX requires `int' for tokens in interfaces. */
@@ -68,30 +71,33 @@
#define PERCENT_EXPECT 270
#define PERCENT_START 271
#define PERCENT_PREC 272
#define PERCENT_VERBOSE 273
#define PERCENT_ERROR_VERBOSE 274
#define PERCENT_OUTPUT 275
#define PERCENT_FILE_PREFIX 276
#define PERCENT_NAME_PREFIX 277
#define PERCENT_DEFINE 278
#define PERCENT_PURE_PARSER 279
#define PERCENT_DEFINES 280
#define PERCENT_YACC 281
#define PERCENT_DEBUG 282
#define PERCENT_LOCATIONS 283
#define PERCENT_NO_LINES 284
#define PERCENT_SKELETON 285
#define PERCENT_TOKEN_TABLE 286
#define TYPE 287
#define EQUAL 288
#define SEMICOLON 289
#define COLON 290
#define PIPE 291
#define ID 292
#define PERCENT_PERCENT 293
#define PROLOGUE 294
#define EPILOGUE 295
#define BRACED_CODE 296
#define PERCENT_DPREC 273
#define PERCENT_MERGE 274
#define PERCENT_VERBOSE 275
#define PERCENT_ERROR_VERBOSE 276
#define PERCENT_OUTPUT 277
#define PERCENT_FILE_PREFIX 278
#define PERCENT_NAME_PREFIX 279
#define PERCENT_DEFINE 280
#define PERCENT_PURE_PARSER 281
#define PERCENT_GLR_PARSER 282
#define PERCENT_DEFINES 283
#define PERCENT_YACC 284
#define PERCENT_DEBUG 285
#define PERCENT_LOCATIONS 286
#define PERCENT_NO_LINES 287
#define PERCENT_SKELETON 288
#define PERCENT_TOKEN_TABLE 289
#define TYPE 290
#define EQUAL 291
#define SEMICOLON 292
#define COLON 293
#define PIPE 294
#define ID 295
#define PERCENT_PERCENT 296
#define PROLOGUE 297
#define EPILOGUE 298
#define BRACED_CODE 299
@@ -105,8 +111,8 @@ typedef union {
char *string;
associativity assoc;
} yystype;
/* Line 1331 of /usr/local/share/bison/bison.simple. */
#line 110 "y.tab.h"
/* Line 1343 of /home/cs/hilfingr/work/grammars/glr2/install/share/bison/yacc.c. */
#line 116 "y.tab.h"
# define YYSTYPE yystype
#endif

View File

@@ -114,6 +114,8 @@ braced_code_t current_braced_code = action_braced_code;
%token PERCENT_EXPECT "%expect"
%token PERCENT_START "%start"
%token PERCENT_PREC "%prec"
%token PERCENT_DPREC "%dprec"
%token PERCENT_MERGE "%merge"
%token PERCENT_VERBOSE "%verbose"
%token PERCENT_ERROR_VERBOSE "%error-verbose"
@@ -123,6 +125,7 @@ braced_code_t current_braced_code = action_braced_code;
%token PERCENT_DEFINE "%define"
%token PERCENT_PURE_PARSER "%pure-parser"
%token PERCENT_GLR_PARSER "%glr-parser"
%token PERCENT_DEFINES "%defines"
@@ -184,6 +187,7 @@ declaration:
| "%no-lines" { no_lines_flag = 1; }
| "%output" "=" string_content { spec_outfile = $3; }
| "%pure-parser" { pure_parser = 1; }
| "%glr-parser" { glr_parser = 1; }
| "%skeleton" string_content { skeleton = $2; }
| "%token-table" { token_table_flag = 1; }
| "%verbose" { report_flag = 1; }
@@ -355,6 +359,10 @@ rhs:
{ grammar_current_rule_action_append ($2, @2); }
| rhs "%prec" symbol
{ grammar_current_rule_prec_set ($3, @3); }
| rhs "%dprec" INT
{ grammar_current_rule_dprec_set ($3, @3); }
| rhs "%merge" TYPE
{ grammar_current_rule_merge_set ($3, @3); }
;
symbol:

View File

@@ -37,6 +37,7 @@
int lineno;
static symbol_list_t *grammar = NULL;
static int start_flag = 0;
merger_list *merge_functions;
/* Nonzero if %union has been seen. */
int typed = 0;
@@ -105,6 +106,60 @@ epilogue_set (const char *epilogue, location_t location)
/*-------------------------------------------------------------------.
| Return the merger index for a merging function named NAME, whose |
| arguments have type TYPE. Records the function, if new, in |
| merger_list. |
`-------------------------------------------------------------------*/
static int
get_merge_function (const char* name, const char* type)
{
merger_list *syms;
merger_list head;
int n;
if (! glr_parser)
return 0;
if (type == NULL)
type = "";
head.next = merge_functions;
for (syms = &head, n = 1; syms->next != NULL; syms = syms->next, n += 1)
if (strcmp (name, syms->next->name) == 0)
break;
if (syms->next == NULL) {
syms->next = XMALLOC (merger_list, 1);
syms->next->name = strdup (name);
syms->next->type = strdup (type);
syms->next->next = NULL;
merge_functions = head.next;
} else if (strcmp (type, syms->next->type) != 0)
warn (_("result type clash on merge function %s: `%s' vs. `%s'"),
name, type, syms->next->type);
return n;
}
/*--------------------------------------.
| Free all merge-function definitions. |
`--------------------------------------*/
void
free_merger_functions (void)
{
merger_list *L0;
if (! glr_parser)
return;
L0 = merge_functions;
while (L0 != NULL)
{
merger_list *L1 = L0->next;
free (L0);
L0 = L1;
}
}
/*-------------------------------------------------------------------.
| Generate a dummy symbol, a nonterminal, whose name cannot conflict |
| with the user's names. |
@@ -307,6 +362,34 @@ grammar_current_rule_prec_set (symbol_t *precsym, location_t location)
current_rule->ruleprec = precsym;
}
/* Attach dynamic precedence DPREC to the current rule. */
void
grammar_current_rule_dprec_set (int dprec, location_t location)
{
if (! glr_parser)
warn_at (location, _("%%dprec affects only GLR parsers"));
if (dprec <= 0)
complain_at (location, _("%%dprec must be followed by positive number"));
else if (current_rule->dprec != 0)
complain_at (location, _("only one %%dprec allowed per rule"));
current_rule->dprec = dprec;
}
/* Attach a merge function NAME with argument type TYPE to current
rule. */
void
grammar_current_rule_merge_set (const char* name, location_t location)
{
if (! glr_parser)
warn_at (location, _("%%merge affects only GLR parsers"));
if (current_rule->merger != 0)
complain_at (location, _("only one %%merge allowed per rule"));
current_rule->merger =
get_merge_function (name, current_rule->sym->type_name);
}
/* Attach a SYMBOL to the current rule. If needed, move the previous
action as a mid-rule action. */
@@ -319,7 +402,6 @@ grammar_current_rule_symbol_append (symbol_t *symbol, location_t location)
grammar_symbol_append (symbol, location);
}
/* Attach an ACTION to the current rule. If needed, move the previous
action as a mid-rule action. */
@@ -363,6 +445,8 @@ packgram (void)
rules[ruleno].useful = TRUE;
rules[ruleno].action = p->action;
rules[ruleno].action_location = p->action_location;
rules[ruleno].dprec = p->dprec;
rules[ruleno].merger = p->merger;
p = p->next;
while (p && p->sym)

View File

@@ -24,6 +24,14 @@
# include "symlist.h"
# include "parse-gram.h"
typedef struct merger_list
{
struct merger_list* next;
const char* name;
const char* type;
}
merger_list;
typedef struct gram_control_s
{
int errcode;
@@ -70,12 +78,21 @@ void grammar_rule_end PARAMS ((location_t l));
void grammar_midrule_action PARAMS ((void));
void grammar_current_rule_prec_set PARAMS ((symbol_t *precsym,
location_t l));
void grammar_current_rule_dprec_set PARAMS ((int dprec,
location_t l));
void grammer_current_rule_merge_set PARAMS ((const char* name,
location_t l));
void grammar_current_rule_symbol_append PARAMS ((symbol_t *symbol,
location_t l));
void grammar_current_rule_action_append PARAMS ((const char *action,
location_t l));
extern symbol_list_t *current_rule;
void reader PARAMS ((void));
void free_merger_functions PARAMS ((void));
extern merger_list *merge_functions;
extern int typed;
#endif /* !READER_H_ */

File diff suppressed because it is too large Load Diff

View File

@@ -124,12 +124,15 @@ blanks [ \t\f]+
"%define" return PERCENT_DEFINE;
"%defines" return PERCENT_DEFINES;
"%destructor" return PERCENT_DESTRUCTOR;
"%dprec" return PERCENT_DPREC;
"%error"[-_]"verbose" return PERCENT_ERROR_VERBOSE;
"%expect" return PERCENT_EXPECT;
"%file-prefix" return PERCENT_FILE_PREFIX;
"%fixed"[-_]"output"[-_]"files" return PERCENT_YACC;
"%glr"[-_]"parser" return PERCENT_GLR_PARSER;
"%left" return PERCENT_LEFT;
"%locations" return PERCENT_LOCATIONS;
"%merge" return PERCENT_MERGE;
"%name"[-_]"prefix" return PERCENT_NAME_PREFIX;
"%no"[-_]"lines" return PERCENT_NO_LINES;
"%nonassoc" return PERCENT_NONASSOC;

View File

@@ -36,6 +36,8 @@ symbol_list_new (symbol_t *sym, location_t location)
res->location = location;
res->action = NULL;
res->ruleprec = NULL;
res->dprec = 0;
res->merger = 0;
return res;
}

View File

@@ -35,6 +35,8 @@ typedef struct symbol_list_s
location_t action_location;
symbol_t *ruleprec;
int dprec;
int merger;
} symbol_list_t;

View File

@@ -49,7 +49,8 @@ TESTSUITE_AT = \
output.at sets.at reduce.at \
synclines.at headers.at actions.at conflicts.at \
calc.at \
torture.at existing.at regression.at
torture.at existing.at regression.at \
cxx-type.at
TESTSUITE = $(srcdir)/testsuite

View File

@@ -61,3 +61,6 @@ m4_include([existing.at])
# Some old bugs.
m4_include([regression.at])
# GLR tests: C++ types, simplified
m4_include([cxx-type.at])