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.1 (Berkeley) 6/6/85 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: evalindex(); /* evaluate a subscript index */ 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 */