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);