xref: /original-bsd/usr.bin/pascal/pdx/sym.h (revision 6b7db209)
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