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