(root)/
bison-3.8.2/
examples/
c/
mfcalc/
calc.h
       1  /* Functions for mfcalc.   -*- C -*-
       2  
       3     Copyright (C) 1988-1993, 1995, 1998-2015, 2018-2021 Free Software
       4     Foundation, Inc.
       5  
       6     This file is part of Bison, the GNU Compiler Compiler.
       7  
       8     This program is free software: you can redistribute it and/or modify
       9     it under the terms of the GNU General Public License as published by
      10     the Free Software Foundation, either version 3 of the License, or
      11     (at your option) any later version.
      12  
      13     This program is distributed in the hope that it will be useful,
      14     but WITHOUT ANY WARRANTY; without even the implied warranty of
      15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      16     GNU General Public License for more details.
      17  
      18     You should have received a copy of the GNU General Public License
      19     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      20  
      21  /* Function type. */
      22  typedef double (func_t) (double);
      23  
      24  /* Data type for links in the chain of symbols. */
      25  struct symrec
      26  {
      27    char *name;  /* name of symbol */
      28    int type;    /* type of symbol: either VAR or FUN */
      29    union
      30    {
      31      double var;    /* value of a VAR */
      32      func_t *fun;   /* value of a FUN */
      33    } value;
      34    struct symrec *next;  /* link field */
      35  };
      36  
      37  typedef struct symrec symrec;
      38  
      39  /* The symbol table: a chain of 'struct symrec'. */
      40  extern symrec *sym_table;
      41  
      42  symrec *putsym (char const *name, int sym_type);
      43  symrec *getsym (char const *name);