xref: /original-bsd/usr.bin/pascal/pdx/sym.h (revision 7d595439)
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) 06/06/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 */
63