123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /* $Id$ */
- /* Symbol table data structure.
- Each identifier structure refers to a list of possible meanings of this
- identifier. Each of these meanings is represented by a "symbol" structure.
- */
- typedef union constant { /* depends on type */
- long co_ival;
- double co_rval;
- char *co_sval;
- char *co_setval;
- } t_const, *p_const;
- typedef struct name {
- long nm_value; /* address or offset */
- struct scope *nm_scope; /* for names that define a scope */
- } t_name, *p_name;
- typedef struct symbol {
- struct symbol *sy_next; /* link to next meaning */
- struct symbol *sy_prev_sc; /* link to previous decl in scope */
- struct type *sy_type; /* type of symbol */
- int sy_class;
- #define CONST 0x0001
- #define TYPE 0x0002
- #define TAG 0x0004
- #define MODULE 0x0008
- #define PROC 0x0010
- #define FUNCTION 0x0020
- #define VAR 0x0040
- #define REGVAR 0x0080
- #define LOCVAR 0x0100
- #define VARPAR 0x0200
- #define FIELD 0x0400
- #define FILESYM 0x0800 /* a filename */
- #define FILELINK 0x1000 /* a filename without its suffix */
- #define LBOUND 0x2000 /* lower bound of array descriptor */
- #define UBOUND 0x4000 /* upper bound of array descriptor */
- struct idf *sy_idf; /* reference back to its idf structure */
- struct scope *sy_scope; /* scope in which this symbol resides */
- union {
- t_const syv_const; /* CONST */
- t_name syv_name;
- struct file *syv_file; /* for FILESYM */
- struct symbol *syv_fllink; /* for FILELINK */
- struct symbol *syv_descr; /* for LBOUND and UBOUND */
- struct fields *syv_field;
- } sy_v;
- #define sy_const sy_v.syv_const
- #define sy_name sy_v.syv_name
- #define sy_file sy_v.syv_file
- #define sy_filelink sy_v.syv_fllink
- #define sy_field sy_v.syv_field
- #define sy_descr sy_v.syv_descr
- } t_symbol, *p_symbol;
- /* ALLOCDEF "symbol" 50 */
- extern p_symbol NewSymbol(), Lookup(), Lookfromscope(), add_file();
- extern p_symbol identify();
- extern p_symbol currfile, listfile;
|