ChangeLog dated 2002-06-27 from Paul Hilfinger for details.
-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.
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
## 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
* 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
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?
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
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
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
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
@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
@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.
* 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
;
@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
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}.
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}.
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.
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"
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"
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"
"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"
" -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"
" -k, --token-table einer Tabellen der Token-Namen mit "
"einschließen\n"
-#: src/getargs.c:132
+#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
" -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"
" `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"
"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"
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"
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"
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"
"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: "
# ok
# ngp
#
-#: src/conflicts.c:462
+#: src/conflicts.c:489
#, c-format
msgid " %d shift/reduce"
msgstr " %d desplazamiento(s)/reducción(ones)"
#
# 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"
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"
"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"
" -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"
" -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"
" -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"
" `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"
"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"
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"
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"
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"
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"
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"
"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"
" -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"
" -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"
" -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"
" `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"
"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"
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"
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"
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"
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"
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"
"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"
" -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"
" -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"
" -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"
" `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"
"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"
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"
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"
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"
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"
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"
"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"
" -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"
" -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"
" -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"
" `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"
"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"
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"
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"
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"
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"
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"
"è 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"
" -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"
" -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"
" -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"
" `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"
"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"
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"
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"
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"
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"
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"
"¥í¥ó¥°¥ª¥×¥·¥ç¥ó¤Çɬ¿Ü¤Î°ú¿ô¤¬¼¨¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢Æ±¤¸°ÕÌ£¤Î¥·¥ç¡¼¥È¥ª¥×¥·¥ç¥ó\n"
"¤Ç¤âƱÍͤËɬ¿Ü¤Î°ú¿ô¤È¤Ê¤ê¤Þ¤¹¡£É¬¿Ü¤Ç¤Ê¤¤ÁªÂòŪ°ú¿ô¤Ç¤âƱÍͤǤ¹¡£\n"
-#: src/getargs.c:113
+#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
" -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"
" -n, --no-parser ¥Æ¡¼¥Ö¥ë¤Î¤ß¤òÀ¸À®¤¹¤ë\n"
" -k, --token-table ¥È¡¼¥¯¥ó̾¤Î¥Æ¡¼¥Ö¥ë¤ò´Þ¤á¤ë\n"
-#: src/getargs.c:132
+#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
" -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"
" `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"
"¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹ -- Ê£À½¤Ë¤Ä¤¤¤Æ¤Î¾ò·ï¤Ï¥½¡¼¥¹¤ò¸«¤Þ¤·¤ç¤¦¡£\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"
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"
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 ¤ÏÉÔŬÀڤǤ¹"
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"
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"
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"
"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"
# 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"
" -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"
" -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"
" `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"
"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"
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"
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"
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"
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[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"
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"
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"
"Ñ×ÌÑÅÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍ ÄÌÑ ËÏÒÏÔËÏÊ ÆÏÒÍÙ. ôÏ ÖÅ ËÁÓÁÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ\n"
"ÁÒÇÕÍÅÎÔÏ×.\n"
-#: src/getargs.c:113
+#: src/getargs.c:114
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
" -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"
" -n, --no-parser ÇÅÎÅÒÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÁÂÌÉÃÙ\n"
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
-#: src/getargs.c:132
+#: src/getargs.c:133
#, fuzzy
msgid ""
"Output:\n"
" -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"
" `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"
"ðòéçïäîïóôé\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"
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"
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"
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"
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"
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"
"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"
" -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"
" -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"
" -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"
" `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"
"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"
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"
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"
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"
"%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"
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"
"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"
" -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"
" -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"
" -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"
" `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"
"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"
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"
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"
}
-/*----------------------------------------------.
-| 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;
count++;
if (count >= 2)
- rrc_count++;
+ rrc_count += one_per_token ? 1 : count-1;
}
return rrc_count;
{
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. |
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);
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));
int max_user_token_number = 256;
+int glr_parser = 0;
int pure_parser = 0;
XFREE (token_translations);
/* Free the symbol table data structure. */
symbols_free ();
+ free_merger_functions ();
}
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
/* 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;
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. */
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). */
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)
{
/*-------------------------------------------------------------.
| Prepare the muscles related to the rules: rhs, prhs, r1, r2, |
-| rline. |
+| rline, dprec, merger |
`-------------------------------------------------------------*/
static 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)
{
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);
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);
}
/*--------------------------------------------.
}
+/*-------------------------------------------------------------------.
+| 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 |
| 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
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)
{
/* 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
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
}
}
- /* 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;
}
}
if (actrow[i] == SHRT_MIN)
actrow[i] = 0;
+ if (conflicted)
+ conflict_row (state);
+
return default_rule;
}
short *sp;
short *sp1;
short *sp2;
+ unsigned int *sp3;
count = 0;
for (i = 0; i < ntokens; i++)
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;
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]);
muscle_insert_short_table ("defact", yydefact,
yydefact[0], 1, nstates);
XFREE (actrow);
+ XFREE (conflrow);
XFREE (yydefact);
}
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. |
int loc = 0;
short *from = froms[i];
short *to = tos[i];
+ unsigned int *conflict_to = conflict_tos[i];
assert (t);
{
loc = j + from[k];
table[loc] = to[k];
+ if (glr_parser && conflict_to != NULL)
+ conflict_table[loc] = conflict_to[k];
check[loc] = from[k];
}
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;
{
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
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)
{
muscle_insert_short_table ("check", check,
froms = XCALLOC (short *, nvectors);
tos = XCALLOC (short *, nvectors);
+ conflict_tos = XCALLOC (unsigned int *, nvectors);
tally = XCALLOC (short, nvectors);
width = XCALLOC (short, nvectors);
output_base ();
output_table ();
+ output_conflicts ();
output_check ();
fputs ("m4_init()\n", out);
actions_output (out);
+ merger_output (out);
token_definitions_output (out);
symbol_destructors_output (out);
symbol_printers_output (out);
/* 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);
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. */
#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
char *string;
associativity assoc;
} yystype;
-/* Line 232 of /usr/local/share/bison/bison.simple. */
-#line 235 "parse-gram.c"
+/* Line 272 of /home/cs/hilfingr/work/grammars/glr2/install/share/bison/yacc.c. */
+#line 241 "parse-gram.c"
# define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1
#endif
/* Copy the second part of user declarations. */
-/* Line 252 of /usr/local/share/bison/bison.simple. */
-#line 256 "parse-gram.c"
+/* Line 292 of /home/cs/hilfingr/work/grammars/glr2/install/share/bison/yacc.c. */
+#line 262 "parse-gram.c"
#if ! defined (yyoverflow) || YYERROR_VERBOSE
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 3
#define YYFLAG -32768
-#define YYLAST 151
+#define YYLAST 125
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 42
+#define YYNTOKENS 45
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 28
/* YYNRULES -- Number of rules. */
-#define YYNRULES 71
+#define YYNRULES 74
/* YYNRULES -- Number of states. */
-#define YYNSTATES 101
+#define YYNSTATES 106
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 296
+#define YYMAXUTOK 299
#define YYTRANSLATE(X) \
((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK)
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44
};
#if YYDEBUG
static const unsigned char yyprhs[] =
{
0, 0, 3, 8, 9, 13, 15, 17, 19, 23,
- 25, 27, 30, 34, 36, 40, 42, 46, 48, 51,
- 53, 55, 57, 59, 61, 64, 67, 68, 73, 74,
- 79, 80, 84, 85, 89, 93, 97, 99, 101, 103,
- 104, 106, 108, 111, 113, 115, 118, 121, 125, 127,
- 130, 132, 135, 137, 140, 141, 147, 149, 153, 154,
- 157, 160, 164, 166, 168, 170, 172, 174, 176, 177,
- 180, 181
+ 25, 27, 30, 34, 36, 40, 42, 46, 48, 50,
+ 53, 55, 57, 59, 61, 63, 66, 69, 70, 75,
+ 76, 81, 82, 86, 87, 91, 95, 99, 101, 103,
+ 105, 106, 108, 110, 113, 115, 117, 120, 123, 127,
+ 129, 132, 134, 137, 139, 142, 143, 149, 151, 155,
+ 156, 159, 162, 166, 170, 174, 176, 178, 180, 182,
+ 184, 186, 187, 190, 191
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const signed char yyrhs[] =
{
- 43, 0, -1, 44, 38, 58, 68, -1, -1, 44,
- 45, 69, -1, 46, -1, 39, -1, 27, -1, 23,
- 67, 67, -1, 25, -1, 19, -1, 15, 5, -1,
- 21, 33, 67, -1, 28, -1, 22, 33, 67, -1,
- 29, -1, 20, 33, 67, -1, 24, -1, 30, 67,
- -1, 31, -1, 18, -1, 26, -1, 52, -1, 49,
- -1, 16, 64, -1, 11, 41, -1, -1, 9, 47,
- 41, 55, -1, -1, 10, 48, 41, 55, -1, -1,
- 7, 50, 57, -1, -1, 6, 51, 57, -1, 8,
- 32, 55, -1, 53, 54, 55, -1, 12, -1, 13,
- -1, 14, -1, -1, 32, -1, 64, -1, 55, 64,
- -1, 32, -1, 37, -1, 37, 5, -1, 37, 66,
- -1, 37, 5, 66, -1, 56, -1, 57, 56, -1,
- 59, -1, 58, 59, -1, 60, -1, 46, 34, -1,
- -1, 37, 35, 61, 62, 34, -1, 63, -1, 62,
- 36, 63, -1, -1, 63, 64, -1, 63, 65, -1,
- 63, 17, 64, -1, 37, -1, 66, -1, 4, -1,
- 41, -1, 3, -1, 3, -1, -1, 38, 40, -1,
- -1, 34, -1
+ 46, 0, -1, 47, 41, 61, 71, -1, -1, 47,
+ 48, 72, -1, 49, -1, 42, -1, 30, -1, 25,
+ 70, 70, -1, 28, -1, 21, -1, 15, 5, -1,
+ 23, 36, 70, -1, 31, -1, 24, 36, 70, -1,
+ 32, -1, 22, 36, 70, -1, 26, -1, 27, -1,
+ 33, 70, -1, 34, -1, 20, -1, 29, -1, 55,
+ -1, 52, -1, 16, 67, -1, 11, 44, -1, -1,
+ 9, 50, 44, 58, -1, -1, 10, 51, 44, 58,
+ -1, -1, 7, 53, 60, -1, -1, 6, 54, 60,
+ -1, 8, 35, 58, -1, 56, 57, 58, -1, 12,
+ -1, 13, -1, 14, -1, -1, 35, -1, 67, -1,
+ 58, 67, -1, 35, -1, 40, -1, 40, 5, -1,
+ 40, 69, -1, 40, 5, 69, -1, 59, -1, 60,
+ 59, -1, 62, -1, 61, 62, -1, 63, -1, 49,
+ 37, -1, -1, 40, 38, 64, 65, 37, -1, 66,
+ -1, 65, 39, 66, -1, -1, 66, 67, -1, 66,
+ 68, -1, 66, 17, 67, -1, 66, 18, 5, -1,
+ 66, 19, 35, -1, 40, -1, 69, -1, 4, -1,
+ 44, -1, 3, -1, 3, -1, -1, 41, 43, -1,
+ -1, 37, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short yyrline[] =
{
- 0, 155, 155, 168, 170, 173, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 193, 195, 196, 200, 207, 206, 217, 216,
- 229, 228, 234, 234, 239, 248, 263, 265, 266, 269,
- 271, 276, 278, 282, 287, 292, 298, 304, 314, 317,
- 326, 328, 334, 336, 340, 339, 344, 346, 349, 352,
- 354, 356, 360, 362, 363, 366, 372, 381, 389, 394,
- 400, 402
+ 0, 158, 158, 171, 173, 176, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 197, 199, 200, 204, 211, 210, 221,
+ 220, 233, 232, 238, 238, 243, 252, 267, 269, 270,
+ 273, 275, 280, 282, 286, 291, 296, 302, 308, 318,
+ 321, 330, 332, 338, 340, 344, 343, 348, 350, 353,
+ 356, 358, 360, 362, 364, 368, 370, 371, 374, 380,
+ 389, 397, 402, 408, 410
};
#endif
"\"end of string\"", "error", "$undefined.", "STRING", "CHARACTER", "INT",
"\"%token\"", "\"%nterm\"", "\"%type\"", "\"%destructor\"",
"\"%printer\"", "\"%union\"", "\"%left\"", "\"%right\"",
- "\"%nonassoc\"", "\"%expect\"", "\"%start\"", "\"%prec\"",
- "\"%verbose\"", "\"%error-verbose\"", "\"%output\"", "\"%file-prefix\"",
- "\"%name-prefix\"", "\"%define\"", "\"%pure-parser\"", "\"%defines\"",
- "\"%yacc\"", "\"%debug\"", "\"%locations\"", "\"%no-lines\"",
- "\"%skeleton\"", "\"%token-table\"", "TYPE", "\"=\"", "\";\"", "\":\"",
- "\"|\"", "\"identifier\"", "\"%%\"", "PROLOGUE", "EPILOGUE",
- "BRACED_CODE", "$axiom", "input", "declarations", "declaration",
- "grammar_declaration", "@1", "@2", "symbol_declaration", "@3", "@4",
- "precedence_declaration", "precedence_declarator", "type.opt",
- "symbols.1", "symbol_def", "symbol_defs.1", "grammar",
- "rules_or_grammar_declaration", "rules", "@5", "rhses.1", "rhs",
- "symbol", "action", "string_as_id", "string_content", "epilogue.opt",
- "semi_colon.opt", 0
+ "\"%nonassoc\"", "\"%expect\"", "\"%start\"", "\"%prec\"", "\"%dprec\"",
+ "\"%merge\"", "\"%verbose\"", "\"%error-verbose\"", "\"%output\"",
+ "\"%file-prefix\"", "\"%name-prefix\"", "\"%define\"",
+ "\"%pure-parser\"", "\"%glr-parser\"", "\"%defines\"", "\"%yacc\"",
+ "\"%debug\"", "\"%locations\"", "\"%no-lines\"", "\"%skeleton\"",
+ "\"%token-table\"", "TYPE", "\"=\"", "\";\"", "\":\"", "\"|\"",
+ "\"identifier\"", "\"%%\"", "PROLOGUE", "EPILOGUE", "BRACED_CODE",
+ "$axiom", "input", "declarations", "declaration", "grammar_declaration",
+ "@1", "@2", "symbol_declaration", "@3", "@4", "precedence_declaration",
+ "precedence_declarator", "type.opt", "symbols.1", "symbol_def",
+ "symbol_defs.1", "grammar", "rules_or_grammar_declaration", "rules",
+ "@5", "rhses.1", "rhs", "symbol", "action", "string_as_id",
+ "string_content", "epilogue.opt", "semi_colon.opt", 0
};
#endif
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, -1
+ 295, 296, 297, 298, 299, -1
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const unsigned char yyr1[] =
{
- 0, 42, 43, 44, 44, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 46, 46, 46, 46, 47, 46, 48, 46,
- 50, 49, 51, 49, 49, 52, 53, 53, 53, 54,
- 54, 55, 55, 56, 56, 56, 56, 56, 57, 57,
- 58, 58, 59, 59, 61, 60, 62, 62, 63, 63,
- 63, 63, 64, 64, 64, 65, 66, 67, 68, 68,
- 69, 69
+ 0, 45, 46, 47, 47, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 49, 49, 49, 49, 50, 49, 51,
+ 49, 53, 52, 54, 52, 52, 55, 56, 56, 56,
+ 57, 57, 58, 58, 59, 59, 59, 59, 59, 60,
+ 60, 61, 61, 62, 62, 64, 63, 65, 65, 66,
+ 66, 66, 66, 66, 66, 67, 67, 67, 68, 69,
+ 70, 71, 71, 72, 72
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const unsigned char yyr2[] =
{
0, 2, 4, 0, 3, 1, 1, 1, 3, 1,
- 1, 2, 3, 1, 3, 1, 3, 1, 2, 1,
- 1, 1, 1, 1, 2, 2, 0, 4, 0, 4,
- 0, 3, 0, 3, 3, 3, 1, 1, 1, 0,
- 1, 1, 2, 1, 1, 2, 2, 3, 1, 2,
- 1, 2, 1, 2, 0, 5, 1, 3, 0, 2,
- 2, 3, 1, 1, 1, 1, 1, 1, 0, 2,
- 0, 1
+ 1, 2, 3, 1, 3, 1, 3, 1, 1, 2,
+ 1, 1, 1, 1, 1, 2, 2, 0, 4, 0,
+ 4, 0, 3, 0, 3, 3, 3, 1, 1, 1,
+ 0, 1, 1, 2, 1, 1, 2, 2, 3, 1,
+ 2, 1, 2, 1, 2, 0, 5, 1, 3, 0,
+ 2, 2, 3, 3, 3, 1, 1, 1, 1, 1,
+ 1, 0, 2, 0, 1
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
means the default is an error. */
static const short yydefact[] =
{
- 3, 0, 0, 0, 32, 30, 0, 26, 28, 0,
- 36, 37, 38, 0, 0, 20, 10, 0, 0, 0,
- 0, 17, 9, 21, 7, 13, 15, 0, 19, 0,
- 6, 70, 5, 23, 22, 39, 0, 0, 0, 0,
- 0, 25, 11, 66, 64, 62, 24, 63, 0, 0,
- 0, 67, 0, 18, 0, 0, 68, 50, 52, 71,
- 4, 40, 0, 43, 44, 48, 33, 31, 34, 41,
- 0, 0, 16, 12, 14, 8, 54, 53, 0, 51,
- 2, 35, 45, 46, 49, 42, 27, 29, 58, 69,
- 47, 0, 56, 55, 58, 0, 65, 59, 60, 57,
- 61
+ 3, 0, 0, 0, 33, 31, 0, 27, 29, 0,
+ 37, 38, 39, 0, 0, 21, 10, 0, 0, 0,
+ 0, 17, 18, 9, 22, 7, 13, 15, 0, 20,
+ 0, 6, 73, 5, 24, 23, 40, 0, 0, 0,
+ 0, 0, 26, 11, 69, 67, 65, 25, 66, 0,
+ 0, 0, 70, 0, 19, 0, 0, 71, 51, 53,
+ 74, 4, 41, 0, 44, 45, 49, 34, 32, 35,
+ 42, 0, 0, 16, 12, 14, 8, 55, 54, 0,
+ 52, 2, 36, 46, 47, 50, 43, 28, 30, 59,
+ 72, 48, 0, 57, 56, 59, 0, 0, 0, 68,
+ 60, 61, 58, 62, 63, 64
};
/* YYPGOTO[NTERM-NUM]. */
static const short yydefgoto[] =
{
- -1, 1, 2, 31, 55, 39, 40, 33, 37, 36,
- 34, 35, 62, 68, 65, 66, 56, 57, 58, 88,
- 91, 92, 69, 98, 47, 52, 80, 60
+ -1, 1, 2, 32, 56, 40, 41, 34, 38, 37,
+ 35, 36, 63, 69, 66, 67, 57, 58, 59, 89,
+ 92, 93, 70, 101, 48, 53, 81, 61
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const short yypact[] =
{
- -32768, 8, 80,-32768,-32768,-32768, -19,-32768,-32768, -11,
- -32768,-32768,-32768, 31, 0,-32768,-32768, 5, 9, 11,
- 40,-32768,-32768,-32768,-32768,-32768,-32768, 40,-32768, 114,
- -32768, 12,-32768,-32768,-32768, 13, -27, -27, 0, 14,
- 15,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 40, 40,
- 40,-32768, 40,-32768, 16, 18, 10,-32768,-32768,-32768,
- -32768,-32768, 0,-32768, 6,-32768, -27, -27, 0,-32768,
- 0, 0,-32768,-32768,-32768,-32768,-32768,-32768, 17,-32768,
- -32768, 0, 46,-32768,-32768,-32768, 0, 0,-32768,-32768,
- -32768, -22, -2,-32768,-32768, 0,-32768,-32768,-32768, -2,
- -32768
+ -32768, 7, 83,-32768,-32768,-32768, -23,-32768,-32768, 3,
+ -32768,-32768,-32768, 43, 0,-32768,-32768, 13, 14, 15,
+ 51,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 51,-32768,
+ 23,-32768, 19,-32768,-32768,-32768, 22, -29, -29, 0,
+ 17, 18,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 51,
+ 51, 51,-32768, 51,-32768, 20, 27, 12,-32768,-32768,
+ -32768,-32768,-32768, 0,-32768, 5,-32768, -29, -29, 0,
+ -32768, 0, 0,-32768,-32768,-32768,-32768,-32768,-32768, 28,
+ -32768,-32768, 0, 56,-32768,-32768,-32768, 0, 0,-32768,
+ -32768,-32768, 4, -2,-32768,-32768, 0, 55, 35,-32768,
+ -32768,-32768, -2,-32768,-32768,-32768
};
/* YYPGOTO[NTERM-NUM]. */
static const short yypgoto[] =
{
- -32768,-32768,-32768,-32768, 48,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768, -30, -33, 21,-32768, -3,-32768,-32768,
- -32768, -35, -14,-32768, -57, -21,-32768,-32768
+ -32768,-32768,-32768,-32768, 70,-32768,-32768,-32768,-32768,-32768,
+ -32768,-32768,-32768, -58, -22, 37,-32768, 21,-32768,-32768,
+ -32768, -19, -14,-32768, -56, 16,-32768,-32768
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
number is the opposite. If zero, do what YYDEFACT says. */
static const short yytable[] =
{
- 46, 43, 44, 43, 44, 63, 53, 83, 3, 43,
- 64, 82, 93, 38, 94, 95, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 90, 14, 72, 73, 74,
- 41, 75, 81, 84, 84, 45, 42, 45, 48, 96,
- 86, 87, 49, 51, 50, 61, 59, 54, 78, 43,
- 32, 76, 77, 79, 85, 70, 71, 89, 67, 99,
- 0, 0, 0, 0, 0, 0, 0, 85, 0, 0,
- 0, 0, 85, 85, 0, 0, 0, 0, 97, 0,
- 0, 100, 0, 0, 0, 97, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 0, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 0, 0, 0, 0, 0, 0, 29, 30,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 0,
- 14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 54
+ 47, 44, 45, 44, 45, 82, 64, 3, 44, 84,
+ 83, 65, 39, 87, 88, 96, 97, 98, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 91, 14, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 46, 14,
+ 46, 94, 99, 95, 54, 85, 85, 42, 43, 49,
+ 50, 51, 55, 79, 52, 86, 60, 62, 77, 44,
+ 104, 71, 72, 55, 78, 73, 74, 75, 86, 76,
+ 105, 90, 33, 86, 86, 68, 102, 0, 80, 100,
+ 0, 0, 103, 0, 0, 0, 0, 0, 100, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 0, 0, 0, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 0, 0,
+ 0, 0, 0, 0, 30, 31
};
static const short yycheck[] =
{
- 14, 3, 4, 3, 4, 32, 27, 64, 0, 3,
- 37, 5, 34, 32, 36, 17, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 82, 16, 48, 49, 50,
- 41, 52, 62, 66, 67, 37, 5, 37, 33, 41,
- 70, 71, 33, 3, 33, 32, 34, 37, 38, 3,
- 2, 35, 34, 56, 68, 41, 41, 40, 37, 94,
- -1, -1, -1, -1, -1, -1, -1, 81, -1, -1,
- -1, -1, 86, 87, -1, -1, -1, -1, 92, -1,
- -1, 95, -1, -1, -1, 99, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, -1, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, -1, -1, -1, -1, -1, -1, 38, 39,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, -1,
- 16, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 37
+ 14, 3, 4, 3, 4, 63, 35, 0, 3, 65,
+ 5, 40, 35, 71, 72, 17, 18, 19, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 83, 16, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 40, 16,
+ 40, 37, 44, 39, 28, 67, 68, 44, 5, 36,
+ 36, 36, 40, 41, 3, 69, 37, 35, 38, 3,
+ 5, 44, 44, 40, 37, 49, 50, 51, 82, 53,
+ 35, 43, 2, 87, 88, 38, 95, -1, 57, 93,
+ -1, -1, 96, -1, -1, -1, -1, -1, 102, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ -1, -1, -1, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, -1, -1,
+ -1, -1, -1, -1, 41, 42
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const unsigned char yystos[] =
{
- 0, 43, 44, 0, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 38,
- 39, 45, 46, 49, 52, 53, 51, 50, 32, 47,
- 48, 41, 5, 3, 4, 37, 64, 66, 33, 33,
- 33, 3, 67, 67, 37, 46, 58, 59, 60, 34,
- 69, 32, 54, 32, 37, 56, 57, 57, 55, 64,
- 41, 41, 67, 67, 67, 67, 35, 34, 38, 59,
- 68, 55, 5, 66, 56, 64, 55, 55, 61, 40,
- 66, 62, 63, 34, 36, 17, 41, 64, 65, 63,
- 64
+ 0, 46, 47, 0, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 41, 42, 48, 49, 52, 55, 56, 54, 53, 35,
+ 50, 51, 44, 5, 3, 4, 40, 67, 69, 36,
+ 36, 36, 3, 70, 70, 40, 49, 61, 62, 63,
+ 37, 72, 35, 57, 35, 40, 59, 60, 60, 58,
+ 67, 44, 44, 70, 70, 70, 70, 38, 37, 41,
+ 62, 71, 58, 5, 69, 59, 67, 58, 58, 64,
+ 43, 69, 65, 66, 37, 39, 17, 18, 19, 44,
+ 67, 68, 66, 67, 5, 35
};
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
#endif
#if defined (__STDC__) || defined (__cplusplus)
-static void yydestructor (int yytype,
- YYSTYPE yyvalue, YYLTYPE yylocation);
+static void yydestruct (int yytype,
+ YYSTYPE yyvalue, YYLTYPE yylocation);
# if YYDEBUG
static void yysymprint (FILE* out, int yytype,
YYSTYPE yyvalue, YYLTYPE yylocation);
switch (yyn)
{
case 2:
-#line 157 "parse-gram.y"
+#line 160 "parse-gram.y"
{
yycontrol->errcode = 0;
epilogue_set (yyvsp[0].string, yylsp[0]);
break;
case 6:
-#line 175 "parse-gram.y"
+#line 178 "parse-gram.y"
{ prologue_augment (yyvsp[0].string, yylsp[0]); }
break;
case 7:
-#line 176 "parse-gram.y"
+#line 179 "parse-gram.y"
{ debug_flag = 1; }
break;
case 8:
-#line 177 "parse-gram.y"
+#line 180 "parse-gram.y"
{ muscle_insert (yyvsp[-1].string, yyvsp[0].string); }
break;
case 9:
-#line 178 "parse-gram.y"
+#line 181 "parse-gram.y"
{ defines_flag = 1; }
break;
case 10:
-#line 179 "parse-gram.y"
+#line 182 "parse-gram.y"
{ error_verbose = 1; }
break;
case 11:
-#line 180 "parse-gram.y"
+#line 183 "parse-gram.y"
{ expected_conflicts = yyvsp[0].integer; }
break;
case 12:
-#line 181 "parse-gram.y"
+#line 184 "parse-gram.y"
{ spec_file_prefix = yyvsp[0].string; }
break;
case 13:
-#line 182 "parse-gram.y"
+#line 185 "parse-gram.y"
{ locations_flag = 1; }
break;
case 14:
-#line 183 "parse-gram.y"
+#line 186 "parse-gram.y"
{ spec_name_prefix = yyvsp[0].string; }
break;
case 15:
-#line 184 "parse-gram.y"
+#line 187 "parse-gram.y"
{ no_lines_flag = 1; }
break;
case 16:
-#line 185 "parse-gram.y"
+#line 188 "parse-gram.y"
{ spec_outfile = yyvsp[0].string; }
break;
case 17:
-#line 186 "parse-gram.y"
+#line 189 "parse-gram.y"
{ pure_parser = 1; }
break;
case 18:
-#line 187 "parse-gram.y"
- { skeleton = yyvsp[0].string; }
+#line 190 "parse-gram.y"
+ { glr_parser = 1; }
break;
case 19:
-#line 188 "parse-gram.y"
- { token_table_flag = 1; }
+#line 191 "parse-gram.y"
+ { skeleton = yyvsp[0].string; }
break;
case 20:
-#line 189 "parse-gram.y"
- { report_flag = 1; }
+#line 192 "parse-gram.y"
+ { token_table_flag = 1; }
break;
case 21:
-#line 190 "parse-gram.y"
+#line 193 "parse-gram.y"
+ { report_flag = 1; }
+ break;
+
+ case 22:
+#line 194 "parse-gram.y"
{ yacc_flag = 1; }
break;
- case 24:
-#line 197 "parse-gram.y"
+ case 25:
+#line 201 "parse-gram.y"
{
grammar_start_symbol_set (yyvsp[0].symbol, yylsp[0]);
}
break;
- case 25:
-#line 201 "parse-gram.y"
+ case 26:
+#line 205 "parse-gram.y"
{
typed = 1;
MUSCLE_INSERT_INT ("stype_line", yylsp[0].first_line);
}
break;
- case 26:
-#line 207 "parse-gram.y"
+ case 27:
+#line 211 "parse-gram.y"
{ current_braced_code = destructor_braced_code; }
break;
- case 27:
-#line 209 "parse-gram.y"
+ case 28:
+#line 213 "parse-gram.y"
{
symbol_list_t *list;
for (list = yyvsp[0].list; list; list = list->next)
}
break;
- case 28:
-#line 217 "parse-gram.y"
+ case 29:
+#line 221 "parse-gram.y"
{ current_braced_code = printer_braced_code; }
break;
- case 29:
-#line 219 "parse-gram.y"
+ case 30:
+#line 223 "parse-gram.y"
{
symbol_list_t *list;
for (list = yyvsp[0].list; list; list = list->next)
}
break;
- case 30:
-#line 229 "parse-gram.y"
+ case 31:
+#line 233 "parse-gram.y"
{ current_class = nterm_sym; }
break;
- case 31:
-#line 230 "parse-gram.y"
+ case 32:
+#line 234 "parse-gram.y"
{
current_class = unknown_sym;
current_type = NULL;
}
break;
- case 32:
-#line 234 "parse-gram.y"
+ case 33:
+#line 238 "parse-gram.y"
{ current_class = token_sym; }
break;
- case 33:
-#line 235 "parse-gram.y"
+ case 34:
+#line 239 "parse-gram.y"
{
current_class = unknown_sym;
current_type = NULL;
}
break;
- case 34:
-#line 240 "parse-gram.y"
+ case 35:
+#line 244 "parse-gram.y"
{
symbol_list_t *list;
for (list = yyvsp[0].list; list; list = list->next)
}
break;
- case 35:
-#line 250 "parse-gram.y"
+ case 36:
+#line 254 "parse-gram.y"
{
symbol_list_t *list;
++current_prec;
}
break;
- case 36:
-#line 264 "parse-gram.y"
+ case 37:
+#line 268 "parse-gram.y"
{ yyval.assoc = left_assoc; }
break;
- case 37:
-#line 265 "parse-gram.y"
+ case 38:
+#line 269 "parse-gram.y"
{ yyval.assoc = right_assoc; }
break;
- case 38:
-#line 266 "parse-gram.y"
+ case 39:
+#line 270 "parse-gram.y"
{ yyval.assoc = non_assoc; }
break;
- case 39:
-#line 270 "parse-gram.y"
+ case 40:
+#line 274 "parse-gram.y"
{ current_type = NULL;}
break;
- case 40:
-#line 271 "parse-gram.y"
+ case 41:
+#line 275 "parse-gram.y"
{ current_type = yyvsp[0].string; }
break;
- case 41:
-#line 277 "parse-gram.y"
+ case 42:
+#line 281 "parse-gram.y"
{ yyval.list = symbol_list_new (yyvsp[0].symbol, yylsp[0]); }
break;
- case 42:
-#line 278 "parse-gram.y"
+ case 43:
+#line 282 "parse-gram.y"
{ yyval.list = symbol_list_prepend (yyvsp[-1].list, yyvsp[0].symbol, yylsp[0]); }
break;
- case 43:
-#line 284 "parse-gram.y"
+ case 44:
+#line 288 "parse-gram.y"
{
current_type = yyvsp[0].string;
}
break;
- case 44:
-#line 288 "parse-gram.y"
+ case 45:
+#line 292 "parse-gram.y"
{
symbol_class_set (yyvsp[0].symbol, current_class, yylsp[0]);
symbol_type_set (yyvsp[0].symbol, current_type, yylsp[0]);
}
break;
- case 45:
-#line 293 "parse-gram.y"
+ case 46:
+#line 297 "parse-gram.y"
{
symbol_class_set (yyvsp[-1].symbol, current_class, yylsp[-1]);
symbol_type_set (yyvsp[-1].symbol, current_type, yylsp[-1]);
}
break;
- case 46:
-#line 299 "parse-gram.y"
+ case 47:
+#line 303 "parse-gram.y"
{
symbol_class_set (yyvsp[-1].symbol, current_class, yylsp[-1]);
symbol_type_set (yyvsp[-1].symbol, current_type, yylsp[-1]);
}
break;
- case 47:
-#line 305 "parse-gram.y"
+ case 48:
+#line 309 "parse-gram.y"
{
symbol_class_set (yyvsp[-2].symbol, current_class, yylsp[-2]);
symbol_type_set (yyvsp[-2].symbol, current_type, yylsp[-2]);
}
break;
- case 48:
-#line 316 "parse-gram.y"
- {;}
- break;
-
case 49:
-#line 318 "parse-gram.y"
+#line 320 "parse-gram.y"
{;}
break;
- case 54:
-#line 340 "parse-gram.y"
- { current_lhs = yyvsp[-1].symbol; current_lhs_location = yylsp[-1]; }
+ case 50:
+#line 322 "parse-gram.y"
+ {;}
break;
case 55:
-#line 341 "parse-gram.y"
- {;}
+#line 344 "parse-gram.y"
+ { current_lhs = yyvsp[-1].symbol; current_lhs_location = yylsp[-1]; }
break;
case 56:
#line 345 "parse-gram.y"
- { grammar_rule_end (yylsp[0]); }
+ {;}
break;
case 57:
-#line 346 "parse-gram.y"
+#line 349 "parse-gram.y"
{ grammar_rule_end (yylsp[0]); }
break;
case 58:
-#line 351 "parse-gram.y"
- { grammar_rule_begin (current_lhs, current_lhs_location); }
+#line 350 "parse-gram.y"
+ { grammar_rule_end (yylsp[0]); }
break;
case 59:
-#line 353 "parse-gram.y"
- { grammar_current_rule_symbol_append (yyvsp[0].symbol, yylsp[0]); }
+#line 355 "parse-gram.y"
+ { grammar_rule_begin (current_lhs, current_lhs_location); }
break;
case 60:
-#line 355 "parse-gram.y"
- { grammar_current_rule_action_append (yyvsp[0].string, yylsp[0]); }
+#line 357 "parse-gram.y"
+ { grammar_current_rule_symbol_append (yyvsp[0].symbol, yylsp[0]); }
break;
case 61:
-#line 357 "parse-gram.y"
- { grammar_current_rule_prec_set (yyvsp[0].symbol, yylsp[0]); }
+#line 359 "parse-gram.y"
+ { grammar_current_rule_action_append (yyvsp[0].string, yylsp[0]); }
break;
case 62:
#line 361 "parse-gram.y"
- { yyval.symbol = yyvsp[0].symbol; }
+ { grammar_current_rule_prec_set (yyvsp[0].symbol, yylsp[0]); }
break;
case 63:
-#line 362 "parse-gram.y"
- { yyval.symbol = yyvsp[0].symbol; }
+#line 363 "parse-gram.y"
+ { grammar_current_rule_dprec_set (yyvsp[0].integer, yylsp[0]); }
break;
case 64:
-#line 363 "parse-gram.y"
- { yyval.symbol = getsym (yyvsp[0].string, yylsp[0]); }
+#line 365 "parse-gram.y"
+ { grammar_current_rule_merge_set (yyvsp[0].string, yylsp[0]); }
break;
case 65:
-#line 368 "parse-gram.y"
- { yyval.string = yyvsp[0].string; }
+#line 369 "parse-gram.y"
+ { yyval.symbol = yyvsp[0].symbol; }
break;
case 66:
-#line 374 "parse-gram.y"
+#line 370 "parse-gram.y"
+ { yyval.symbol = yyvsp[0].symbol; }
+ break;
+
+ case 67:
+#line 371 "parse-gram.y"
+ { yyval.symbol = getsym (yyvsp[0].string, yylsp[0]); }
+ break;
+
+ case 68:
+#line 376 "parse-gram.y"
+ { yyval.string = yyvsp[0].string; }
+ break;
+
+ case 69:
+#line 382 "parse-gram.y"
{
yyval.symbol = getsym (yyvsp[0].string, yylsp[0]);
symbol_class_set (yyval.symbol, token_sym, yylsp[0]);
}
break;
- case 67:
-#line 383 "parse-gram.y"
+ case 70:
+#line 391 "parse-gram.y"
{
yyval.string = yyvsp[0].string + 1;
yyval.string[strlen (yyval.string) - 1] = '\0';
}
break;
- case 68:
-#line 391 "parse-gram.y"
+ case 71:
+#line 399 "parse-gram.y"
{
yyval.string = xstrdup ("");
}
break;
- case 69:
-#line 395 "parse-gram.y"
+ case 72:
+#line 403 "parse-gram.y"
{
yyval.string = yyvsp[0].string;
}
}
-/* Line 1000 of /usr/local/share/bison/bison.simple. */
-#line 1509 "parse-gram.c"
+/* Line 1040 of /home/cs/hilfingr/work/grammars/glr2/install/share/bison/yacc.c. */
+#line 1525 "parse-gram.c"
\f
yyvsp -= yylen;
yyssp -= yylen;
yystos[*yyssp],
*yyvsp, *yylsp));
YYDPRINTF ((stderr, "\n"));
- yydestructor (yystos[*yyssp], *yyvsp, *yylsp);
+ yydestruct (yystos[*yyssp], *yyvsp, *yylsp);
YYPOPSTACK;
}
YYABORT;
YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
yychar, yytname[yychar1]));
- yydestructor (yychar1, yylval, yylloc);
+ yydestruct (yychar1, yylval, yylloc);
yychar = YYEMPTY;
}
yystos[*yyssp], *yyvsp, *yylsp));
YYDPRINTF ((stderr, "\n"));
- yydestructor (yystos[yystate], *yyvsp, *yylsp);
+ yydestruct (yystos[yystate], *yyvsp, *yylsp);
yyvsp--;
yystate = *--yyssp;
yylsp--;
`-----------------------------------------------*/
static void
-yydestructor (int yytype,
- YYSTYPE yyvalue, YYLTYPE yylocation)
+yydestruct (int yytype,
+ YYSTYPE yyvalue, YYLTYPE yylocation)
{
switch (yytype)
{
YYSTYPE yyvalue, YYLTYPE yylocation)
{
if (yytype < YYNTOKENS)
- YYFPRINTF (yyout, "token %s (", yytname[yytype]);
+ {
+ YYFPRINTF (yyout, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+ YYPRINT (yyout, yytoknum[yytype], yyvalue);
+# endif
+ }
else
YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
-# ifdef YYPRINT
- YYPRINT (yyout, yytype, yyvalue);
-# else
+
switch (yytype)
{
default:
break;
}
-# endif /* !defined YYPRINT. */
YYFPRINTF (yyout, ")");
}
#endif /* YYDEBUG. */
-#line 404 "parse-gram.y"
+#line 412 "parse-gram.y"
/*------------------------------------------------------------------.
| When debugging the parser, display tokens' locations and values. |
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. */
#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
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
%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"
%token PERCENT_DEFINE "%define"
%token PERCENT_PURE_PARSER "%pure-parser"
+%token PERCENT_GLR_PARSER "%glr-parser"
%token PERCENT_DEFINES "%defines"
| "%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; }
{ 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:
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;
\f
+ /*-------------------------------------------------------------------.
+| 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. |
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. */
grammar_symbol_append (symbol, location);
}
-
/* Attach an ACTION to the current rule. If needed, move the previous
action as a mid-rule action. */
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)
# 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;
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_ */
#define yyrestart gram_restart
#define yytext gram_text
-#line 19 "lex.yy.c"
+#line 19 "scan-gram.c"
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
#define YY_FLEX_MINOR_VERSION 5
#include <stdio.h>
-#include <errno.h>
+
/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
#ifdef c_plusplus
#ifdef __cplusplus
#include <stdlib.h>
-#ifndef _WIN32
#include <unistd.h>
-#endif
/* Use prototypes in function declarations. */
#define YY_USE_PROTOS
*yy_cp = '\0'; \
yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 98
-#define YY_END_OF_BUFFER 99
-static yyconst short int yy_accept[361] =
+#define YY_NUM_RULES 101
+#define YY_END_OF_BUFFER 102
+static yyconst short int yy_accept[380] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 99, 46,
- 35, 34, 34, 39, 46, 38, 36, 46, 37, 31,
- 33, 46, 30, 43, 32, 50, 51, 51, 52, 47,
- 48, 77, 80, 80, 76, 47, 79, 48, 72, 75,
- 75, 71, 74, 54, 55, 55, 53, 70, 57, 58,
- 58, 56, 90, 91, 91, 82, 92, 81, 85, 92,
- 47, 48, 87, 86, 94, 96, 96, 82, 95, 81,
- 85, 97, 97, 97, 82, 81, 85, 35, 34, 34,
- 34, 34, 45, 0, 0, 0, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 0, 0, 0, 42, 36, 40,
- 41, 37, 0, 50, 51, 51, 51, 51, 49, 77,
- 80, 80, 80, 80, 78, 72, 75, 75, 75, 75,
- 73, 54, 55, 55, 55, 55, 69, 68, 69, 61,
- 62, 63, 64, 65, 66, 67, 69, 58, 58, 58,
- 58, 90, 91, 91, 91, 91, 88, 0, 88, 0,
- 83, 84, 89, 0, 89, 94, 96, 96, 96, 96,
- 93, 97, 97, 97, 97, 97, 83, 84, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 102, 49,
+ 38, 37, 37, 42, 49, 41, 39, 49, 40, 34,
+ 36, 49, 33, 46, 35, 53, 54, 54, 55, 50,
+ 51, 80, 83, 83, 79, 50, 82, 51, 75, 78,
+ 78, 74, 77, 57, 58, 58, 56, 73, 60, 61,
+ 61, 59, 93, 94, 94, 85, 95, 84, 88, 95,
+ 50, 51, 90, 89, 97, 99, 99, 85, 98, 84,
+ 88, 100, 100, 100, 85, 84, 88, 38, 37, 37,
+ 37, 37, 48, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,
+ 39, 43, 44, 40, 0, 53, 54, 54, 54, 54,
+ 52, 80, 83, 83, 83, 83, 81, 75, 78, 78,
+ 78, 78, 76, 57, 58, 58, 58, 58, 72, 71,
+ 72, 64, 65, 66, 67, 68, 69, 70, 72, 61,
+ 61, 61, 61, 93, 94, 94, 94, 94, 91, 0,
+ 91, 0, 86, 87, 92, 0, 92, 97, 99, 99,
+ 99, 99, 96, 100, 100, 100, 100, 100, 86, 87,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 41, 44, 0, 0, 0, 84, 84, 84, 0, 0,
+ 0, 0, 0, 0, 0, 44, 47, 0, 0, 0,
+ 87, 87, 87, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 59, 60, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 10, 0, 0, 0,
- 0, 0, 0, 17, 0, 0, 0, 0, 0, 23,
- 0, 26, 0, 0, 29, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 15, 0, 0,
- 0, 20, 0, 22, 24, 27, 0, 1, 3, 0,
- 0, 7, 0, 0, 0, 0, 0, 0, 16, 0,
-
- 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 18, 0, 0, 0, 28, 0, 0,
- 0, 0, 0, 0, 13, 14, 0, 21, 0, 0,
- 0, 0, 0, 11, 0, 0, 0, 5, 0, 0,
- 0, 0, 0, 0, 0, 8, 0, 12, 19, 25,
- 0, 0, 6, 0, 0, 0, 0, 0, 9, 0
+ 0, 0, 0, 62, 63, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 12, 0, 0, 0,
+ 0, 0, 0, 0, 20, 0, 0, 0, 0, 0,
+ 26, 0, 29, 0, 0, 32, 0, 2, 0, 0,
+ 6, 0, 0, 0, 0, 0, 0, 14, 0, 0,
+ 0, 18, 0, 0, 0, 23, 0, 25, 27, 30,
+
+ 0, 1, 3, 0, 0, 8, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 0, 16, 17, 0, 24, 0, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 5, 0, 0, 0, 11,
+ 0, 0, 0, 0, 9, 0, 15, 22, 28, 0,
+ 0, 7, 0, 0, 0, 0, 0, 10, 0
} ;
static yyconst int yy_ec[256] =
9, 9, 9, 9, 9, 9, 9, 5, 1, 5
} ;
-static yyconst short int yy_base[387] =
+static yyconst short int yy_base[406] =
{ 0,
0, 0, 48, 51, 58, 61, 83, 86, 73, 94,
- 108, 110, 131, 179, 227, 249, 116, 142, 819, 820,
- 816, 55, 64, 820, 267, 820, 0, 44, 79, 820,
- 820, 0, 820, 820, 820, 0, 97, 99, 805, 820,
- 820, 0, 119, 122, 820, 820, 0, 820, 0, 126,
- 138, 820, 0, 0, 145, 153, 820, 311, 820, 155,
- 157, 820, 0, 159, 164, 820, 159, 820, 62, 164,
- 820, 820, 820, 820, 0, 185, 189, 820, 766, 820,
- 185, 192, 201, 203, 205, 207, 209, 813, 211, 213,
- 216, 219, 820, 780, 783, 86, 778, 49, 198, 767,
-
- 184, 776, 109, 203, 771, 778, 781, 820, 0, 820,
- 0, 230, 787, 0, 242, 244, 255, 259, 820, 0,
- 261, 263, 265, 272, 820, 0, 274, 276, 278, 280,
- 820, 0, 282, 284, 286, 288, 820, 820, 792, 820,
- 820, 820, 820, 820, 820, 820, 0, 296, 298, 314,
- 316, 0, 318, 322, 324, 326, 820, 318, 322, 0,
- 820, 0, 820, 326, 330, 0, 342, 344, 347, 355,
- 820, 357, 359, 361, 363, 365, 367, 369, 766, 144,
- 762, 762, 144, 770, 772, 762, 364, 768, 754, 168,
- 755, 763, 764, 767, 751, 756, 750, 755, 747, 759,
-
- 0, 820, 773, 0, 766, 0, 372, 375, 758, 739,
- 748, 738, 741, 749, 748, 747, 733, 749, 744, 737,
- 746, 730, 730, 741, 730, 737, 733, 729, 723, 726,
- 732, 731, 721, 732, 730, 820, 820, 371, 716, 724,
- 717, 713, 712, 724, 741, 721, 820, 706, 230, 714,
- 705, 709, 701, 820, 701, 370, 700, 712, 698, 820,
- 702, 820, 701, 699, 820, 690, 820, 706, 691, 373,
- 691, 693, 376, 698, 691, 692, 687, 820, 685, 697,
- 686, 820, 682, 820, 378, 820, 682, 820, 681, 668,
- 647, 820, 627, 626, 612, 607, 615, 605, 820, 601,
-
- 615, 601, 594, 604, 820, 588, 599, 598, 583, 588,
- 571, 558, 571, 820, 537, 536, 547, 820, 510, 507,
- 516, 501, 497, 503, 820, 820, 491, 820, 502, 363,
- 373, 358, 347, 820, 348, 325, 317, 820, 302, 287,
- 279, 267, 263, 265, 251, 820, 229, 820, 820, 820,
- 240, 380, 820, 229, 192, 164, 85, 62, 820, 820,
- 405, 419, 433, 447, 461, 475, 489, 503, 227, 517,
- 531, 545, 557, 571, 583, 597, 610, 624, 638, 652,
- 666, 84, 680, 694, 708, 58
+ 108, 110, 131, 179, 227, 249, 116, 142, 839, 840,
+ 836, 55, 64, 840, 267, 840, 0, 44, 79, 840,
+ 840, 0, 840, 840, 840, 0, 97, 99, 825, 840,
+ 840, 0, 119, 122, 840, 840, 0, 840, 0, 126,
+ 138, 840, 0, 0, 145, 153, 840, 311, 840, 155,
+ 157, 840, 0, 159, 164, 840, 159, 840, 62, 164,
+ 840, 840, 840, 840, 0, 185, 189, 840, 786, 840,
+ 185, 192, 201, 203, 205, 207, 209, 833, 211, 213,
+ 216, 219, 840, 800, 39, 86, 799, 796, 65, 801,
+
+ 198, 786, 184, 795, 109, 203, 790, 797, 800, 840,
+ 0, 840, 0, 230, 806, 0, 242, 244, 255, 259,
+ 840, 0, 261, 263, 265, 272, 840, 0, 274, 276,
+ 278, 280, 840, 0, 282, 284, 286, 288, 840, 840,
+ 811, 840, 840, 840, 840, 840, 840, 840, 0, 297,
+ 314, 316, 318, 0, 322, 324, 326, 328, 840, 322,
+ 326, 0, 840, 0, 840, 330, 332, 0, 344, 347,
+ 355, 357, 840, 359, 361, 363, 365, 367, 369, 371,
+ 785, 144, 781, 780, 780, 144, 778, 787, 789, 775,
+ 778, 366, 784, 770, 168, 771, 779, 780, 783, 767,
+
+ 772, 766, 771, 763, 775, 0, 840, 789, 0, 782,
+ 0, 374, 377, 774, 755, 764, 754, 766, 756, 764,
+ 763, 762, 230, 748, 764, 757, 758, 751, 760, 744,
+ 744, 755, 744, 751, 747, 743, 737, 740, 746, 745,
+ 735, 746, 744, 840, 840, 373, 730, 738, 731, 727,
+ 739, 725, 737, 754, 734, 722, 840, 718, 730, 372,
+ 725, 716, 720, 712, 840, 712, 375, 711, 723, 709,
+ 840, 713, 840, 712, 710, 840, 701, 840, 717, 702,
+ 840, 378, 702, 704, 380, 717, 708, 840, 701, 702,
+ 697, 840, 695, 707, 696, 840, 692, 840, 382, 840,
+
+ 692, 840, 691, 704, 686, 840, 689, 690, 687, 688,
+ 659, 666, 633, 840, 628, 629, 613, 606, 618, 840,
+ 603, 615, 614, 597, 596, 597, 603, 590, 603, 840,
+ 589, 567, 578, 840, 564, 541, 547, 534, 523, 510,
+ 520, 840, 840, 506, 840, 516, 497, 510, 499, 368,
+ 365, 840, 368, 359, 348, 840, 316, 307, 297, 840,
+ 287, 282, 283, 260, 840, 252, 840, 840, 840, 263,
+ 384, 840, 241, 236, 224, 196, 158, 840, 840, 409,
+ 423, 437, 451, 465, 479, 493, 507, 227, 521, 535,
+ 549, 561, 575, 587, 601, 614, 628, 642, 656, 670,
+
+ 104, 684, 698, 712, 77
} ;
-static yyconst short int yy_def[387] =
+static yyconst short int yy_def[406] =
{ 0,
- 360, 1, 361, 361, 362, 362, 363, 363, 364, 364,
- 365, 365, 366, 366, 367, 367, 368, 368, 360, 360,
- 360, 360, 360, 360, 360, 360, 369, 360, 360, 360,
- 360, 370, 360, 360, 360, 371, 360, 360, 360, 360,
- 360, 372, 360, 360, 360, 360, 373, 360, 374, 360,
- 360, 360, 375, 376, 360, 360, 360, 377, 360, 360,
- 360, 360, 378, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 379, 360, 360, 360, 360, 360,
- 360, 380, 380, 380, 380, 380, 380, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-
- 360, 360, 360, 360, 360, 360, 360, 360, 369, 360,
- 381, 360, 370, 371, 360, 360, 360, 360, 360, 372,
- 360, 360, 360, 360, 360, 374, 360, 360, 360, 360,
- 360, 376, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 382, 360, 360, 360,
- 360, 378, 360, 360, 360, 360, 360, 360, 360, 383,
- 360, 384, 360, 360, 360, 379, 360, 360, 360, 360,
- 360, 380, 380, 380, 380, 380, 380, 385, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-
- 381, 360, 360, 386, 383, 384, 385, 385, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 0,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360
+ 379, 1, 380, 380, 381, 381, 382, 382, 383, 383,
+ 384, 384, 385, 385, 386, 386, 387, 387, 379, 379,
+ 379, 379, 379, 379, 379, 379, 388, 379, 379, 379,
+ 379, 389, 379, 379, 379, 390, 379, 379, 379, 379,
+ 379, 391, 379, 379, 379, 379, 392, 379, 393, 379,
+ 379, 379, 394, 395, 379, 379, 379, 396, 379, 379,
+ 379, 379, 397, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 398, 379, 379, 379, 379, 379,
+ 379, 399, 399, 399, 399, 399, 399, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 388, 379, 400, 379, 389, 390, 379, 379, 379, 379,
+ 379, 391, 379, 379, 379, 379, 379, 393, 379, 379,
+ 379, 379, 379, 395, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 401, 379,
+ 379, 379, 379, 397, 379, 379, 379, 379, 379, 379,
+ 379, 402, 379, 403, 379, 379, 379, 398, 379, 379,
+ 379, 379, 379, 399, 399, 399, 399, 399, 399, 404,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+
+ 379, 379, 379, 379, 379, 400, 379, 379, 405, 402,
+ 403, 404, 404, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 0, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+
+ 379, 379, 379, 379, 379
} ;
-static yyconst short int yy_nxt[871] =
+static yyconst short int yy_nxt[891] =
{ 0,
20, 21, 22, 23, 24, 20, 25, 26, 20, 20,
27, 28, 29, 29, 30, 31, 32, 33, 20, 20,
27, 20, 20, 20, 20, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 34, 35, 20,
- 37, 38, 110, 37, 38, 111, 39, 89, 90, 39,
- 43, 44, 45, 43, 44, 45, 91, 92, 237, 40,
- 161, 41, 40, 162, 41, 55, 56, 57, 184, 46,
- 47, 48, 46, 47, 48, 50, 51, 185, 50, 51,
- 52, 112, 112, 52, 204, 58, 55, 56, 57, 115,
-
- 116, 117, 118, 359, 46, 53, 48, 46, 53, 48,
- 60, 61, 60, 61, 358, 62, 58, 62, 83, 84,
- 85, 121, 122, 86, 123, 124, 181, 87, 127, 128,
- 58, 182, 58, 64, 65, 66, 67, 46, 68, 48,
- 129, 130, 69, 193, 83, 84, 85, 133, 134, 86,
- 70, 194, 71, 87, 72, 135, 136, 148, 149, 150,
- 151, 153, 154, 46, 157, 48, 155, 156, 158, 163,
- 210, 159, 159, 164, 211, 160, 165, 165, 73, 215,
- 74, 64, 65, 66, 67, 212, 68, 167, 168, 216,
- 69, 169, 170, 161, 173, 174, 162, 224, 70, 357,
-
- 71, 225, 72, 173, 175, 176, 174, 173, 174, 173,
- 174, 173, 174, 89, 90, 91, 92, 177, 89, 90,
- 178, 91, 92, 186, 190, 356, 73, 191, 74, 76,
- 77, 78, 195, 79, 80, 109, 187, 109, 81, 275,
- 188, 196, 112, 112, 115, 116, 117, 118, 46, 197,
- 48, 76, 77, 78, 275, 79, 80, 115, 116, 355,
- 81, 117, 118, 121, 122, 123, 124, 121, 122, 353,
- 46, 352, 48, 93, 123, 124, 127, 128, 129, 130,
- 127, 128, 129, 130, 133, 134, 135, 136, 133, 134,
- 135, 136, 351, 94, 350, 95, 96, 97, 148, 149,
-
- 150, 151, 98, 349, 99, 100, 101, 102, 103, 104,
- 105, 106, 348, 107, 108, 138, 148, 149, 150, 151,
- 153, 154, 347, 139, 155, 156, 153, 154, 155, 156,
- 159, 159, 346, 138, 159, 159, 140, 141, 165, 165,
- 345, 142, 165, 165, 167, 168, 169, 170, 143, 167,
- 168, 144, 344, 145, 343, 146, 147, 169, 170, 173,
- 174, 173, 175, 176, 174, 176, 174, 173, 175, 173,
- 174, 173, 208, 220, 173, 208, 157, 176, 208, 281,
- 158, 342, 291, 159, 159, 294, 341, 303, 220, 354,
- 206, 340, 206, 206, 281, 206, 206, 291, 206, 339,
-
- 294, 221, 303, 338, 354, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 36, 36, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 59, 59, 59, 59, 59, 59, 59, 59, 59,
- 59, 59, 59, 59, 59, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, 63, 75,
- 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
-
- 75, 75, 75, 82, 82, 82, 82, 82, 82, 82,
- 82, 82, 82, 82, 82, 82, 82, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113, 337, 113,
- 113, 114, 336, 335, 114, 114, 114, 114, 334, 114,
- 114, 114, 114, 333, 114, 120, 332, 331, 330, 120,
- 120, 120, 120, 120, 120, 120, 120, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 126, 329, 328, 126, 126, 126, 327, 126, 126,
- 126, 126, 126, 131, 131, 131, 131, 131, 131, 131,
- 131, 131, 131, 131, 131, 131, 131, 132, 326, 325,
-
- 324, 132, 132, 132, 132, 132, 132, 132, 132, 132,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 152, 323, 322, 321, 320, 152,
- 319, 152, 152, 318, 152, 152, 317, 152, 166, 316,
- 315, 314, 166, 313, 312, 166, 166, 311, 166, 166,
- 310, 166, 172, 172, 172, 172, 172, 172, 172, 172,
- 172, 172, 172, 172, 309, 172, 201, 308, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
- 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
- 205, 307, 205, 205, 206, 306, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206, 207, 207,
- 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
- 207, 207, 305, 304, 302, 301, 300, 299, 298, 297,
- 296, 295, 293, 292, 290, 289, 288, 287, 286, 285,
- 284, 283, 282, 280, 279, 278, 277, 276, 274, 273,
- 272, 271, 270, 269, 268, 267, 266, 265, 264, 263,
- 262, 261, 260, 259, 258, 257, 256, 255, 254, 253,
- 252, 251, 250, 249, 248, 247, 246, 245, 244, 243,
- 242, 241, 240, 239, 238, 236, 235, 234, 233, 232,
- 231, 230, 229, 228, 227, 226, 223, 222, 219, 218,
-
- 217, 214, 213, 209, 203, 202, 200, 199, 198, 192,
- 189, 183, 180, 179, 88, 171, 119, 88, 360, 19,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360
+ 37, 38, 112, 37, 38, 113, 39, 89, 90, 39,
+ 43, 44, 45, 43, 44, 45, 91, 92, 182, 40,
+ 163, 41, 40, 164, 41, 55, 56, 57, 183, 46,
+ 47, 48, 46, 47, 48, 50, 51, 245, 50, 51,
+ 52, 114, 114, 52, 188, 58, 55, 56, 57, 117,
+
+ 118, 119, 120, 189, 46, 53, 48, 46, 53, 48,
+ 60, 61, 60, 61, 209, 62, 58, 62, 83, 84,
+ 85, 123, 124, 86, 125, 126, 184, 87, 129, 130,
+ 58, 185, 58, 64, 65, 66, 67, 46, 68, 48,
+ 131, 132, 69, 198, 83, 84, 85, 135, 136, 86,
+ 70, 199, 71, 87, 72, 137, 138, 150, 151, 152,
+ 153, 155, 156, 46, 159, 48, 157, 158, 160, 165,
+ 215, 161, 161, 166, 216, 162, 167, 167, 73, 221,
+ 74, 64, 65, 66, 67, 217, 68, 169, 170, 222,
+ 69, 171, 172, 163, 175, 176, 164, 232, 70, 378,
+
+ 71, 233, 72, 175, 177, 178, 176, 175, 176, 175,
+ 176, 175, 176, 89, 90, 91, 92, 179, 89, 90,
+ 180, 91, 92, 191, 195, 377, 73, 196, 74, 76,
+ 77, 78, 200, 79, 80, 111, 192, 111, 81, 256,
+ 193, 201, 114, 114, 117, 118, 119, 120, 46, 202,
+ 48, 76, 77, 78, 256, 79, 80, 117, 118, 376,
+ 81, 119, 120, 123, 124, 125, 126, 123, 124, 375,
+ 46, 374, 48, 93, 125, 126, 129, 130, 131, 132,
+ 129, 130, 131, 132, 135, 136, 137, 138, 135, 136,
+ 137, 138, 372, 94, 371, 95, 96, 97, 98, 150,
+
+ 151, 370, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 369, 109, 110, 140, 152, 153, 150, 151,
+ 152, 153, 368, 141, 155, 156, 157, 158, 155, 156,
+ 157, 158, 367, 140, 161, 161, 142, 143, 161, 161,
+ 366, 144, 167, 167, 167, 167, 169, 170, 145, 171,
+ 172, 146, 365, 147, 364, 148, 149, 169, 170, 171,
+ 172, 175, 176, 175, 177, 178, 176, 178, 176, 175,
+ 177, 175, 176, 175, 213, 228, 175, 213, 159, 178,
+ 213, 289, 160, 363, 295, 161, 161, 305, 362, 308,
+ 228, 318, 211, 373, 211, 211, 289, 211, 211, 295,
+
+ 211, 361, 305, 229, 308, 360, 318, 359, 373, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 59, 59, 59, 59, 59,
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 75, 75, 75, 75, 75, 75, 75,
+
+ 75, 75, 75, 75, 75, 75, 75, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 358, 115, 115, 116, 357, 356, 116, 116,
+ 116, 116, 355, 116, 116, 116, 116, 354, 116, 122,
+ 353, 352, 351, 122, 122, 122, 122, 122, 122, 122,
+ 122, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 128, 350, 349, 128, 128,
+ 128, 348, 128, 128, 128, 128, 128, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+
+ 133, 134, 347, 346, 345, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 154, 344,
+ 343, 342, 341, 154, 340, 154, 154, 339, 154, 154,
+ 338, 154, 168, 337, 336, 335, 168, 334, 333, 168,
+ 168, 332, 168, 168, 331, 168, 174, 174, 174, 174,
+ 174, 174, 174, 174, 174, 174, 174, 174, 330, 174,
+ 206, 329, 206, 206, 206, 206, 206, 206, 206, 206,
+ 206, 206, 206, 206, 210, 210, 210, 210, 210, 210,
+ 210, 210, 210, 210, 210, 328, 210, 210, 211, 327,
+
+ 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
+ 211, 211, 212, 212, 212, 212, 212, 212, 212, 212,
+ 212, 212, 212, 212, 212, 212, 326, 325, 324, 323,
+ 322, 321, 320, 319, 317, 316, 315, 314, 313, 312,
+ 311, 310, 309, 307, 306, 304, 303, 302, 301, 300,
+ 299, 298, 297, 296, 294, 293, 292, 291, 290, 288,
+ 287, 286, 285, 284, 283, 282, 281, 280, 279, 278,
+ 277, 276, 275, 274, 273, 272, 271, 270, 269, 268,
+ 267, 266, 265, 264, 263, 262, 261, 260, 259, 258,
+ 257, 255, 254, 253, 252, 251, 250, 249, 248, 247,
+
+ 246, 244, 243, 242, 241, 240, 239, 238, 237, 236,
+ 235, 234, 231, 230, 227, 226, 225, 224, 223, 220,
+ 219, 218, 214, 208, 207, 205, 204, 203, 197, 194,
+ 190, 187, 186, 181, 88, 173, 121, 88, 379, 19,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379
} ;
-static yyconst short int yy_chk[871] =
+static yyconst short int yy_chk[891] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3, 3, 28, 4, 4, 28, 3, 22, 22, 4,
- 5, 5, 5, 6, 6, 6, 23, 23, 386, 3,
- 69, 3, 4, 69, 4, 9, 9, 9, 98, 5,
- 5, 5, 6, 6, 6, 7, 7, 98, 8, 8,
- 7, 29, 29, 8, 382, 9, 10, 10, 10, 37,
+ 5, 5, 5, 6, 6, 6, 23, 23, 95, 3,
+ 69, 3, 4, 69, 4, 9, 9, 9, 95, 5,
+ 5, 5, 6, 6, 6, 7, 7, 405, 8, 8,
+ 7, 29, 29, 8, 99, 9, 10, 10, 10, 37,
- 37, 38, 38, 358, 7, 7, 7, 8, 8, 8,
- 11, 11, 12, 12, 357, 11, 10, 12, 17, 17,
+ 37, 38, 38, 99, 7, 7, 7, 8, 8, 8,
+ 11, 11, 12, 12, 401, 11, 10, 12, 17, 17,
17, 43, 43, 17, 44, 44, 96, 17, 50, 50,
11, 96, 12, 13, 13, 13, 13, 17, 13, 17,
- 51, 51, 13, 103, 18, 18, 18, 55, 55, 18,
- 13, 103, 13, 18, 13, 56, 56, 60, 60, 61,
+ 51, 51, 13, 105, 18, 18, 18, 55, 55, 18,
+ 13, 105, 13, 18, 13, 56, 56, 60, 60, 61,
61, 64, 64, 18, 67, 18, 65, 65, 67, 70,
- 180, 67, 67, 70, 180, 67, 70, 70, 13, 183,
- 13, 14, 14, 14, 14, 180, 14, 76, 76, 183,
- 14, 77, 77, 81, 82, 82, 81, 190, 14, 356,
+ 182, 67, 67, 70, 182, 67, 70, 70, 13, 186,
+ 13, 14, 14, 14, 14, 182, 14, 76, 76, 186,
+ 14, 77, 77, 81, 82, 82, 81, 195, 14, 377,
- 14, 190, 14, 83, 83, 84, 84, 85, 85, 86,
+ 14, 195, 14, 83, 83, 84, 84, 85, 85, 86,
86, 87, 87, 89, 89, 90, 90, 87, 91, 91,
- 87, 92, 92, 99, 101, 355, 14, 101, 14, 15,
- 15, 15, 104, 15, 15, 369, 99, 369, 15, 249,
- 99, 104, 112, 112, 115, 115, 116, 116, 15, 104,
- 15, 16, 16, 16, 249, 16, 16, 117, 117, 354,
- 16, 118, 118, 121, 121, 122, 122, 123, 123, 351,
- 16, 347, 16, 25, 124, 124, 127, 127, 128, 128,
- 129, 129, 130, 130, 133, 133, 134, 134, 135, 135,
- 136, 136, 345, 25, 344, 25, 25, 25, 148, 148,
-
- 149, 149, 25, 343, 25, 25, 25, 25, 25, 25,
- 25, 25, 342, 25, 25, 58, 150, 150, 151, 151,
- 153, 153, 341, 58, 154, 154, 155, 155, 156, 156,
- 158, 158, 340, 58, 159, 159, 58, 58, 164, 164,
- 339, 58, 165, 165, 167, 167, 168, 168, 58, 169,
- 169, 58, 337, 58, 336, 58, 58, 170, 170, 172,
- 172, 173, 173, 174, 174, 175, 175, 176, 176, 177,
- 177, 178, 178, 187, 207, 207, 238, 208, 208, 256,
- 238, 335, 270, 238, 238, 273, 333, 285, 187, 352,
- 178, 332, 178, 207, 256, 207, 208, 270, 208, 331,
-
- 273, 187, 285, 330, 352, 361, 361, 361, 361, 361,
- 361, 361, 361, 361, 361, 361, 361, 361, 361, 362,
- 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
- 362, 362, 362, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 365, 365, 365, 365, 365, 365, 365, 365, 365,
- 365, 365, 365, 365, 365, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 367,
- 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
-
- 367, 367, 367, 368, 368, 368, 368, 368, 368, 368,
- 368, 368, 368, 368, 368, 368, 368, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 329, 370,
- 370, 371, 327, 324, 371, 371, 371, 371, 323, 371,
- 371, 371, 371, 322, 371, 372, 321, 320, 319, 372,
- 372, 372, 372, 372, 372, 372, 372, 373, 373, 373,
- 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
- 373, 374, 317, 316, 374, 374, 374, 315, 374, 374,
- 374, 374, 374, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 376, 313, 312,
-
- 311, 376, 376, 376, 376, 376, 376, 376, 376, 376,
- 377, 377, 377, 377, 377, 377, 377, 377, 377, 377,
- 377, 377, 377, 377, 378, 310, 309, 308, 307, 378,
- 306, 378, 378, 304, 378, 378, 303, 378, 379, 302,
- 301, 300, 379, 298, 297, 379, 379, 296, 379, 379,
- 295, 379, 380, 380, 380, 380, 380, 380, 380, 380,
- 380, 380, 380, 380, 294, 380, 381, 293, 381, 381,
- 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 291, 383, 383, 384, 290, 384, 384, 384, 384,
-
- 384, 384, 384, 384, 384, 384, 384, 384, 385, 385,
+ 87, 92, 92, 101, 103, 376, 14, 103, 14, 15,
+ 15, 15, 106, 15, 15, 388, 101, 388, 15, 223,
+ 101, 106, 114, 114, 117, 117, 118, 118, 15, 106,
+ 15, 16, 16, 16, 223, 16, 16, 119, 119, 375,
+ 16, 120, 120, 123, 123, 124, 124, 125, 125, 374,
+ 16, 373, 16, 25, 126, 126, 129, 129, 130, 130,
+ 131, 131, 132, 132, 135, 135, 136, 136, 137, 137,
+ 138, 138, 370, 25, 366, 25, 25, 25, 25, 150,
+
+ 150, 364, 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 363, 25, 25, 58, 151, 151, 152, 152,
+ 153, 153, 362, 58, 155, 155, 156, 156, 157, 157,
+ 158, 158, 361, 58, 160, 160, 58, 58, 161, 161,
+ 359, 58, 166, 166, 167, 167, 169, 169, 58, 170,
+ 170, 58, 358, 58, 357, 58, 58, 171, 171, 172,
+ 172, 174, 174, 175, 175, 176, 176, 177, 177, 178,
+ 178, 179, 179, 180, 180, 192, 212, 212, 246, 213,
+ 213, 260, 246, 355, 267, 246, 246, 282, 354, 285,
+ 192, 299, 180, 371, 180, 212, 260, 212, 213, 267,
+
+ 213, 353, 282, 192, 285, 351, 299, 350, 371, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 381, 381, 381, 381, 381, 381, 381,
+ 381, 381, 381, 381, 381, 381, 381, 382, 382, 382,
+ 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
+ 382, 383, 383, 383, 383, 383, 383, 383, 383, 383,
+ 383, 383, 383, 383, 383, 384, 384, 384, 384, 384,
+ 384, 384, 384, 384, 384, 384, 384, 384, 384, 385,
385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
- 385, 385, 289, 287, 283, 281, 280, 279, 277, 276,
- 275, 274, 272, 271, 269, 268, 266, 264, 263, 261,
- 259, 258, 257, 255, 253, 252, 251, 250, 248, 246,
- 245, 244, 243, 242, 241, 240, 239, 235, 234, 233,
- 232, 231, 230, 229, 228, 227, 226, 225, 224, 223,
- 222, 221, 220, 219, 218, 217, 216, 215, 214, 213,
- 212, 211, 210, 209, 205, 203, 200, 199, 198, 197,
- 196, 195, 194, 193, 192, 191, 189, 188, 186, 185,
-
- 184, 182, 181, 179, 139, 113, 107, 106, 105, 102,
- 100, 97, 95, 94, 88, 79, 39, 21, 19, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360, 360, 360
+ 385, 385, 385, 386, 386, 386, 386, 386, 386, 386,
+
+ 386, 386, 386, 386, 386, 386, 386, 387, 387, 387,
+ 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
+ 387, 389, 389, 389, 389, 389, 389, 389, 389, 389,
+ 389, 389, 349, 389, 389, 390, 348, 347, 390, 390,
+ 390, 390, 346, 390, 390, 390, 390, 344, 390, 391,
+ 341, 340, 339, 391, 391, 391, 391, 391, 391, 391,
+ 391, 392, 392, 392, 392, 392, 392, 392, 392, 392,
+ 392, 392, 392, 392, 392, 393, 338, 337, 393, 393,
+ 393, 336, 393, 393, 393, 393, 393, 394, 394, 394,
+ 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
+
+ 394, 395, 335, 333, 332, 395, 395, 395, 395, 395,
+ 395, 395, 395, 395, 396, 396, 396, 396, 396, 396,
+ 396, 396, 396, 396, 396, 396, 396, 396, 397, 331,
+ 329, 328, 327, 397, 326, 397, 397, 325, 397, 397,
+ 324, 397, 398, 323, 322, 321, 398, 319, 318, 398,
+ 398, 317, 398, 398, 316, 398, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 315, 399,
+ 400, 313, 400, 400, 400, 400, 400, 400, 400, 400,
+ 400, 400, 400, 400, 402, 402, 402, 402, 402, 402,
+ 402, 402, 402, 402, 402, 312, 402, 402, 403, 311,
+
+ 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
+ 403, 403, 404, 404, 404, 404, 404, 404, 404, 404,
+ 404, 404, 404, 404, 404, 404, 310, 309, 308, 307,
+ 305, 304, 303, 301, 297, 295, 294, 293, 291, 290,
+ 289, 287, 286, 284, 283, 280, 279, 277, 275, 274,
+ 272, 270, 269, 268, 266, 264, 263, 262, 261, 259,
+ 258, 256, 255, 254, 253, 252, 251, 250, 249, 248,
+ 247, 243, 242, 241, 240, 239, 238, 237, 236, 235,
+ 234, 233, 232, 231, 230, 229, 228, 227, 226, 225,
+ 224, 222, 221, 220, 219, 218, 217, 216, 215, 214,
+
+ 210, 208, 205, 204, 203, 202, 201, 200, 199, 198,
+ 197, 196, 194, 193, 191, 190, 189, 188, 187, 185,
+ 184, 183, 181, 141, 115, 109, 108, 107, 104, 102,
+ 100, 98, 97, 94, 88, 79, 39, 21, 19, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379
} ;
static yy_state_type yy_last_accepting_state;
extern int yy_flex_debug;
int yy_flex_debug = 1;
-static yyconst short int yy_rule_linenum[98] =
+static yyconst short int yy_rule_linenum[101] =
{ 0,
122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 152,
- 153, 154, 155, 157, 158, 159, 164, 167, 170, 173,
- 174, 177, 180, 183, 191, 197, 213, 214, 225, 237,
- 238, 239, 256, 265, 267, 287, 301, 303, 323, 335,
- 339, 340, 341, 342, 343, 344, 345, 346, 347, 353,
- 364, 370, 371, 373, 375, 393, 399, 400, 402, 404,
- 422, 425, 428, 429, 432, 443, 454, 456, 458, 461,
- 462, 465, 485, 492, 493, 494, 514
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 155, 156, 157, 158, 160, 161, 162, 167,
+ 170, 173, 176, 177, 180, 183, 186, 194, 200, 216,
+ 217, 228, 240, 241, 242, 259, 268, 270, 290, 304,
+ 306, 326, 338, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 356, 367, 373, 374, 376, 378, 396, 402,
+ 403, 405, 407, 425, 428, 431, 432, 435, 446, 457,
+ 459, 461, 464, 465, 468, 488, 495, 496, 497, 517
} ;
#define SC_PROLOGUE 7
#define SC_EPILOGUE 8
-#line 817 "lex.yy.c"
+#line 827 "scan-gram.c"
/* Macros after this point can all be overridden by user definitions in
* section 1.
YY_FATAL_ERROR( "input in flex scanner failed" ); \
result = n; \
} \
- else \
- { \
- errno=0; \
- while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
- { \
- if( errno != EINTR) \
- { \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- break; \
- } \
- errno=0; \
- clearerr(yyin); \
- } \
- }
+ else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
+ && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" );
#endif
/* No semi-colon after return; correct usage is to write "yyterminate();" -
/*----------------------------.
| Scanning Bison directives. |
`----------------------------*/
-#line 1002 "lex.yy.c"
+#line 1001 "scan-gram.c"
if ( yy_init )
{
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 361 )
+ if ( yy_current_state >= 380 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 820 );
+ while ( yy_base[yy_current_state] != 840 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
{
if ( yy_act == 0 )
fprintf( stderr, "--scanner backing up\n" );
- else if ( yy_act < 98 )
+ else if ( yy_act < 101 )
fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
yy_rule_linenum[yy_act], yytext );
- else if ( yy_act == 98 )
+ else if ( yy_act == 101 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
yytext );
- else if ( yy_act == 99 )
+ else if ( yy_act == 102 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
case 6:
YY_RULE_SETUP
#line 127 "scan-gram.l"
-return PERCENT_ERROR_VERBOSE;
+return PERCENT_DPREC;
YY_BREAK
case 7:
YY_RULE_SETUP
#line 128 "scan-gram.l"
-return PERCENT_EXPECT;
+return PERCENT_ERROR_VERBOSE;
YY_BREAK
case 8:
YY_RULE_SETUP
#line 129 "scan-gram.l"
-return PERCENT_FILE_PREFIX;
+return PERCENT_EXPECT;
YY_BREAK
case 9:
YY_RULE_SETUP
#line 130 "scan-gram.l"
-return PERCENT_YACC;
+return PERCENT_FILE_PREFIX;
YY_BREAK
case 10:
YY_RULE_SETUP
#line 131 "scan-gram.l"
-return PERCENT_LEFT;
+return PERCENT_YACC;
YY_BREAK
case 11:
YY_RULE_SETUP
#line 132 "scan-gram.l"
-return PERCENT_LOCATIONS;
+return PERCENT_GLR_PARSER;
YY_BREAK
case 12:
YY_RULE_SETUP
#line 133 "scan-gram.l"
-return PERCENT_NAME_PREFIX;
+return PERCENT_LEFT;
YY_BREAK
case 13:
YY_RULE_SETUP
#line 134 "scan-gram.l"
-return PERCENT_NO_LINES;
+return PERCENT_LOCATIONS;
YY_BREAK
case 14:
YY_RULE_SETUP
#line 135 "scan-gram.l"
-return PERCENT_NONASSOC;
+return PERCENT_MERGE;
YY_BREAK
case 15:
YY_RULE_SETUP
#line 136 "scan-gram.l"
-return PERCENT_NTERM;
+return PERCENT_NAME_PREFIX;
YY_BREAK
case 16:
YY_RULE_SETUP
#line 137 "scan-gram.l"
-return PERCENT_OUTPUT;
+return PERCENT_NO_LINES;
YY_BREAK
case 17:
YY_RULE_SETUP
#line 138 "scan-gram.l"
-return PERCENT_PREC;
+return PERCENT_NONASSOC;
YY_BREAK
case 18:
YY_RULE_SETUP
#line 139 "scan-gram.l"
-return PERCENT_PRINTER;
+return PERCENT_NTERM;
YY_BREAK
case 19:
YY_RULE_SETUP
#line 140 "scan-gram.l"
-return PERCENT_PURE_PARSER;
+return PERCENT_OUTPUT;
YY_BREAK
case 20:
YY_RULE_SETUP
#line 141 "scan-gram.l"
-return PERCENT_RIGHT;
+return PERCENT_PREC;
YY_BREAK
case 21:
YY_RULE_SETUP
#line 142 "scan-gram.l"
-return PERCENT_SKELETON;
+return PERCENT_PRINTER;
YY_BREAK
case 22:
YY_RULE_SETUP
#line 143 "scan-gram.l"
-return PERCENT_START;
+return PERCENT_PURE_PARSER;
YY_BREAK
case 23:
YY_RULE_SETUP
#line 144 "scan-gram.l"
-return PERCENT_TOKEN;
+return PERCENT_RIGHT;
YY_BREAK
case 24:
YY_RULE_SETUP
#line 145 "scan-gram.l"
-return PERCENT_TOKEN;
+return PERCENT_SKELETON;
YY_BREAK
case 25:
YY_RULE_SETUP
#line 146 "scan-gram.l"
-return PERCENT_TOKEN_TABLE;
+return PERCENT_START;
YY_BREAK
case 26:
YY_RULE_SETUP
#line 147 "scan-gram.l"
-return PERCENT_TYPE;
+return PERCENT_TOKEN;
YY_BREAK
case 27:
YY_RULE_SETUP
#line 148 "scan-gram.l"
-return PERCENT_UNION;
+return PERCENT_TOKEN;
YY_BREAK
case 28:
YY_RULE_SETUP
#line 149 "scan-gram.l"
-return PERCENT_VERBOSE;
+return PERCENT_TOKEN_TABLE;
YY_BREAK
case 29:
YY_RULE_SETUP
#line 150 "scan-gram.l"
-return PERCENT_YACC;
+return PERCENT_TYPE;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 152 "scan-gram.l"
-return EQUAL;
+#line 151 "scan-gram.l"
+return PERCENT_UNION;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 153 "scan-gram.l"
-return COLON;
+#line 152 "scan-gram.l"
+return PERCENT_VERBOSE;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 154 "scan-gram.l"
-return PIPE;
+#line 153 "scan-gram.l"
+return PERCENT_YACC;
YY_BREAK
case 33:
YY_RULE_SETUP
#line 155 "scan-gram.l"
-return SEMICOLON;
+return EQUAL;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 157 "scan-gram.l"
-YY_LINES; YY_STEP;
+#line 156 "scan-gram.l"
+return COLON;
YY_BREAK
case 35:
YY_RULE_SETUP
+#line 157 "scan-gram.l"
+return PIPE;
+ YY_BREAK
+case 36:
+YY_RULE_SETUP
#line 158 "scan-gram.l"
+return SEMICOLON;
+ YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 160 "scan-gram.l"
+YY_LINES; YY_STEP;
+ YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 161 "scan-gram.l"
YY_STEP;
YY_BREAK
-case 36:
+case 39:
YY_RULE_SETUP
-#line 159 "scan-gram.l"
+#line 162 "scan-gram.l"
{
yylval->symbol = getsym (yytext, *yylloc);
return ID;
}
YY_BREAK
-case 37:
+case 40:
YY_RULE_SETUP
-#line 164 "scan-gram.l"
+#line 167 "scan-gram.l"
yylval->integer = strtol (yytext, 0, 10); return INT;
YY_BREAK
/* Characters. We don't check there is only one. */
-case 38:
+case 41:
YY_RULE_SETUP
-#line 167 "scan-gram.l"
+#line 170 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_ESCAPED_CHARACTER);
YY_BREAK
/* Strings. */
-case 39:
+case 42:
YY_RULE_SETUP
-#line 170 "scan-gram.l"
+#line 173 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_ESCAPED_STRING);
YY_BREAK
/* Comments. */
-case 40:
+case 43:
YY_RULE_SETUP
-#line 173 "scan-gram.l"
+#line 176 "scan-gram.l"
yy_push_state (SC_COMMENT);
YY_BREAK
-case 41:
+case 44:
YY_RULE_SETUP
-#line 174 "scan-gram.l"
+#line 177 "scan-gram.l"
YY_STEP;
YY_BREAK
/* Prologue. */
-case 42:
+case 45:
YY_RULE_SETUP
-#line 177 "scan-gram.l"
+#line 180 "scan-gram.l"
yy_push_state (SC_PROLOGUE);
YY_BREAK
/* Code in between braces. */
-case 43:
+case 46:
YY_RULE_SETUP
-#line 180 "scan-gram.l"
+#line 183 "scan-gram.l"
YY_OBS_GROW; ++braces_level; yy_push_state (SC_BRACED_CODE);
YY_BREAK
/* A type. */
-case 44:
+case 47:
YY_RULE_SETUP
-#line 183 "scan-gram.l"
+#line 186 "scan-gram.l"
{
obstack_grow (&string_obstack, yytext + 1, yyleng - 2);
YY_OBS_FINISH;
return TYPE;
}
YY_BREAK
-case 45:
+case 48:
YY_RULE_SETUP
-#line 191 "scan-gram.l"
+#line 194 "scan-gram.l"
{
if (++percent_percent_count == 2)
yy_push_state (SC_EPILOGUE);
return PERCENT_PERCENT;
}
YY_BREAK
-case 46:
+case 49:
YY_RULE_SETUP
-#line 197 "scan-gram.l"
+#line 200 "scan-gram.l"
{
LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": invalid character: `%c'\n", *yytext);
`------------------------------------------------------------*/
-case 47:
+case 50:
YY_RULE_SETUP
-#line 213 "scan-gram.l"
+#line 216 "scan-gram.l"
if (YY_START != SC_COMMENT) obstack_sgrow (&string_obstack, "@<:@");
YY_BREAK
-case 48:
+case 51:
YY_RULE_SETUP
-#line 214 "scan-gram.l"
+#line 217 "scan-gram.l"
if (YY_START != SC_COMMENT) obstack_sgrow (&string_obstack, "@:>@");
YY_BREAK
`-----------------------------------------------------------*/
-case 49:
+case 52:
YY_RULE_SETUP
-#line 225 "scan-gram.l"
+#line 228 "scan-gram.l"
{ /* End of the comment. */
if (yy_top_state () == INITIAL)
{
yy_pop_state ();
}
YY_BREAK
-case 50:
+case 53:
YY_RULE_SETUP
-#line 237 "scan-gram.l"
+#line 240 "scan-gram.l"
if (yy_top_state () != INITIAL) YY_OBS_GROW;
YY_BREAK
-case 51:
+case 54:
YY_RULE_SETUP
-#line 238 "scan-gram.l"
+#line 241 "scan-gram.l"
if (yy_top_state () != INITIAL) YY_OBS_GROW; YY_LINES;
YY_BREAK
-case 52:
+case 55:
YY_RULE_SETUP
-#line 239 "scan-gram.l"
+#line 242 "scan-gram.l"
/* Stray `*'. */if (yy_top_state () != INITIAL) YY_OBS_GROW;
YY_BREAK
case YY_STATE_EOF(SC_COMMENT):
-#line 241 "scan-gram.l"
+#line 244 "scan-gram.l"
{
LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a comment\n");
`----------------------------------------------------------------*/
-case 53:
+case 56:
YY_RULE_SETUP
-#line 256 "scan-gram.l"
+#line 259 "scan-gram.l"
{
assert (yy_top_state () == INITIAL);
YY_OBS_GROW;
return STRING;
}
YY_BREAK
-case 54:
+case 57:
YY_RULE_SETUP
-#line 265 "scan-gram.l"
+#line 268 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
-case 55:
+case 58:
YY_RULE_SETUP
-#line 267 "scan-gram.l"
+#line 270 "scan-gram.l"
obstack_1grow (&string_obstack, '\n'); YY_LINES;
YY_BREAK
case YY_STATE_EOF(SC_ESCAPED_STRING):
-#line 269 "scan-gram.l"
+#line 272 "scan-gram.l"
{
LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a string\n");
`---------------------------------------------------------------*/
-case 56:
+case 59:
YY_RULE_SETUP
-#line 287 "scan-gram.l"
+#line 290 "scan-gram.l"
{
YY_OBS_GROW;
assert (yy_top_state () == INITIAL);
}
}
YY_BREAK
-case 57:
+case 60:
YY_RULE_SETUP
-#line 301 "scan-gram.l"
+#line 304 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
-case 58:
+case 61:
YY_RULE_SETUP
-#line 303 "scan-gram.l"
+#line 306 "scan-gram.l"
obstack_1grow (&string_obstack, '\n'); YY_LINES;
YY_BREAK
case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
-#line 305 "scan-gram.l"
+#line 308 "scan-gram.l"
{
LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a character\n");
`----------------------------*/
-case 59:
+case 62:
YY_RULE_SETUP
-#line 323 "scan-gram.l"
+#line 326 "scan-gram.l"
{
long c = strtol (yytext + 1, 0, 8);
if (c > 255)
obstack_1grow (&string_obstack, c);
}
YY_BREAK
-case 60:
+case 63:
YY_RULE_SETUP
-#line 335 "scan-gram.l"
+#line 338 "scan-gram.l"
{
obstack_1grow (&string_obstack, strtol (yytext + 2, 0, 16));
}
YY_BREAK
-case 61:
+case 64:
YY_RULE_SETUP
-#line 339 "scan-gram.l"
+#line 342 "scan-gram.l"
obstack_1grow (&string_obstack, '\a');
YY_BREAK
-case 62:
+case 65:
YY_RULE_SETUP
-#line 340 "scan-gram.l"
+#line 343 "scan-gram.l"
obstack_1grow (&string_obstack, '\b');
YY_BREAK
-case 63:
+case 66:
YY_RULE_SETUP
-#line 341 "scan-gram.l"
+#line 344 "scan-gram.l"
obstack_1grow (&string_obstack, '\f');
YY_BREAK
-case 64:
+case 67:
YY_RULE_SETUP
-#line 342 "scan-gram.l"
+#line 345 "scan-gram.l"
obstack_1grow (&string_obstack, '\n');
YY_BREAK
-case 65:
+case 68:
YY_RULE_SETUP
-#line 343 "scan-gram.l"
+#line 346 "scan-gram.l"
obstack_1grow (&string_obstack, '\r');
YY_BREAK
-case 66:
+case 69:
YY_RULE_SETUP
-#line 344 "scan-gram.l"
+#line 347 "scan-gram.l"
obstack_1grow (&string_obstack, '\t');
YY_BREAK
-case 67:
+case 70:
YY_RULE_SETUP
-#line 345 "scan-gram.l"
+#line 348 "scan-gram.l"
obstack_1grow (&string_obstack, '\v');
YY_BREAK
-case 68:
+case 71:
YY_RULE_SETUP
-#line 346 "scan-gram.l"
+#line 349 "scan-gram.l"
obstack_1grow (&string_obstack, yytext[1]);
YY_BREAK
-case 69:
+case 72:
YY_RULE_SETUP
-#line 347 "scan-gram.l"
+#line 350 "scan-gram.l"
{
LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unrecognized escape: %s\n", quote (yytext));
}
YY_BREAK
/* FLex wants this rule, in case of a `\<<EOF>>'. */
-case 70:
+case 73:
YY_RULE_SETUP
-#line 353 "scan-gram.l"
+#line 356 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
`----------------------------------------------------------*/
-case 71:
+case 74:
YY_RULE_SETUP
-#line 364 "scan-gram.l"
+#line 367 "scan-gram.l"
{
YY_OBS_GROW;
assert (yy_top_state () != INITIAL);
yy_pop_state ();
}
YY_BREAK
-case 72:
+case 75:
YY_RULE_SETUP
-#line 370 "scan-gram.l"
+#line 373 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
-case 73:
+case 76:
YY_RULE_SETUP
-#line 371 "scan-gram.l"
+#line 374 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
/* FLex wants this rule, in case of a `\<<EOF>>'. */
-case 74:
+case 77:
YY_RULE_SETUP
-#line 373 "scan-gram.l"
+#line 376 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
-case 75:
+case 78:
YY_RULE_SETUP
-#line 375 "scan-gram.l"
+#line 378 "scan-gram.l"
YY_OBS_GROW; YY_LINES;
YY_BREAK
case YY_STATE_EOF(SC_CHARACTER):
-#line 377 "scan-gram.l"
+#line 380 "scan-gram.l"
{
LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a character\n");
`----------------------------------------------------------------*/
-case 76:
+case 79:
YY_RULE_SETUP
-#line 393 "scan-gram.l"
+#line 396 "scan-gram.l"
{
assert (yy_top_state () != INITIAL);
YY_OBS_GROW;
yy_pop_state ();
}
YY_BREAK
-case 77:
+case 80:
YY_RULE_SETUP
-#line 399 "scan-gram.l"
+#line 402 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
-case 78:
+case 81:
YY_RULE_SETUP
-#line 400 "scan-gram.l"
+#line 403 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
/* FLex wants this rule, in case of a `\<<EOF>>'. */
-case 79:
+case 82:
YY_RULE_SETUP
-#line 402 "scan-gram.l"
+#line 405 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
-case 80:
+case 83:
YY_RULE_SETUP
-#line 404 "scan-gram.l"
+#line 407 "scan-gram.l"
YY_OBS_GROW; YY_LINES;
YY_BREAK
case YY_STATE_EOF(SC_STRING):
-#line 406 "scan-gram.l"
+#line 409 "scan-gram.l"
{
LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a string\n");
/* Characters. We don't check there is only one. */
-case 81:
+case 84:
YY_RULE_SETUP
-#line 422 "scan-gram.l"
+#line 425 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_CHARACTER);
YY_BREAK
/* Strings. */
-case 82:
+case 85:
YY_RULE_SETUP
-#line 425 "scan-gram.l"
+#line 428 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_STRING);
YY_BREAK
/* Comments. */
-case 83:
+case 86:
YY_RULE_SETUP
-#line 428 "scan-gram.l"
+#line 431 "scan-gram.l"
YY_OBS_GROW; yy_push_state (SC_COMMENT);
YY_BREAK
-case 84:
+case 87:
YY_RULE_SETUP
-#line 429 "scan-gram.l"
+#line 432 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
/* Not comments. */
-case 85:
+case 88:
YY_RULE_SETUP
-#line 432 "scan-gram.l"
+#line 435 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
`---------------------------------------------------------------*/
-case 86:
+case 89:
YY_RULE_SETUP
-#line 443 "scan-gram.l"
+#line 446 "scan-gram.l"
{
YY_OBS_GROW;
if (--braces_level == 0)
}
}
YY_BREAK
-case 87:
+case 90:
YY_RULE_SETUP
-#line 454 "scan-gram.l"
+#line 457 "scan-gram.l"
YY_OBS_GROW; braces_level++;
YY_BREAK
-case 88:
+case 91:
YY_RULE_SETUP
-#line 456 "scan-gram.l"
+#line 459 "scan-gram.l"
{ handle_dollar (current_braced_code,
yytext, *yylloc); }
YY_BREAK
-case 89:
+case 92:
YY_RULE_SETUP
-#line 458 "scan-gram.l"
+#line 461 "scan-gram.l"
{ handle_at (current_braced_code,
yytext, *yylloc); }
YY_BREAK
-case 90:
+case 93:
YY_RULE_SETUP
-#line 461 "scan-gram.l"
+#line 464 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
-case 91:
+case 94:
YY_RULE_SETUP
-#line 462 "scan-gram.l"
+#line 465 "scan-gram.l"
YY_OBS_GROW; YY_LINES;
YY_BREAK
/* A lose $, or /, or etc. */
-case 92:
+case 95:
YY_RULE_SETUP
-#line 465 "scan-gram.l"
+#line 468 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
case YY_STATE_EOF(SC_BRACED_CODE):
-#line 467 "scan-gram.l"
+#line 470 "scan-gram.l"
{
LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a braced code\n");
`--------------------------------------------------------------*/
-case 93:
+case 96:
YY_RULE_SETUP
-#line 485 "scan-gram.l"
+#line 488 "scan-gram.l"
{
yy_pop_state ();
YY_OBS_FINISH;
return PROLOGUE;
}
YY_BREAK
-case 94:
+case 97:
YY_RULE_SETUP
-#line 492 "scan-gram.l"
+#line 495 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
-case 95:
+case 98:
YY_RULE_SETUP
-#line 493 "scan-gram.l"
+#line 496 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
-case 96:
+case 99:
YY_RULE_SETUP
-#line 494 "scan-gram.l"
+#line 497 "scan-gram.l"
YY_OBS_GROW; YY_LINES;
YY_BREAK
case YY_STATE_EOF(SC_PROLOGUE):
-#line 496 "scan-gram.l"
+#line 499 "scan-gram.l"
{
LOCATION_PRINT (stderr, *yylloc);
fprintf (stderr, ": unexpected end of file in a prologue\n");
`---------------------------------------------------------------*/
-case 97:
+case 100:
YY_RULE_SETUP
-#line 514 "scan-gram.l"
+#line 517 "scan-gram.l"
YY_OBS_GROW;
YY_BREAK
case YY_STATE_EOF(SC_EPILOGUE):
-#line 516 "scan-gram.l"
+#line 519 "scan-gram.l"
{
yy_pop_state ();
YY_OBS_FINISH;
}
YY_BREAK
-case 98:
+case 101:
YY_RULE_SETUP
-#line 525 "scan-gram.l"
+#line 528 "scan-gram.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 1847 "lex.yy.c"
+#line 1861 "scan-gram.c"
case YY_STATE_EOF(INITIAL):
yyterminate();
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 361 )
+ if ( yy_current_state >= 380 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 361 )
+ if ( yy_current_state >= 380 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 360);
+ yy_is_jam = (yy_current_state == 379);
return yy_is_jam ? 0 : yy_current_state;
}
}
-#ifndef _WIN32
-#include <unistd.h>
-#else
#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
extern int isatty YY_PROTO(( int ));
#endif
#endif
-#endif
#ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
return 0;
}
#endif
-#line 525 "scan-gram.l"
+#line 528 "scan-gram.l"
/*------------------------------------------------------------------.
"%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;
res->location = location;
res->action = NULL;
res->ruleprec = NULL;
+ res->dprec = 0;
+ res->merger = 0;
return res;
}
location_t action_location;
symbol_t *ruleprec;
+ int dprec;
+ int merger;
} symbol_list_t;
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
# Some old bugs.
m4_include([regression.at])
+
+# GLR tests: C++ types, simplified
+m4_include([cxx-type.at])