xref: /original-bsd/usr.bin/pascal/pxp/lab.c (revision 355d31f8)
1bc19982fSbostic /*-
2*355d31f8Sbostic  * Copyright (c) 1980, 1993
3*355d31f8Sbostic  *	The Regents of the University of California.  All rights reserved.
4bc19982fSbostic  *
5bc19982fSbostic  * %sccs.include.redist.c%
6e111adfaSdist  */
7e111adfaSdist 
8e111adfaSdist #ifndef lint
9*355d31f8Sbostic static char sccsid[] = "@(#)lab.c	8.1 (Berkeley) 06/06/93";
10bc19982fSbostic #endif /* not lint */
11e111adfaSdist 
12814f212bSpeter /*
13814f212bSpeter  * pxp - Pascal execution profiler
14814f212bSpeter  *
15814f212bSpeter  * Bill Joy UCB
16814f212bSpeter  * Version 1.2 January 1979
17814f212bSpeter  */
18814f212bSpeter 
19814f212bSpeter #include "0.h"
20814f212bSpeter 
21814f212bSpeter /*
22814f212bSpeter  * Label declaration part
23814f212bSpeter  */
label(r,l)24814f212bSpeter label(r, l)
25814f212bSpeter 	int *r, l;
26814f212bSpeter {
27814f212bSpeter 	register *ll;
28814f212bSpeter 
29814f212bSpeter 	if (nodecl)
30814f212bSpeter 		printoff();
31814f212bSpeter 	puthedr();
32814f212bSpeter 	setline(l);
33814f212bSpeter 	ppnl();
34814f212bSpeter 	indent();
35814f212bSpeter 	ppkw("label");
36814f212bSpeter 	ppgoin(DECL);
37814f212bSpeter 	ppnl();
38814f212bSpeter 	indent();
39814f212bSpeter 	ppbra(NIL);
40814f212bSpeter 	ll = r;
41814f212bSpeter 	if (ll != NIL)
42814f212bSpeter 		for (;;) {
43814f212bSpeter 			pplab(ll[1]);
44814f212bSpeter 			ll = ll[2];
45814f212bSpeter 			if (ll == NIL)
46814f212bSpeter 				break;
47814f212bSpeter 			ppsep(", ");
48814f212bSpeter 		}
49814f212bSpeter 	else
50814f212bSpeter 		ppid("{label list}");
51814f212bSpeter 	ppket(";");
52814f212bSpeter 	putcml();
53814f212bSpeter 	ppgoout(DECL);
54814f212bSpeter }
55814f212bSpeter 
56814f212bSpeter /*
57814f212bSpeter  * Goto statement
58814f212bSpeter  */
gotoop(s)59814f212bSpeter gotoop(s)
60814f212bSpeter 	char *s;
61814f212bSpeter {
62814f212bSpeter 
63814f212bSpeter 	gocnt++;
64814f212bSpeter 	ppkw("goto");
65814f212bSpeter 	ppspac();
66814f212bSpeter 	pplab(s);
67814f212bSpeter }
68814f212bSpeter 
69814f212bSpeter /*
70814f212bSpeter  * A label on a statement
71814f212bSpeter  */
labeled(s)72814f212bSpeter labeled(s)
73814f212bSpeter 	char *s;
74814f212bSpeter {
75814f212bSpeter 
76814f212bSpeter 	linopr();
77814f212bSpeter 	indentlab();
78814f212bSpeter 	pplab(s);
79814f212bSpeter 	ppsep(":");
80814f212bSpeter }
81