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 struct expression * new_exp (nargs, op, args) int nargs; enum operator op; struct expression * const *args; { int i; struct expression *newp;   for (i = nargs - 1; i >= 0; i--) if (args[i] == NULL) goto fail;   newp = (struct expression *) malloc (sizeof (*newp)); if (newp != NULL) { newp->nargs = nargs; newp->operation = op; for (i = nargs - 1; i >= 0; i--) newp->val.args[i] = args[i]; return newp; }  fail: for (i = nargs - 1; i >= 0; i--) FREE_EXPRESSION (args[i]);  return NULL; }  static inline struct expression * new_exp_0 (op) 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)
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));/* Allocation of expressions.  */static struct expression *new_exp (nargs, op, args)     int nargs;     enum operator op;     struct expression * const *args;{  int i;  struct expression *newp;  /* If any of the argument could not be malloc'ed, just return NULL.  */  for (i = nargs - 1; i >= 0; i--)    if (args[i] == NULL)      goto fail;  /* Allocate a new expression.  */  newp = (struct expression *) malloc (sizeof (*newp));  if (newp != NULL)    {      newp->nargs = nargs;      newp->operation = op;      for (i = nargs - 1; i >= 0; i--)	newp->val.args[i] = args[i];      return newp;    } fail:  for (i = nargs - 1; i >= 0; i--)    FREE_EXPRESSION (args[i]);  return NULL;}static inline struct expression *new_exp_0 (op)     enum operator op;{  return new_exp (0, op, NULL);}static inline struct expression *new_exp_1 (op, right)     enum operator op;     struct expression *right;{  struct expression *args[1];  args[0] = right;  return new_exp (1, op, args);}