Commit | Line | Data |
---|---|---|
f9e58c14 DF |
1 | /* |
2 | * Copyright (c) 1980 Regents of the University of California. | |
3 | * All rights reserved. The Berkeley software License Agreement | |
4 | * specifies the terms and conditions for redistribution. | |
5 | * | |
35bf0218 | 6 | * @(#)sym.h 5.2 (Berkeley) %G% |
f9e58c14 | 7 | */ |
94a490d6 ML |
8 | |
9 | /* | |
10 | * This header file declares the variables and routines that | |
11 | * are defined within the "sym" subdirectory and that can be | |
12 | * accessed from outside. | |
13 | */ | |
14 | ||
15 | SYM *program; | |
16 | ||
17 | /* | |
18 | * attributes | |
19 | */ | |
20 | ||
21 | char *name(); /* symbol string name */ | |
22 | char *classname(); /* class name of a symbol */ | |
23 | int toknum(); /* token number of reserved word */ | |
24 | int tokval(); /* associated token value */ | |
25 | int size(); /* size in bytes of a type */ | |
26 | SYM *rtype(); /* the reduced type, i.e. no type names */ | |
27 | SYM *container(); /* symbol (block) that contains given symbol */ | |
28 | ADDRESS codeloc(); /* address of the beginning of a function */ | |
29 | ||
30 | /* | |
31 | * predicates | |
32 | */ | |
33 | ||
34 | BOOLEAN isblock(); /* test if a symbol is a block name */ | |
35 | BOOLEAN isbuiltin(); /* test if a symbol is a builtin type */ | |
36 | BOOLEAN isparam(); /* test if a symbol is a parameter */ | |
37 | BOOLEAN isvarparam(); /* test if a symbol is a var parameter */ | |
6d3dd70b | 38 | BOOLEAN isvariable(); /* test if a symbol is a variable */ |
94a490d6 ML |
39 | BOOLEAN isambiguous(); /* test if a symbol name is not unique */ |
40 | BOOLEAN compatible(); /* test to see if two types are compatible */ | |
41 | BOOLEAN should_print(); /* test if a symbol should be printed */ | |
42 | ||
43 | SYM *readsym(); /* read in a symbol from object file */ | |
44 | SYM *which(); /* find the appropriate symbol of given name */ | |
45 | SYM *findsym(); /* find a symbol for a given block */ | |
46 | SYM *findclass(); /* find symbol with given class */ | |
47 | NODE *dot(); /* construct a tree for the dot operator */ | |
48 | NODE *subscript(); /* construct a tree for subscripting */ | |
49 | SYM *treetype(); /* return the type of a tree, checking also */ | |
35bf0218 | 50 | long evalindex(); /* evaluate a subscript index */ |
94a490d6 ML |
51 | unmkstring(); /* free a constant string type */ |
52 | chkboolean(); /* check if a tree is boolean-valued */ | |
53 | printdecl(); /* print out a symbol's declaration */ | |
54 | printparams(); /* print out values of a fn's parameters */ | |
55 | printentry(); /* note entrance of a block */ | |
56 | printexit(); /* note exiting from a block */ | |
57 | printcall(); /* note call of a function */ | |
58 | printval(); /* print an eval result */ | |
59 | printv(); /* print the name and value of a variable */ | |
60 | printwhich(); /* print the full "path" of an identifier */ | |
61 | maketypes(); /* initialize basic types */ | |
62 | make_keyword(); /* create a keyword in a given symbol table */ |