xref: /csrg-svn/usr.bin/pascal/pxp/var.c (revision 3054)
1*3054Smckusic static	char *sccsid = "@(#)var.c	1.2 (Berkeley) 03/07/81";
22867Speter /* Copyright (c) 1979 Regents of the University of California */
32867Speter #
42867Speter /*
52867Speter  * pxp - Pascal execution profiler
62867Speter  *
72867Speter  * Bill Joy UCB
82867Speter  * Version 1.2 January 1979
92867Speter  */
102867Speter 
112867Speter #include "0.h"
122867Speter #include "tree.h"
132867Speter 
14*3054Smckusic STATIC	int varcnt = -1;
152867Speter /*
162867Speter  * Var declaration part
172867Speter  */
182867Speter varbeg(l, vline)
192867Speter 	int l, vline;
202867Speter {
212867Speter 
222867Speter 	line = l;
232867Speter 	if (nodecl)
242867Speter 		printoff();
252867Speter 	puthedr();
262867Speter 	putcm();
272867Speter 	ppnl();
282867Speter 	indent();
292867Speter 	ppkw("var");
302867Speter 	ppgoin(DECL);
312867Speter 	varcnt = 0;
322867Speter 	setline(vline);
332867Speter }
342867Speter 
352867Speter var(vline, vidl, vtype)
362867Speter 	int vline;
372867Speter 	register int *vidl;
382867Speter 	int *vtype;
392867Speter {
402867Speter 
412867Speter 	if (varcnt)
422867Speter 		putcm();
432867Speter 	setline(vline);
442867Speter 	ppitem();
452867Speter 	if (vidl != NIL)
462867Speter 		for (;;) {
472867Speter 			ppid(vidl[1]);
482867Speter 			vidl = vidl[2];
492867Speter 			if (vidl == NIL)
502867Speter 				break;
512867Speter 			ppsep(", ");
522867Speter 		}
532867Speter 	else
542867Speter 		ppid("{identifier list}");
552867Speter 	ppsep(":");
562867Speter 	gtype(vtype);
572867Speter 	ppsep(";");
582867Speter 	setinfo(vline);
592867Speter 	putcml();
602867Speter 	varcnt++;
612867Speter }
622867Speter 
632867Speter varend()
642867Speter {
652867Speter 
662867Speter 	if (varcnt == -1)
672867Speter 		return;
682867Speter 	if (varcnt == 0)
692867Speter 		ppid("{variable decls}");
702867Speter 	ppgoout(DECL);
712867Speter 	varcnt = -1;
722867Speter }
73