|
|
1.1 root 1: /*
2: * The typedef type is an enum used to store the type of a symbol.
3: */
4:
5: typedef enum {
6: UNDEFINED, SCALAR, ARRAY, FUNCTION
7: } type;
8:
9:
10: /*
11: * The typedef func is a struct used to hold all the information
12: * about a function definition.
13: */
14:
15: typedef struct {
16: code *body; /* body of function */
17: int nparams; /* number of parameters */
18: int nautos; /* number of auto variables */
19: int fcsize; /* size of function body */
20: type *types; /* vector of parameter and auto types */
21: } func;
22:
23:
24: /*
25: * The typedef globalv is a union used to store the global value of
26: * a symbol.
27: */
28:
29: typedef union {
30: array arvalue;
31: rvalue rvalue;
32: func fvalue;
33: } globalv;
34:
35:
36: /*
37: * The typedef dicent is a struct used to maintain a string table which
38: * contains all identifiers ever seen.
39: */
40:
41: typedef struct dicent {
42: struct dicent *left, *right;
43: type globalt, localt; /* global and local type */
44: globalv globalv;
45: int localv; /* frame pointer offset */
46: char word[];
47: } dicent;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.