summaryrefslogtreecommitdiff
path: root/intl/plural.c
diff options
context:
space:
mode:
Diffstat (limited to 'intl/plural.c')
-rw-r--r--intl/plural.c86
1 files changed, 37 insertions, 49 deletions
diff --git a/intl/plural.c b/intl/plural.c
index f96eff2cda..92b192c7e8 100644
--- a/intl/plural.c
+++ b/intl/plural.c
@@ -39,34 +39,37 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+/* The bison generated parser uses alloca. AIX 3 forces us to put this
+ declaration at the beginning of the file. The declaration in bison's
+ skeleton file comes too late. This must come before <config.h>
+ because <config.h> may include arbitrary system headers. */
+#if defined _AIX && !defined __GNUC__
+ #pragma alloca
+#endif
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
+#include <stddef.h>
#include <stdlib.h>
-#include "gettextP.h"
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define FREE_EXPRESSION __gettext_free_exp
-#else
-# define FREE_EXPRESSION gettext_free_exp__
-# define __gettextparse gettextparse__
+#include "plural-exp.h"
+
+/* The main function generated by the parser is called __gettextparse,
+ but we want it to be called PLURAL_PARSE. */
+#ifndef _LIBC
+# define __gettextparse PLURAL_PARSE
#endif
#define YYLEX_PARAM &((struct parse_args *) arg)->cp
#define YYPARSE_PARAM arg
-#line 46 "plural.y"
+#line 49 "plural.y"
typedef union {
unsigned long int num;
enum operator op;
struct expression *exp;
} YYSTYPE;
-#line 52 "plural.y"
+#line 55 "plural.y"
/* Prototypes for local functions. */
static struct expression *new_exp PARAMS ((int nargs, enum operator op,
@@ -228,8 +231,8 @@ static const short yyrhs[] = { 17,
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 171, 179, 183, 187, 191, 195, 199, 203, 207, 211,
- 215, 220
+ 174, 182, 186, 190, 194, 198, 202, 206, 210, 214,
+ 218, 223
};
#endif
@@ -296,7 +299,7 @@ static const short yycheck[] = { 1,
#define YYPURE 1
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/share/bison.simple"
+#line 3 "/usr/lib/bison.simple"
/* This file comes from bison-1.28. */
/* Skeleton output parser for bison,
@@ -327,11 +330,6 @@ static const short yycheck[] = { 1,
It was written by Richard Stallman by simplifying the hairy parser
used when %semantic_parser is specified. */
-#ifndef YYPARSE_RETURN_TYPE
-#define YYPARSE_RETURN_TYPE int
-#endif
-
-
#ifndef YYSTACK_USE_ALLOCA
#ifdef alloca
#define YYSTACK_USE_ALLOCA
@@ -515,7 +513,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
#endif
#endif
-#line 222 "/usr/share/bison.simple"
+#line 217 "/usr/lib/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@@ -539,15 +537,13 @@ __yy_memcpy (char *to, char *from, unsigned int count)
/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
#ifdef YYPARSE_PARAM
-YYPARSE_RETURN_TYPE
-yyparse (void *);
+int yyparse (void *);
#else
-YYPARSE_RETURN_TYPE
-yyparse (void);
+int yyparse (void);
#endif
#endif
-YYPARSE_RETURN_TYPE
+int
yyparse(YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
{
@@ -575,9 +571,7 @@ yyparse(YYPARSE_PARAM_ARG)
#endif
int yystacksize = YYINITDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
int yyfree_stacks = 0;
-#endif
#ifdef YYPURE
int yychar;
@@ -662,7 +656,6 @@ yynewstate:
if (yystacksize >= YYMAXDEPTH)
{
yyerror("parser stack overflow");
-#ifndef YYSTACK_USE_ALLOCA
if (yyfree_stacks)
{
free (yyss);
@@ -671,7 +664,6 @@ yynewstate:
free (yyls);
#endif
}
-#endif
return 2;
}
yystacksize *= 2;
@@ -850,7 +842,7 @@ yyreduce:
switch (yyn) {
case 1:
-#line 172 "plural.y"
+#line 175 "plural.y"
{
if (yyvsp[0].exp == NULL)
YYABORT;
@@ -858,75 +850,75 @@ case 1:
;
break;}
case 2:
-#line 180 "plural.y"
+#line 183 "plural.y"
{
yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
;
break;}
case 3:
-#line 184 "plural.y"
+#line 187 "plural.y"
{
yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
;
break;}
case 4:
-#line 188 "plural.y"
+#line 191 "plural.y"
{
yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
;
break;}
case 5:
-#line 192 "plural.y"
+#line 195 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
;
break;}
case 6:
-#line 196 "plural.y"
+#line 199 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
;
break;}
case 7:
-#line 200 "plural.y"
+#line 203 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
;
break;}
case 8:
-#line 204 "plural.y"
+#line 207 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
;
break;}
case 9:
-#line 208 "plural.y"
+#line 211 "plural.y"
{
yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
;
break;}
case 10:
-#line 212 "plural.y"
+#line 215 "plural.y"
{
yyval.exp = new_exp_0 (var);
;
break;}
case 11:
-#line 216 "plural.y"
+#line 219 "plural.y"
{
if ((yyval.exp = new_exp_0 (num)) != NULL)
yyval.exp->val.num = yyvsp[0].num;
;
break;}
case 12:
-#line 221 "plural.y"
+#line 224 "plural.y"
{
yyval.exp = yyvsp[-1].exp;
;
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 554 "/usr/share/bison.simple"
+#line 543 "/usr/lib/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
@@ -1124,7 +1116,6 @@ yyerrhandle:
yyacceptlab:
/* YYACCEPT comes here. */
-#ifndef YYSTACK_USE_ALLOCA
if (yyfree_stacks)
{
free (yyss);
@@ -1133,12 +1124,10 @@ yyerrhandle:
free (yyls);
#endif
}
-#endif
return 0;
yyabortlab:
/* YYABORT comes here. */
-#ifndef YYSTACK_USE_ALLOCA
if (yyfree_stacks)
{
free (yyss);
@@ -1147,10 +1136,9 @@ yyerrhandle:
free (yyls);
#endif
}
-#endif
return 1;
}
-#line 226 "plural.y"
+#line 229 "plural.y"
void