~ubuntu-branches/ubuntu/breezy/gettext/breezy

« back to all changes in this revision

Viewing changes to src/po-gram-gen.c

  • Committer: Bazaar Package Importer
  • Author(s): Santiago Vila
  • Date: 2004-03-14 17:40:02 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040314174002-p1ad5ldve1hqzhye
Tags: 0.14.1-2
* Added libexpat1-dev to Build-Depends, for glade support.
* Added libc0.1-dev to Build-Depends, for GNU/kFreeBSD.
* Removed special-casing of knetbsd-gnu in debian/rules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
/*  A Bison parser, made from po-gram-gen.y
3
 
    by GNU Bison version 1.28  */
4
 
 
5
 
#define YYBISON 1  /* Identify Bison output.  */
6
 
 
7
 
#define COMMENT 257
8
 
#define DOMAIN  258
9
 
#define JUNK    259
10
 
#define MSGID   260
11
 
#define MSGID_PLURAL    261
12
 
#define MSGSTR  262
13
 
#define NAME    263
14
 
#define NUMBER  264
15
 
#define STRING  265
16
 
 
17
 
#line 20 "po-gram-gen.y"
18
 
 
19
 
#ifdef HAVE_CONFIG_H
20
 
# include "config.h"
21
 
#endif
22
 
 
23
 
#include <stdio.h>
24
 
 
25
 
#include "po-lex.h"
26
 
#include "po-gram.h"
27
 
#include "error.h"
28
 
#include "system.h"
29
 
#include "libgettext.h"
30
 
#include "po.h"
31
 
 
32
 
#define _(str) gettext (str)
33
 
 
34
 
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
35
 
   as well as gratuitiously global symbol names, so we can have multiple
36
 
   yacc generated parsers in the same program.  Note that these are only
37
 
   the variables produced by yacc.  If other parser generators (bison,
38
 
   byacc, etc) produce additional global names that conflict at link time,
39
 
   then those parser generators need to be fixed instead of adding those
40
 
   names to this list. */
41
 
 
42
 
#define yymaxdepth po_gram_maxdepth
43
 
#define yyparse po_gram_parse
44
 
#define yylex   po_gram_lex
45
 
#define yyerror po_gram_error
46
 
#define yylval  po_gram_lval
47
 
#define yychar  po_gram_char
48
 
#define yydebug po_gram_debug
49
 
#define yypact  po_gram_pact
50
 
#define yyr1    po_gram_r1
51
 
#define yyr2    po_gram_r2
52
 
#define yydef   po_gram_def
53
 
#define yychk   po_gram_chk
54
 
#define yypgo   po_gram_pgo
55
 
#define yyact   po_gram_act
56
 
#define yyexca  po_gram_exca
57
 
#define yyerrflag po_gram_errflag
58
 
#define yynerrs po_gram_nerrs
59
 
#define yyps    po_gram_ps
60
 
#define yypv    po_gram_pv
61
 
#define yys     po_gram_s
62
 
#define yy_yys  po_gram_yys
63
 
#define yystate po_gram_state
64
 
#define yytmp   po_gram_tmp
65
 
#define yyv     po_gram_v
66
 
#define yy_yyv  po_gram_yyv
67
 
#define yyval   po_gram_val
68
 
#define yylloc  po_gram_lloc
69
 
#define yyreds  po_gram_reds          /* With YYDEBUG defined */
70
 
#define yytoks  po_gram_toks          /* With YYDEBUG defined */
71
 
#define yylhs   po_gram_yylhs
72
 
#define yylen   po_gram_yylen
73
 
#define yydefred po_gram_yydefred
74
 
#define yydgoto po_gram_yydgoto
75
 
#define yysindex po_gram_yysindex
76
 
#define yyrindex po_gram_yyrindex
77
 
#define yygindex po_gram_yygindex
78
 
#define yytable  po_gram_yytable
79
 
#define yycheck  po_gram_yycheck
80
 
 
81
 
static long plural_counter;
82
 
 
83
 
#define check_obsolete(value1,value2) \
84
 
  if ((value1).obsolete != (value2).obsolete) \
85
 
    po_gram_error_at_line (&(value2).pos, _("inconsistent use of #~"));
86
 
 
87
 
 
88
 
#line 102 "po-gram-gen.y"
89
 
typedef union
90
 
{
91
 
  struct { char *string; lex_pos_ty pos; int obsolete; } string;
92
 
  struct { long number; lex_pos_ty pos; int obsolete; } number;
93
 
  struct { lex_pos_ty pos; int obsolete; } pos;
94
 
  struct { struct msgstr_def rhs; lex_pos_ty pos; int obsolete; } rhs;
95
 
} YYSTYPE;
96
 
#include <stdio.h>
97
 
 
98
 
#ifndef __cplusplus
99
 
#ifndef __STDC__
100
 
#define const
101
 
#endif
102
 
#endif
103
 
 
104
 
 
105
 
 
106
 
#define YYFINAL         28
107
 
#define YYFLAG          -32768
108
 
#define YYNTBASE        14
109
 
 
110
 
#define YYTRANSLATE(x) ((unsigned)(x) <= 265 ? yytranslate[x] : 22)
111
 
 
112
 
static const char yytranslate[] = {     0,
113
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
114
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
115
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
116
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
117
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
118
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
119
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
120
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
121
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
122
 
    10,     2,    11,     2,     2,     2,     2,     2,     2,     2,
123
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
124
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
125
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
126
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
127
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
128
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
129
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
130
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
131
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
132
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
133
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
134
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
135
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
136
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
137
 
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
138
 
     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
139
 
     7,     8,     9,    12,    13
140
 
};
141
 
 
142
 
#if YYDEBUG != 0
143
 
static const short yyprhs[] = {     0,
144
 
     0,     1,     4,     7,    10,    13,    16,    21,    26,    30,
145
 
    34,    37,    40,    42,    45,    51,    53,    56
146
 
};
147
 
 
148
 
static const short yyrhs[] = {    -1,
149
 
    14,    21,     0,    14,    15,     0,    14,    16,     0,    14,
150
 
     1,     0,     4,    13,     0,     6,    20,     8,    20,     0,
151
 
     6,    20,    17,    18,     0,     6,    20,    17,     0,     6,
152
 
    20,    18,     0,     6,    20,     0,     7,    20,     0,    19,
153
 
     0,    18,    19,     0,     8,    10,    12,    11,    20,     0,
154
 
    13,     0,    20,    13,     0,     3,     0
155
 
};
156
 
 
157
 
#endif
158
 
 
159
 
#if YYDEBUG != 0
160
 
static const short yyrline[] = { 0,
161
 
   120,   121,   122,   123,   124,   128,   135,   149,   164,   172,
162
 
   180,   189,   200,   204,   219,   241,   245,   263
163
 
};
164
 
#endif
165
 
 
166
 
 
167
 
#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
168
 
 
169
 
static const char * const yytname[] = {   "$","error","$undefined.","COMMENT",
170
 
"DOMAIN","JUNK","MSGID","MSGID_PLURAL","MSGSTR","NAME","'['","']'","NUMBER",
171
 
"STRING","msgfmt","domain","message","msgid_pluralform","pluralform_list","pluralform",
172
 
"string_list","comment", NULL
173
 
};
174
 
#endif
175
 
 
176
 
static const short yyr1[] = {     0,
177
 
    14,    14,    14,    14,    14,    15,    16,    16,    16,    16,
178
 
    16,    17,    18,    18,    19,    20,    20,    21
179
 
};
180
 
 
181
 
static const short yyr2[] = {     0,
182
 
     0,     2,     2,     2,     2,     2,     4,     4,     3,     3,
183
 
     2,     2,     1,     2,     5,     1,     2,     1
184
 
};
185
 
 
186
 
static const short yydefact[] = {     1,
187
 
     0,     5,    18,     0,     0,     3,     4,     2,     6,    16,
188
 
    11,     0,     0,    17,     9,    10,    13,    12,     0,     7,
189
 
     0,     8,    14,     0,     0,    15,     0,     0
190
 
};
191
 
 
192
 
static const short yydefgoto[] = {     1,
193
 
     6,     7,    15,    16,    17,    11,     8
194
 
};
195
 
 
196
 
static const short yypact[] = {-32768,
197
 
     2,-32768,-32768,    -1,     1,-32768,-32768,-32768,-32768,-32768,
198
 
     3,     1,    -6,-32768,     9,     9,-32768,     5,     7,     5,
199
 
    10,     9,-32768,    11,     1,     5,    21,-32768
200
 
};
201
 
 
202
 
static const short yypgoto[] = {-32768,
203
 
-32768,-32768,-32768,     8,    -7,   -12,-32768
204
 
};
205
 
 
206
 
 
207
 
#define YYLAST          23
208
 
 
209
 
 
210
 
static const short yytable[] = {    18,
211
 
    20,    27,     2,    19,     3,     4,    10,     5,    23,    12,
212
 
    13,     9,    26,    10,    23,    14,    21,    14,    24,    19,
213
 
    28,    25,    22
214
 
};
215
 
 
216
 
static const short yycheck[] = {    12,
217
 
    13,     0,     1,    10,     3,     4,    13,     6,    16,     7,
218
 
     8,    13,    25,    13,    22,    13,     8,    13,    12,    10,
219
 
     0,    11,    15
220
 
};
221
 
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
222
 
#line 3 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple"
223
 
/* This file comes from bison-1.28.  */
224
 
 
225
 
/* Skeleton output parser for bison,
226
 
   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
227
 
 
228
 
   This program is free software; you can redistribute it and/or modify
229
 
   it under the terms of the GNU General Public License as published by
230
 
   the Free Software Foundation; either version 2, or (at your option)
231
 
   any later version.
232
 
 
233
 
   This program is distributed in the hope that it will be useful,
234
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
235
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
236
 
   GNU General Public License for more details.
237
 
 
238
 
   You should have received a copy of the GNU General Public License
239
 
   along with this program; if not, write to the Free Software
240
 
   Foundation, Inc., 59 Temple Place - Suite 330,
241
 
   Boston, MA 02111-1307, USA.  */
242
 
 
243
 
/* As a special exception, when this file is copied by Bison into a
244
 
   Bison output file, you may use that output file without restriction.
245
 
   This special exception was added by the Free Software Foundation
246
 
   in version 1.24 of Bison.  */
247
 
 
248
 
/* This is the parser code that is written into each bison parser
249
 
  when the %semantic_parser declaration is not specified in the grammar.
250
 
  It was written by Richard Stallman by simplifying the hairy parser
251
 
  used when %semantic_parser is specified.  */
252
 
 
253
 
#ifndef YYSTACK_USE_ALLOCA
254
 
#ifdef alloca
255
 
#define YYSTACK_USE_ALLOCA
256
 
#else /* alloca not defined */
257
 
#ifdef __GNUC__
258
 
#define YYSTACK_USE_ALLOCA
259
 
#define alloca __builtin_alloca
260
 
#else /* not GNU C.  */
261
 
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
262
 
#define YYSTACK_USE_ALLOCA
263
 
#include <alloca.h>
264
 
#else /* not sparc */
265
 
/* We think this test detects Watcom and Microsoft C.  */
266
 
/* This used to test MSDOS, but that is a bad idea
267
 
   since that symbol is in the user namespace.  */
268
 
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
269
 
#if 0 /* No need for malloc.h, which pollutes the namespace;
270
 
         instead, just don't use alloca.  */
271
 
#include <malloc.h>
272
 
#endif
273
 
#else /* not MSDOS, or __TURBOC__ */
274
 
#if defined(_AIX)
275
 
/* I don't know what this was needed for, but it pollutes the namespace.
276
 
   So I turned it off.   rms, 2 May 1997.  */
277
 
/* #include <malloc.h>  */
278
 
 #pragma alloca
279
 
#define YYSTACK_USE_ALLOCA
280
 
#else /* not MSDOS, or __TURBOC__, or _AIX */
281
 
#if 0
282
 
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
283
 
                 and on HPUX 10.  Eventually we can turn this on.  */
284
 
#define YYSTACK_USE_ALLOCA
285
 
#define alloca __builtin_alloca
286
 
#endif /* __hpux */
287
 
#endif
288
 
#endif /* not _AIX */
289
 
#endif /* not MSDOS, or __TURBOC__ */
290
 
#endif /* not sparc */
291
 
#endif /* not GNU C */
292
 
#endif /* alloca not defined */
293
 
#endif /* YYSTACK_USE_ALLOCA not defined */
294
 
 
295
 
#ifdef YYSTACK_USE_ALLOCA
296
 
#define YYSTACK_ALLOC alloca
297
 
#else
298
 
#define YYSTACK_ALLOC malloc
299
 
#endif
300
 
 
301
 
/* Note: there must be only one dollar sign in this file.
302
 
   It is replaced by the list of actions, each action
303
 
   as one case of the switch.  */
304
 
 
305
 
#define yyerrok         (yyerrstatus = 0)
306
 
#define yyclearin       (yychar = YYEMPTY)
307
 
#define YYEMPTY         -2
308
 
#define YYEOF           0
309
 
#define YYACCEPT        goto yyacceptlab
310
 
#define YYABORT         goto yyabortlab
311
 
#define YYERROR         goto yyerrlab1
312
 
/* Like YYERROR except do call yyerror.
313
 
   This remains here temporarily to ease the
314
 
   transition to the new meaning of YYERROR, for GCC.
315
 
   Once GCC version 2 has supplanted version 1, this can go.  */
316
 
#define YYFAIL          goto yyerrlab
317
 
#define YYRECOVERING()  (!!yyerrstatus)
318
 
#define YYBACKUP(token, value) \
319
 
do                                                              \
320
 
  if (yychar == YYEMPTY && yylen == 1)                          \
321
 
    { yychar = (token), yylval = (value);                       \
322
 
      yychar1 = YYTRANSLATE (yychar);                           \
323
 
      YYPOPSTACK;                                               \
324
 
      goto yybackup;                                            \
325
 
    }                                                           \
326
 
  else                                                          \
327
 
    { yyerror ("syntax error: cannot back up"); YYERROR; }      \
328
 
while (0)
329
 
 
330
 
#define YYTERROR        1
331
 
#define YYERRCODE       256
332
 
 
333
 
#ifndef YYPURE
334
 
#define YYLEX           yylex()
335
 
#endif
336
 
 
337
 
#ifdef YYPURE
338
 
#ifdef YYLSP_NEEDED
339
 
#ifdef YYLEX_PARAM
340
 
#define YYLEX           yylex(&yylval, &yylloc, YYLEX_PARAM)
341
 
#else
342
 
#define YYLEX           yylex(&yylval, &yylloc)
343
 
#endif
344
 
#else /* not YYLSP_NEEDED */
345
 
#ifdef YYLEX_PARAM
346
 
#define YYLEX           yylex(&yylval, YYLEX_PARAM)
347
 
#else
348
 
#define YYLEX           yylex(&yylval)
349
 
#endif
350
 
#endif /* not YYLSP_NEEDED */
351
 
#endif
352
 
 
353
 
/* If nonreentrant, generate the variables here */
354
 
 
355
 
#ifndef YYPURE
356
 
 
357
 
int     yychar;                 /*  the lookahead symbol                */
358
 
YYSTYPE yylval;                 /*  the semantic value of the           */
359
 
                                /*  lookahead symbol                    */
360
 
 
361
 
#ifdef YYLSP_NEEDED
362
 
YYLTYPE yylloc;                 /*  location data for the lookahead     */
363
 
                                /*  symbol                              */
364
 
#endif
365
 
 
366
 
int yynerrs;                    /*  number of parse errors so far       */
367
 
#endif  /* not YYPURE */
368
 
 
369
 
#if YYDEBUG != 0
370
 
int yydebug;                    /*  nonzero means print parse trace     */
371
 
/* Since this is uninitialized, it does not stop multiple parsers
372
 
   from coexisting.  */
373
 
#endif
374
 
 
375
 
/*  YYINITDEPTH indicates the initial size of the parser's stacks       */
376
 
 
377
 
#ifndef YYINITDEPTH
378
 
#define YYINITDEPTH 200
379
 
#endif
380
 
 
381
 
/*  YYMAXDEPTH is the maximum size the stacks can grow to
382
 
    (effective only if the built-in stack extension method is used).  */
383
 
 
384
 
#if YYMAXDEPTH == 0
385
 
#undef YYMAXDEPTH
386
 
#endif
387
 
 
388
 
#ifndef YYMAXDEPTH
389
 
#define YYMAXDEPTH 10000
390
 
#endif
391
 
 
392
 
/* Define __yy_memcpy.  Note that the size argument
393
 
   should be passed with type unsigned int, because that is what the non-GCC
394
 
   definitions require.  With GCC, __builtin_memcpy takes an arg
395
 
   of type size_t, but it can handle unsigned int.  */
396
 
 
397
 
#if __GNUC__ > 1                /* GNU C and GNU C++ define this.  */
398
 
#define __yy_memcpy(TO,FROM,COUNT)      __builtin_memcpy(TO,FROM,COUNT)
399
 
#else                           /* not GNU C or C++ */
400
 
#ifndef __cplusplus
401
 
 
402
 
/* This is the most reliable way to avoid incompatibilities
403
 
   in available built-in functions on various systems.  */
404
 
static void
405
 
__yy_memcpy (to, from, count)
406
 
     char *to;
407
 
     char *from;
408
 
     unsigned int count;
409
 
{
410
 
  register char *f = from;
411
 
  register char *t = to;
412
 
  register int i = count;
413
 
 
414
 
  while (i-- > 0)
415
 
    *t++ = *f++;
416
 
}
417
 
 
418
 
#else /* __cplusplus */
419
 
 
420
 
/* This is the most reliable way to avoid incompatibilities
421
 
   in available built-in functions on various systems.  */
422
 
static void
423
 
__yy_memcpy (char *to, char *from, unsigned int count)
424
 
{
425
 
  register char *t = to;
426
 
  register char *f = from;
427
 
  register int i = count;
428
 
 
429
 
  while (i-- > 0)
430
 
    *t++ = *f++;
431
 
}
432
 
 
433
 
#endif
434
 
#endif
435
 
 
436
 
#line 217 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple"
437
 
 
438
 
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
439
 
   into yyparse.  The argument should have type void *.
440
 
   It should actually point to an object.
441
 
   Grammar actions can access the variable by casting it
442
 
   to the proper pointer type.  */
443
 
 
444
 
#ifdef YYPARSE_PARAM
445
 
#ifdef __cplusplus
446
 
#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
447
 
#define YYPARSE_PARAM_DECL
448
 
#else /* not __cplusplus */
449
 
#define YYPARSE_PARAM_ARG YYPARSE_PARAM
450
 
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
451
 
#endif /* not __cplusplus */
452
 
#else /* not YYPARSE_PARAM */
453
 
#define YYPARSE_PARAM_ARG
454
 
#define YYPARSE_PARAM_DECL
455
 
#endif /* not YYPARSE_PARAM */
456
 
 
457
 
/* Prevent warning if -Wstrict-prototypes.  */
458
 
#ifdef __GNUC__
459
 
#ifdef YYPARSE_PARAM
460
 
int yyparse (void *);
461
 
#else
462
 
int yyparse (void);
463
 
#endif
464
 
#endif
465
 
 
466
 
int
467
 
yyparse(YYPARSE_PARAM_ARG)
468
 
     YYPARSE_PARAM_DECL
469
 
{
470
 
  register int yystate;
471
 
  register int yyn;
472
 
  register short *yyssp;
473
 
  register YYSTYPE *yyvsp;
474
 
  int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
475
 
  int yychar1 = 0;              /*  lookahead token as an internal (translated) token number */
476
 
 
477
 
  short yyssa[YYINITDEPTH];     /*  the state stack                     */
478
 
  YYSTYPE yyvsa[YYINITDEPTH];   /*  the semantic value stack            */
479
 
 
480
 
  short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
481
 
  YYSTYPE *yyvs = yyvsa;        /*  to allow yyoverflow to reallocate them elsewhere */
482
 
 
483
 
#ifdef YYLSP_NEEDED
484
 
  YYLTYPE yylsa[YYINITDEPTH];   /*  the location stack                  */
485
 
  YYLTYPE *yyls = yylsa;
486
 
  YYLTYPE *yylsp;
487
 
 
488
 
#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
489
 
#else
490
 
#define YYPOPSTACK   (yyvsp--, yyssp--)
491
 
#endif
492
 
 
493
 
  int yystacksize = YYINITDEPTH;
494
 
  int yyfree_stacks = 0;
495
 
 
496
 
#ifdef YYPURE
497
 
  int yychar;
498
 
  YYSTYPE yylval;
499
 
  int yynerrs;
500
 
#ifdef YYLSP_NEEDED
501
 
  YYLTYPE yylloc;
502
 
#endif
503
 
#endif
504
 
 
505
 
  YYSTYPE yyval;                /*  the variable used to return         */
506
 
                                /*  semantic values from the action     */
507
 
                                /*  routines                            */
508
 
 
509
 
  int yylen;
510
 
 
511
 
#if YYDEBUG != 0
512
 
  if (yydebug)
513
 
    fprintf(stderr, "Starting parse\n");
514
 
#endif
515
 
 
516
 
  yystate = 0;
517
 
  yyerrstatus = 0;
518
 
  yynerrs = 0;
519
 
  yychar = YYEMPTY;             /* Cause a token to be read.  */
520
 
 
521
 
  /* Initialize stack pointers.
522
 
     Waste one element of value and location stack
523
 
     so that they stay on the same level as the state stack.
524
 
     The wasted elements are never initialized.  */
525
 
 
526
 
  yyssp = yyss - 1;
527
 
  yyvsp = yyvs;
528
 
#ifdef YYLSP_NEEDED
529
 
  yylsp = yyls;
530
 
#endif
531
 
 
532
 
/* Push a new state, which is found in  yystate  .  */
533
 
/* In all cases, when you get here, the value and location stacks
534
 
   have just been pushed. so pushing a state here evens the stacks.  */
535
 
yynewstate:
536
 
 
537
 
  *++yyssp = yystate;
538
 
 
539
 
  if (yyssp >= yyss + yystacksize - 1)
540
 
    {
541
 
      /* Give user a chance to reallocate the stack */
542
 
      /* Use copies of these so that the &'s don't force the real ones into memory. */
543
 
      YYSTYPE *yyvs1 = yyvs;
544
 
      short *yyss1 = yyss;
545
 
#ifdef YYLSP_NEEDED
546
 
      YYLTYPE *yyls1 = yyls;
547
 
#endif
548
 
 
549
 
      /* Get the current used size of the three stacks, in elements.  */
550
 
      int size = yyssp - yyss + 1;
551
 
 
552
 
#ifdef yyoverflow
553
 
      /* Each stack pointer address is followed by the size of
554
 
         the data in use in that stack, in bytes.  */
555
 
#ifdef YYLSP_NEEDED
556
 
      /* This used to be a conditional around just the two extra args,
557
 
         but that might be undefined if yyoverflow is a macro.  */
558
 
      yyoverflow("parser stack overflow",
559
 
                 &yyss1, size * sizeof (*yyssp),
560
 
                 &yyvs1, size * sizeof (*yyvsp),
561
 
                 &yyls1, size * sizeof (*yylsp),
562
 
                 &yystacksize);
563
 
#else
564
 
      yyoverflow("parser stack overflow",
565
 
                 &yyss1, size * sizeof (*yyssp),
566
 
                 &yyvs1, size * sizeof (*yyvsp),
567
 
                 &yystacksize);
568
 
#endif
569
 
 
570
 
      yyss = yyss1; yyvs = yyvs1;
571
 
#ifdef YYLSP_NEEDED
572
 
      yyls = yyls1;
573
 
#endif
574
 
#else /* no yyoverflow */
575
 
      /* Extend the stack our own way.  */
576
 
      if (yystacksize >= YYMAXDEPTH)
577
 
        {
578
 
          yyerror("parser stack overflow");
579
 
          if (yyfree_stacks)
580
 
            {
581
 
              free (yyss);
582
 
              free (yyvs);
583
 
#ifdef YYLSP_NEEDED
584
 
              free (yyls);
585
 
#endif
586
 
            }
587
 
          return 2;
588
 
        }
589
 
      yystacksize *= 2;
590
 
      if (yystacksize > YYMAXDEPTH)
591
 
        yystacksize = YYMAXDEPTH;
592
 
#ifndef YYSTACK_USE_ALLOCA
593
 
      yyfree_stacks = 1;
594
 
#endif
595
 
      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
596
 
      __yy_memcpy ((char *)yyss, (char *)yyss1,
597
 
                   size * (unsigned int) sizeof (*yyssp));
598
 
      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
599
 
      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
600
 
                   size * (unsigned int) sizeof (*yyvsp));
601
 
#ifdef YYLSP_NEEDED
602
 
      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
603
 
      __yy_memcpy ((char *)yyls, (char *)yyls1,
604
 
                   size * (unsigned int) sizeof (*yylsp));
605
 
#endif
606
 
#endif /* no yyoverflow */
607
 
 
608
 
      yyssp = yyss + size - 1;
609
 
      yyvsp = yyvs + size - 1;
610
 
#ifdef YYLSP_NEEDED
611
 
      yylsp = yyls + size - 1;
612
 
#endif
613
 
 
614
 
#if YYDEBUG != 0
615
 
      if (yydebug)
616
 
        fprintf(stderr, "Stack size increased to %d\n", yystacksize);
617
 
#endif
618
 
 
619
 
      if (yyssp >= yyss + yystacksize - 1)
620
 
        YYABORT;
621
 
    }
622
 
 
623
 
#if YYDEBUG != 0
624
 
  if (yydebug)
625
 
    fprintf(stderr, "Entering state %d\n", yystate);
626
 
#endif
627
 
 
628
 
  goto yybackup;
629
 
 yybackup:
630
 
 
631
 
/* Do appropriate processing given the current state.  */
632
 
/* Read a lookahead token if we need one and don't already have one.  */
633
 
/* yyresume: */
634
 
 
635
 
  /* First try to decide what to do without reference to lookahead token.  */
636
 
 
637
 
  yyn = yypact[yystate];
638
 
  if (yyn == YYFLAG)
639
 
    goto yydefault;
640
 
 
641
 
  /* Not known => get a lookahead token if don't already have one.  */
642
 
 
643
 
  /* yychar is either YYEMPTY or YYEOF
644
 
     or a valid token in external form.  */
645
 
 
646
 
  if (yychar == YYEMPTY)
647
 
    {
648
 
#if YYDEBUG != 0
649
 
      if (yydebug)
650
 
        fprintf(stderr, "Reading a token: ");
651
 
#endif
652
 
      yychar = YYLEX;
653
 
    }
654
 
 
655
 
  /* Convert token to internal form (in yychar1) for indexing tables with */
656
 
 
657
 
  if (yychar <= 0)              /* This means end of input. */
658
 
    {
659
 
      yychar1 = 0;
660
 
      yychar = YYEOF;           /* Don't call YYLEX any more */
661
 
 
662
 
#if YYDEBUG != 0
663
 
      if (yydebug)
664
 
        fprintf(stderr, "Now at end of input.\n");
665
 
#endif
666
 
    }
667
 
  else
668
 
    {
669
 
      yychar1 = YYTRANSLATE(yychar);
670
 
 
671
 
#if YYDEBUG != 0
672
 
      if (yydebug)
673
 
        {
674
 
          fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
675
 
          /* Give the individual parser a way to print the precise meaning
676
 
             of a token, for further debugging info.  */
677
 
#ifdef YYPRINT
678
 
          YYPRINT (stderr, yychar, yylval);
679
 
#endif
680
 
          fprintf (stderr, ")\n");
681
 
        }
682
 
#endif
683
 
    }
684
 
 
685
 
  yyn += yychar1;
686
 
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
687
 
    goto yydefault;
688
 
 
689
 
  yyn = yytable[yyn];
690
 
 
691
 
  /* yyn is what to do for this token type in this state.
692
 
     Negative => reduce, -yyn is rule number.
693
 
     Positive => shift, yyn is new state.
694
 
       New state is final state => don't bother to shift,
695
 
       just return success.
696
 
     0, or most negative number => error.  */
697
 
 
698
 
  if (yyn < 0)
699
 
    {
700
 
      if (yyn == YYFLAG)
701
 
        goto yyerrlab;
702
 
      yyn = -yyn;
703
 
      goto yyreduce;
704
 
    }
705
 
  else if (yyn == 0)
706
 
    goto yyerrlab;
707
 
 
708
 
  if (yyn == YYFINAL)
709
 
    YYACCEPT;
710
 
 
711
 
  /* Shift the lookahead token.  */
712
 
 
713
 
#if YYDEBUG != 0
714
 
  if (yydebug)
715
 
    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
716
 
#endif
717
 
 
718
 
  /* Discard the token being shifted unless it is eof.  */
719
 
  if (yychar != YYEOF)
720
 
    yychar = YYEMPTY;
721
 
 
722
 
  *++yyvsp = yylval;
723
 
#ifdef YYLSP_NEEDED
724
 
  *++yylsp = yylloc;
725
 
#endif
726
 
 
727
 
  /* count tokens shifted since error; after three, turn off error status.  */
728
 
  if (yyerrstatus) yyerrstatus--;
729
 
 
730
 
  yystate = yyn;
731
 
  goto yynewstate;
732
 
 
733
 
/* Do the default action for the current state.  */
734
 
yydefault:
735
 
 
736
 
  yyn = yydefact[yystate];
737
 
  if (yyn == 0)
738
 
    goto yyerrlab;
739
 
 
740
 
/* Do a reduction.  yyn is the number of a rule to reduce with.  */
741
 
yyreduce:
742
 
  yylen = yyr2[yyn];
743
 
  if (yylen > 0)
744
 
    yyval = yyvsp[1-yylen]; /* implement default value of the action */
745
 
 
746
 
#if YYDEBUG != 0
747
 
  if (yydebug)
748
 
    {
749
 
      int i;
750
 
 
751
 
      fprintf (stderr, "Reducing via rule %d (line %d), ",
752
 
               yyn, yyrline[yyn]);
753
 
 
754
 
      /* Print the symbols being reduced, and their result.  */
755
 
      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
756
 
        fprintf (stderr, "%s ", yytname[yyrhs[i]]);
757
 
      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
758
 
    }
759
 
#endif
760
 
 
761
 
 
762
 
  switch (yyn) {
763
 
 
764
 
case 6:
765
 
#line 129 "po-gram-gen.y"
766
 
{
767
 
                   po_callback_domain (yyvsp[0].string.string);
768
 
                ;
769
 
    break;}
770
 
case 7:
771
 
#line 136 "po-gram-gen.y"
772
 
{
773
 
                  check_obsolete (yyvsp[-3].pos, yyvsp[-2].string);
774
 
                  check_obsolete (yyvsp[-3].pos, yyvsp[-1].pos);
775
 
                  check_obsolete (yyvsp[-3].pos, yyvsp[0].string);
776
 
                  if (!yyvsp[-3].pos.obsolete || pass_obsolete_entries)
777
 
                    po_callback_message (yyvsp[-2].string.string, &yyvsp[-3].pos.pos, NULL,
778
 
                                         yyvsp[0].string.string, strlen (yyvsp[0].string.string) + 1, &yyvsp[-1].pos.pos);
779
 
                  else
780
 
                    {
781
 
                      free (yyvsp[-2].string.string);
782
 
                      free (yyvsp[0].string.string);
783
 
                    }
784
 
                ;
785
 
    break;}
786
 
case 8:
787
 
#line 150 "po-gram-gen.y"
788
 
{
789
 
                  check_obsolete (yyvsp[-3].pos, yyvsp[-2].string);
790
 
                  check_obsolete (yyvsp[-3].pos, yyvsp[-1].string);
791
 
                  check_obsolete (yyvsp[-3].pos, yyvsp[0].rhs);
792
 
                  if (!yyvsp[-3].pos.obsolete || pass_obsolete_entries)
793
 
                    po_callback_message (yyvsp[-2].string.string, &yyvsp[-3].pos.pos, yyvsp[-1].string.string,
794
 
                                         yyvsp[0].rhs.rhs.msgstr, yyvsp[0].rhs.rhs.msgstr_len, &yyvsp[0].rhs.pos);
795
 
                  else
796
 
                    {
797
 
                      free (yyvsp[-2].string.string);
798
 
                      free (yyvsp[-1].string.string);
799
 
                      free (yyvsp[0].rhs.rhs.msgstr);
800
 
                    }
801
 
                ;
802
 
    break;}
803
 
case 9:
804
 
#line 165 "po-gram-gen.y"
805
 
{
806
 
                  check_obsolete (yyvsp[-2].pos, yyvsp[-1].string);
807
 
                  check_obsolete (yyvsp[-2].pos, yyvsp[0].string);
808
 
                  po_gram_error_at_line (&yyvsp[-2].pos.pos, _("missing `msgstr[]' section"));
809
 
                  free (yyvsp[-1].string.string);
810
 
                  free (yyvsp[0].string.string);
811
 
                ;
812
 
    break;}
813
 
case 10:
814
 
#line 173 "po-gram-gen.y"
815
 
{
816
 
                  check_obsolete (yyvsp[-2].pos, yyvsp[-1].string);
817
 
                  check_obsolete (yyvsp[-2].pos, yyvsp[0].rhs);
818
 
                  po_gram_error_at_line (&yyvsp[-2].pos.pos, _("missing `msgid_plural' section"));
819
 
                  free (yyvsp[-1].string.string);
820
 
                  free (yyvsp[0].rhs.rhs.msgstr);
821
 
                ;
822
 
    break;}
823
 
case 11:
824
 
#line 181 "po-gram-gen.y"
825
 
{
826
 
                  check_obsolete (yyvsp[-1].pos, yyvsp[0].string);
827
 
                  po_gram_error_at_line (&yyvsp[-1].pos.pos, _("missing `msgstr' section"));
828
 
                  free (yyvsp[0].string.string);
829
 
                ;
830
 
    break;}
831
 
case 12:
832
 
#line 190 "po-gram-gen.y"
833
 
{
834
 
                  check_obsolete (yyvsp[-1].pos, yyvsp[0].string);
835
 
                  plural_counter = 0;
836
 
                  yyval.string.string = yyvsp[0].string.string;
837
 
                  yyval.string.pos = yyvsp[-1].pos.pos;
838
 
                  yyval.string.obsolete = yyvsp[-1].pos.obsolete;
839
 
                ;
840
 
    break;}
841
 
case 13:
842
 
#line 201 "po-gram-gen.y"
843
 
{
844
 
                  yyval.rhs = yyvsp[0].rhs;
845
 
                ;
846
 
    break;}
847
 
case 14:
848
 
#line 205 "po-gram-gen.y"
849
 
{
850
 
                  check_obsolete (yyvsp[-1].rhs, yyvsp[0].rhs);
851
 
                  yyval.rhs.rhs.msgstr = (char *) xmalloc (yyvsp[-1].rhs.rhs.msgstr_len + yyvsp[0].rhs.rhs.msgstr_len);
852
 
                  memcpy (yyval.rhs.rhs.msgstr, yyvsp[-1].rhs.rhs.msgstr, yyvsp[-1].rhs.rhs.msgstr_len);
853
 
                  memcpy (yyval.rhs.rhs.msgstr + yyvsp[-1].rhs.rhs.msgstr_len, yyvsp[0].rhs.rhs.msgstr, yyvsp[0].rhs.rhs.msgstr_len);
854
 
                  yyval.rhs.rhs.msgstr_len = yyvsp[-1].rhs.rhs.msgstr_len + yyvsp[0].rhs.rhs.msgstr_len;
855
 
                  free (yyvsp[-1].rhs.rhs.msgstr);
856
 
                  free (yyvsp[0].rhs.rhs.msgstr);
857
 
                  yyval.rhs.pos = yyvsp[-1].rhs.pos;
858
 
                  yyval.rhs.obsolete = yyvsp[-1].rhs.obsolete;
859
 
                ;
860
 
    break;}
861
 
case 15:
862
 
#line 220 "po-gram-gen.y"
863
 
{
864
 
                  check_obsolete (yyvsp[-4].pos, yyvsp[-3].pos);
865
 
                  check_obsolete (yyvsp[-4].pos, yyvsp[-2].number);
866
 
                  check_obsolete (yyvsp[-4].pos, yyvsp[-1].pos);
867
 
                  check_obsolete (yyvsp[-4].pos, yyvsp[0].string);
868
 
                  if (yyvsp[-2].number.number != plural_counter)
869
 
                    {
870
 
                      if (plural_counter == 0)
871
 
                        po_gram_error_at_line (&yyvsp[-4].pos.pos, _("first plural form has nonzero index"));
872
 
                      else
873
 
                        po_gram_error_at_line (&yyvsp[-4].pos.pos, _("plural form has wrong index"));
874
 
                    }
875
 
                  plural_counter++;
876
 
                  yyval.rhs.rhs.msgstr = yyvsp[0].string.string;
877
 
                  yyval.rhs.rhs.msgstr_len = strlen (yyvsp[0].string.string) + 1;
878
 
                  yyval.rhs.pos = yyvsp[-4].pos.pos;
879
 
                  yyval.rhs.obsolete = yyvsp[-4].pos.obsolete;
880
 
                ;
881
 
    break;}
882
 
case 16:
883
 
#line 242 "po-gram-gen.y"
884
 
{
885
 
                  yyval.string = yyvsp[0].string;
886
 
                ;
887
 
    break;}
888
 
case 17:
889
 
#line 246 "po-gram-gen.y"
890
 
{
891
 
                  size_t len1;
892
 
                  size_t len2;
893
 
 
894
 
                  check_obsolete (yyvsp[-1].string, yyvsp[0].string);
895
 
                  len1 = strlen (yyvsp[-1].string.string);
896
 
                  len2 = strlen (yyvsp[0].string.string);
897
 
                  yyval.string.string = (char *) xmalloc (len1 + len2 + 1);
898
 
                  stpcpy (stpcpy (yyval.string.string, yyvsp[-1].string.string), yyvsp[0].string.string);
899
 
                  free (yyvsp[-1].string.string);
900
 
                  free (yyvsp[0].string.string);
901
 
                  yyval.string.pos = yyvsp[-1].string.pos;
902
 
                  yyval.string.obsolete = yyvsp[-1].string.obsolete;
903
 
                ;
904
 
    break;}
905
 
case 18:
906
 
#line 264 "po-gram-gen.y"
907
 
{
908
 
                  po_callback_comment (yyvsp[0].string.string);
909
 
                ;
910
 
    break;}
911
 
}
912
 
   /* the action file gets copied in in place of this dollarsign */
913
 
#line 543 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple"
914
 
 
915
 
  yyvsp -= yylen;
916
 
  yyssp -= yylen;
917
 
#ifdef YYLSP_NEEDED
918
 
  yylsp -= yylen;
919
 
#endif
920
 
 
921
 
#if YYDEBUG != 0
922
 
  if (yydebug)
923
 
    {
924
 
      short *ssp1 = yyss - 1;
925
 
      fprintf (stderr, "state stack now");
926
 
      while (ssp1 != yyssp)
927
 
        fprintf (stderr, " %d", *++ssp1);
928
 
      fprintf (stderr, "\n");
929
 
    }
930
 
#endif
931
 
 
932
 
  *++yyvsp = yyval;
933
 
 
934
 
#ifdef YYLSP_NEEDED
935
 
  yylsp++;
936
 
  if (yylen == 0)
937
 
    {
938
 
      yylsp->first_line = yylloc.first_line;
939
 
      yylsp->first_column = yylloc.first_column;
940
 
      yylsp->last_line = (yylsp-1)->last_line;
941
 
      yylsp->last_column = (yylsp-1)->last_column;
942
 
      yylsp->text = 0;
943
 
    }
944
 
  else
945
 
    {
946
 
      yylsp->last_line = (yylsp+yylen-1)->last_line;
947
 
      yylsp->last_column = (yylsp+yylen-1)->last_column;
948
 
    }
949
 
#endif
950
 
 
951
 
  /* Now "shift" the result of the reduction.
952
 
     Determine what state that goes to,
953
 
     based on the state we popped back to
954
 
     and the rule number reduced by.  */
955
 
 
956
 
  yyn = yyr1[yyn];
957
 
 
958
 
  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
959
 
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
960
 
    yystate = yytable[yystate];
961
 
  else
962
 
    yystate = yydefgoto[yyn - YYNTBASE];
963
 
 
964
 
  goto yynewstate;
965
 
 
966
 
yyerrlab:   /* here on detecting error */
967
 
 
968
 
  if (! yyerrstatus)
969
 
    /* If not already recovering from an error, report this error.  */
970
 
    {
971
 
      ++yynerrs;
972
 
 
973
 
#ifdef YYERROR_VERBOSE
974
 
      yyn = yypact[yystate];
975
 
 
976
 
      if (yyn > YYFLAG && yyn < YYLAST)
977
 
        {
978
 
          int size = 0;
979
 
          char *msg;
980
 
          int x, count;
981
 
 
982
 
          count = 0;
983
 
          /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
984
 
          for (x = (yyn < 0 ? -yyn : 0);
985
 
               x < (sizeof(yytname) / sizeof(char *)); x++)
986
 
            if (yycheck[x + yyn] == x)
987
 
              size += strlen(yytname[x]) + 15, count++;
988
 
          msg = (char *) malloc(size + 15);
989
 
          if (msg != 0)
990
 
            {
991
 
              strcpy(msg, "parse error");
992
 
 
993
 
              if (count < 5)
994
 
                {
995
 
                  count = 0;
996
 
                  for (x = (yyn < 0 ? -yyn : 0);
997
 
                       x < (sizeof(yytname) / sizeof(char *)); x++)
998
 
                    if (yycheck[x + yyn] == x)
999
 
                      {
1000
 
                        strcat(msg, count == 0 ? ", expecting `" : " or `");
1001
 
                        strcat(msg, yytname[x]);
1002
 
                        strcat(msg, "'");
1003
 
                        count++;
1004
 
                      }
1005
 
                }
1006
 
              yyerror(msg);
1007
 
              free(msg);
1008
 
            }
1009
 
          else
1010
 
            yyerror ("parse error; also virtual memory exceeded");
1011
 
        }
1012
 
      else
1013
 
#endif /* YYERROR_VERBOSE */
1014
 
        yyerror("parse error");
1015
 
    }
1016
 
 
1017
 
  goto yyerrlab1;
1018
 
yyerrlab1:   /* here on error raised explicitly by an action */
1019
 
 
1020
 
  if (yyerrstatus == 3)
1021
 
    {
1022
 
      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
1023
 
 
1024
 
      /* return failure if at end of input */
1025
 
      if (yychar == YYEOF)
1026
 
        YYABORT;
1027
 
 
1028
 
#if YYDEBUG != 0
1029
 
      if (yydebug)
1030
 
        fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
1031
 
#endif
1032
 
 
1033
 
      yychar = YYEMPTY;
1034
 
    }
1035
 
 
1036
 
  /* Else will try to reuse lookahead token
1037
 
     after shifting the error token.  */
1038
 
 
1039
 
  yyerrstatus = 3;              /* Each real token shifted decrements this */
1040
 
 
1041
 
  goto yyerrhandle;
1042
 
 
1043
 
yyerrdefault:  /* current state does not do anything special for the error token. */
1044
 
 
1045
 
#if 0
1046
 
  /* This is wrong; only states that explicitly want error tokens
1047
 
     should shift them.  */
1048
 
  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
1049
 
  if (yyn) goto yydefault;
1050
 
#endif
1051
 
 
1052
 
yyerrpop:   /* pop the current state because it cannot handle the error token */
1053
 
 
1054
 
  if (yyssp == yyss) YYABORT;
1055
 
  yyvsp--;
1056
 
  yystate = *--yyssp;
1057
 
#ifdef YYLSP_NEEDED
1058
 
  yylsp--;
1059
 
#endif
1060
 
 
1061
 
#if YYDEBUG != 0
1062
 
  if (yydebug)
1063
 
    {
1064
 
      short *ssp1 = yyss - 1;
1065
 
      fprintf (stderr, "Error: state stack now");
1066
 
      while (ssp1 != yyssp)
1067
 
        fprintf (stderr, " %d", *++ssp1);
1068
 
      fprintf (stderr, "\n");
1069
 
    }
1070
 
#endif
1071
 
 
1072
 
yyerrhandle:
1073
 
 
1074
 
  yyn = yypact[yystate];
1075
 
  if (yyn == YYFLAG)
1076
 
    goto yyerrdefault;
1077
 
 
1078
 
  yyn += YYTERROR;
1079
 
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1080
 
    goto yyerrdefault;
1081
 
 
1082
 
  yyn = yytable[yyn];
1083
 
  if (yyn < 0)
1084
 
    {
1085
 
      if (yyn == YYFLAG)
1086
 
        goto yyerrpop;
1087
 
      yyn = -yyn;
1088
 
      goto yyreduce;
1089
 
    }
1090
 
  else if (yyn == 0)
1091
 
    goto yyerrpop;
1092
 
 
1093
 
  if (yyn == YYFINAL)
1094
 
    YYACCEPT;
1095
 
 
1096
 
#if YYDEBUG != 0
1097
 
  if (yydebug)
1098
 
    fprintf(stderr, "Shifting error token, ");
1099
 
#endif
1100
 
 
1101
 
  *++yyvsp = yylval;
1102
 
#ifdef YYLSP_NEEDED
1103
 
  *++yylsp = yylloc;
1104
 
#endif
1105
 
 
1106
 
  yystate = yyn;
1107
 
  goto yynewstate;
1108
 
 
1109
 
 yyacceptlab:
1110
 
  /* YYACCEPT comes here.  */
1111
 
  if (yyfree_stacks)
1112
 
    {
1113
 
      free (yyss);
1114
 
      free (yyvs);
1115
 
#ifdef YYLSP_NEEDED
1116
 
      free (yyls);
1117
 
#endif
1118
 
    }
1119
 
  return 0;
1120
 
 
1121
 
 yyabortlab:
1122
 
  /* YYABORT comes here.  */
1123
 
  if (yyfree_stacks)
1124
 
    {
1125
 
      free (yyss);
1126
 
      free (yyvs);
1127
 
#ifdef YYLSP_NEEDED
1128
 
      free (yyls);
1129
 
#endif
1130
 
    }
1131
 
  return 1;
1132
 
}
1133
 
#line 268 "po-gram-gen.y"