예제 #1
0
p1_subr_ret(expptr retexp)
#endif
{

    p1put (P1_SUBR_RET);
    p1_expr (cpexpr(retexp));
} /* p1_subr_ret */
예제 #2
0
p1_for(expptr init, expptr test, expptr inc)
#endif
{
    p1put (P1_FOR);
    p1_expr (init);
    p1_expr (test);
    p1_expr (inc);
} /* p1_for */
예제 #3
0
 void
enddcl(Void)
{
	register struct Entrypoint *ep;
	struct Entrypoint *ep0;
	chainp cp;
	extern char *err_proc;
	static char comblks[] = "common blocks";

	err_proc = comblks;
	docommon();

/* Now the hash table entries for fields of common blocks have STGCOMMON,
   vdcldone, voffset, and varno.  And the common blocks themselves have
   their full sizes in extleng. */

	err_proc = "equivalences";
	doequiv();

	err_proc = comblks;
	docomleng();

/* This implies that entry points in the declarations are buffered in
   entries   but not written out */

	err_proc = "entries";
	if (ep = ep0 = (struct Entrypoint *)revchain((chainp)entries)) {
		/* entries could be 0 in case of an error */
		do doentry(ep);
			while(ep = ep->entnextp);
		entries = (struct Entrypoint *)revchain((chainp)ep0);
		}

	err_proc = 0;
	parstate = INEXEC;
	p1put(P1_PROCODE);
	freetemps();
	if (earlylabs) {
		for(cp = earlylabs = revchain(earlylabs); cp; cp = cp->nextp)
			p1_label((long)cp->datap);
		frchain(&earlylabs);
		}
	p1_line_number(lineno); /* for files that start with a MAIN program */
				/* that starts with an executable statement */
}
예제 #4
0
p1comp_goto(expptr index, int count, struct Labelblock **labels)
#endif
{
    struct Constblock c;
    int i;
    register struct Labelblock *L;

    p1put (P1_COMP_GOTO);
    p1_expr (index);

/* Write out a P1_LIST directly, to avoid the overhead of allocating a
   list before it's needed HACK HACK HACK */

    p1putddd (P1_LIST, TLIST, TYUNKNOWN, count);
    c.vtype = TYLONG;
    c.vleng = 0;

    for (i = 0; i < count; i++) {
	L = labels[i];
	L->labused = 1;
	c.Const.ci = L->stateno;
	p1_const(&c);
    } /* for i = 0 */
} /* p1comp_goto */
예제 #5
0
 void
p1for_end(Void)
{
    p1put (P1_ENDFOR);
} /* p1for_end */
예제 #6
0
 void
p1else_end(Void)
{
    p1put (P1_ENDELSE);
} /* p1else_end */
예제 #7
0
 void
p1_endif(Void)
{
    p1put (P1_ENDIF);
} /* p1_endif */
예제 #8
0
 void
p1_else(Void)
{
    p1put (P1_ELSE);
} /* p1_else */
예제 #9
0
p1_elif(expptr expr)
#endif
{
    p1put (P1_ELIF);
    p1_expr (expr);
} /* p1_elif */
예제 #10
0
p1_asgoto(Addrp addrp)
#endif
{
    p1put (P1_ASGOTO);
    p1_addr (addrp);
} /* p1_asgoto */