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 * 6 * @(#)sym.h 5.3 (Berkeley) 01/03/88 7 */ 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 */ 38 BOOLEAN isvariable(); /* test if a symbol is a variable */ 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 */ 50 long evalindex(); /* evaluate a subscript index */ 51 int unmkstring(); /* free a constant string type */ 52 int chkboolean(); /* check if a tree is boolean-valued */ 53 int printdecl(); /* print out a symbol's declaration */ 54 int printparams(); /* print out values of a fn's parameters */ 55 int printentry(); /* note entrance of a block */ 56 int printexit(); /* note exiting from a block */ 57 int printcall(); /* note call of a function */ 58 int printval(); /* print an eval result */ 59 int printv(); /* print the name and value of a variable */ 60 int printwhich(); /* print the full "path" of an identifier */ 61 int maketypes(); /* initialize basic types */ 62 int make_keyword(); /* create a keyword in a given symbol table */ 63