#line 1 "plural.y"
/* Expression parsing for plural form selection.
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
This program is free software; you can redistribute it and/or modify it
You should have received a copy of the GNU Library General Public
License along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA. */
/* The bison generated parser uses alloca. AIX 3 forces us to put this
# 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 53 "plural.y"
+#line 49 "plural.y"
#ifndef YYSTYPE
typedef union {
unsigned long int num;
# define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1
#endif
-#line 59 "plural.y"
+#line 55 "plural.y"
/* Prototypes for local functions. */
-static struct expression *new_exp PARAMS ((int nargs, enum operator op,
- struct expression * const *args));
-static inline struct expression *new_exp_0 PARAMS ((enum operator op));
-static inline struct expression *new_exp_1 PARAMS ((enum operator op,
- struct expression *right));
-static struct expression *new_exp_2 PARAMS ((enum operator op,
- struct expression *left,
- struct expression *right));
-static inline struct expression *new_exp_3 PARAMS ((enum operator op,
- struct expression *bexp,
- struct expression *tbranch,
- struct expression *fbranch));
-static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
-static void yyerror PARAMS ((const char *str));
+static int yylex (YYSTYPE *lval, const char **pexp);
+static void yyerror (const char *str);
/* Allocation of expressions. */
static struct expression *
-new_exp (nargs, op, args)
- int nargs;
- enum operator op;
- struct expression * const *args;
+new_exp (int nargs, enum operator op, struct expression * const *args)
{
int i;
struct expression *newp;
}
static inline struct expression *
-new_exp_0 (op)
- enum operator op;
+new_exp_0 (enum operator op)
{
return new_exp (0, op, NULL);
}
static inline struct expression *
-new_exp_1 (op, right)
- enum operator op;
- struct expression *right;
+new_exp_1 (enum operator op, struct expression *right)
{
struct expression *args[1];
}
static struct expression *
-new_exp_2 (op, left, right)
- enum operator op;
- struct expression *left;
- struct expression *right;
+new_exp_2 (enum operator op, struct expression *left, struct expression *right)
{
struct expression *args[2];
}
static inline struct expression *
-new_exp_3 (op, bexp, tbranch, fbranch)
- enum operator op;
- struct expression *bexp;
- struct expression *tbranch;
- struct expression *fbranch;
+new_exp_3 (enum operator op, struct expression *bexp,
+ struct expression *tbranch, struct expression *fbranch)
{
struct expression *args[3];
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
- 0, 178, 186, 190, 194, 198, 202, 206, 210, 214,
- 218, 222, 227
+ 0, 150, 158, 162, 166, 170, 174, 178, 182, 186,
+ 190, 194, 199
};
#endif
#define YYPURE 1
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/sw/share/bison/bison.simple"
+#line 3 "/home/haible/gnu/arch/linuxlibc6/share/bison/bison.simple"
/* Skeleton output parser for bison,
# endif
#endif
\f
-#line 315 "/sw/share/bison/bison.simple"
+#line 315 "/home/haible/gnu/arch/linuxlibc6/share/bison/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
switch (yyn) {
case 1:
-#line 179 "plural.y"
+#line 151 "plural.y"
{
if (yyvsp[0].exp == NULL)
YYABORT;
}
break;
case 2:
-#line 187 "plural.y"
+#line 159 "plural.y"
{
yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 3:
-#line 191 "plural.y"
+#line 163 "plural.y"
{
yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 4:
-#line 195 "plural.y"
+#line 167 "plural.y"
{
yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 5:
-#line 199 "plural.y"
+#line 171 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 6:
-#line 203 "plural.y"
+#line 175 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 7:
-#line 207 "plural.y"
+#line 179 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 8:
-#line 211 "plural.y"
+#line 183 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 9:
-#line 215 "plural.y"
+#line 187 "plural.y"
{
yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
}
break;
case 10:
-#line 219 "plural.y"
+#line 191 "plural.y"
{
yyval.exp = new_exp_0 (var);
}
break;
case 11:
-#line 223 "plural.y"
+#line 195 "plural.y"
{
if ((yyval.exp = new_exp_0 (num)) != NULL)
yyval.exp->val.num = yyvsp[0].num;
}
break;
case 12:
-#line 228 "plural.y"
+#line 200 "plural.y"
{
yyval.exp = yyvsp[-1].exp;
}
break;
}
-#line 705 "/sw/share/bison/bison.simple"
+#line 705 "/home/haible/gnu/arch/linuxlibc6/share/bison/bison.simple"
\f
yyvsp -= yylen;
#endif
return yyresult;
}
-#line 233 "plural.y"
+#line 205 "plural.y"
void
internal_function
-FREE_EXPRESSION (exp)
- struct expression *exp;
+FREE_EXPRESSION (struct expression *exp)
{
if (exp == NULL)
return;
static int
-yylex (lval, pexp)
- YYSTYPE *lval;
- const char **pexp;
+yylex (YYSTYPE *lval, const char **pexp)
{
const char *exp = *pexp;
int result;
static void
-yyerror (str)
- const char *str;
+yyerror (const char *str)
{
/* Do nothing. We don't print error messages here. */
}