xref: /csrg-svn/usr.bin/pascal/pxp/lab.c (revision 2856)
1*2856Speter static	char *sccsid = "@(#)lab.c	1.1 (Berkeley) 03/02/81";
2*2856Speter /* Copyright (c) 1979 Regents of the University of California */
3*2856Speter #
4*2856Speter /*
5*2856Speter  * pxp - Pascal execution profiler
6*2856Speter  *
7*2856Speter  * Bill Joy UCB
8*2856Speter  * Version 1.2 January 1979
9*2856Speter  */
10*2856Speter 
11*2856Speter #include "0.h"
12*2856Speter 
13*2856Speter /*
14*2856Speter  * Label declaration part
15*2856Speter  */
16*2856Speter label(r, l)
17*2856Speter 	int *r, l;
18*2856Speter {
19*2856Speter 	register *ll;
20*2856Speter 
21*2856Speter 	if (nodecl)
22*2856Speter 		printoff();
23*2856Speter 	puthedr();
24*2856Speter 	setline(l);
25*2856Speter 	ppnl();
26*2856Speter 	indent();
27*2856Speter 	ppkw("label");
28*2856Speter 	ppgoin(DECL);
29*2856Speter 	ppnl();
30*2856Speter 	indent();
31*2856Speter 	ppbra(NIL);
32*2856Speter 	ll = r;
33*2856Speter 	if (ll != NIL)
34*2856Speter 		for (;;) {
35*2856Speter 			pplab(ll[1]);
36*2856Speter 			ll = ll[2];
37*2856Speter 			if (ll == NIL)
38*2856Speter 				break;
39*2856Speter 			ppsep(", ");
40*2856Speter 		}
41*2856Speter 	else
42*2856Speter 		ppid("{label list}");
43*2856Speter 	ppket(";");
44*2856Speter 	putcml();
45*2856Speter 	ppgoout(DECL);
46*2856Speter }
47*2856Speter 
48*2856Speter /*
49*2856Speter  * Goto statement
50*2856Speter  */
51*2856Speter gotoop(s)
52*2856Speter 	char *s;
53*2856Speter {
54*2856Speter 
55*2856Speter 	gocnt++;
56*2856Speter 	ppkw("goto");
57*2856Speter 	ppspac();
58*2856Speter 	pplab(s);
59*2856Speter }
60*2856Speter 
61*2856Speter /*
62*2856Speter  * A label on a statement
63*2856Speter  */
64*2856Speter labeled(s)
65*2856Speter 	char *s;
66*2856Speter {
67*2856Speter 
68*2856Speter 	linopr();
69*2856Speter 	indentlab();
70*2856Speter 	pplab(s);
71*2856Speter 	ppsep(":");
72*2856Speter }
73