xref: /csrg-svn/usr.bin/pascal/pxp/call.c (revision 2849)
1*2849Speter static	char *sccsid = "@(#)call.c	1.1 (Berkeley) 03/02/81";
2*2849Speter /* Copyright (c) 1979 Regents of the University of California */
3*2849Speter #
4*2849Speter /*
5*2849Speter  * pxp - Pascal execution profiler
6*2849Speter  *
7*2849Speter  * Bill Joy UCB
8*2849Speter  * Version 1.2 January 1979
9*2849Speter  */
10*2849Speter 
11*2849Speter #include "0.h"
12*2849Speter #include "tree.h"
13*2849Speter 
14*2849Speter /*
15*2849Speter  * Procedure or function call
16*2849Speter  */
17*2849Speter call(p, argv)
18*2849Speter 	register int *argv;
19*2849Speter {
20*2849Speter 	register *al;
21*2849Speter 
22*2849Speter 	ppid(p);
23*2849Speter 	if (argv != NIL) {
24*2849Speter 		ppbra("(("+1);	/* xaproposstrange
25*2849Speter  */
26*2849Speter 		for (;;) {
27*2849Speter 			al = argv[1];
28*2849Speter 			if (al[0] == T_WEXP) {
29*2849Speter 				rvalue(al[1], NIL);
30*2849Speter 				if (al[2] != NIL) {
31*2849Speter 					ppsep(": ");
32*2849Speter 					rvalue(al[2], NIL);
33*2849Speter 				}
34*2849Speter 				if (al[3] == OCT || al[3] == HEX) {
35*2849Speter 					ppspac();
36*2849Speter 					ppkw(al[3] == OCT ? "oct" : "hex");
37*2849Speter 				} else if (al[3] != NIL) {
38*2849Speter 					ppsep(": ");
39*2849Speter 					rvalue(al[3], NIL);
40*2849Speter 				}
41*2849Speter 			} else
42*2849Speter 				rvalue(argv[1], NIL);
43*2849Speter 			argv = argv[2];
44*2849Speter 			if (argv == NIL)
45*2849Speter 				break;
46*2849Speter 			ppsep(", ");
47*2849Speter 		}
48*2849Speter 		ppket(")");
49*2849Speter 	}
50*2849Speter }
51