-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsymbol.h
78 lines (54 loc) · 2.23 KB
/
symbol.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/* =====[ symbol.h ]=========================================================
Description:
Notes: To use it there are two metods: as definition (EXPORT)
as prototyping. (IMPORT)
If EXPORT is defined, we define and initialize variables,
otherwise we supply prototypes.
If we want to initialize, it is done like:
int this variable
#ifdef EXPORT
= FALSE
#endif
; !!!! note the semicolon !!!!
EXPORT is undefined by this process, for the next include file
it should be stated again.
REV DATE BY DESCRIPTION
---- -------- ---------- --------------------------------------
0.00 mm/dd/95 Peter Glen Initial version.
======================================================================= */
#ifndef symbol_defined
#define symbol_defined
#ifdef EXPORT
#define EXTERN
#else
#define EXTERN extern
#endif
/* -------- Defines: ----------------------------------------------------- */
/* -------- Macros: ------------------------------------------------------ */
typedef struct Symbol { /* symbol table entry */
char *name ;
short type ; /* VAR, BLTIN, UNDEF */
union {
int len; /* if str */
char *str; /* if str */
char cval; /* if VAR */
int ival; /* if VAR */
long lval; /* if VAR */
double val; /* if VAR */
double (*ptr)() ; /* if BUILTIN */
int (*iptr)() ; /* if IBUILTIN */
} u ;
struct Symbol *next ;
} Symbol ;
/* -------- Protos ------------------------------------------------------- */
void init_sym(void);
void dump_sym(void);
Symbol *lookup_sym(char *s);
Symbol *install_sym(char *s, int t, double d);
char *emalloc(unsigned n);
/* -------- Declarations: ------------------------------------------------ */
/* -------- Definitions: ------------------------------------------------- */
#undef EXTERN
#undef EXPORT
#endif
/* EOF */