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