55 lines
		
	
	
	
		
			972 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			972 B
		
	
	
	
		
			C
		
	
	
	
	
	
static void dumpCover(NODEPTR_TYPE p, int goalnt, int indent) {
 | 
						|
#ifdef TRACE
 | 
						|
	int eruleno = burm_rule(STATE_LABEL(p), goalnt);
 | 
						|
	const short *nts = burm_nts[eruleno];
 | 
						|
	NODEPTR_TYPE kids[10];
 | 
						|
	int i;
 | 
						|
 | 
						|
	for (i = 0; i < indent; i++)
 | 
						|
		fprintf(stderr, " ");
 | 
						|
	fprintf(stderr, "%s\n", burm_string[eruleno]);
 | 
						|
	burm_kids(p, eruleno, kids);
 | 
						|
	for (i = 0; nts[i]; i++)
 | 
						|
	{
 | 
						|
		if (kids[i])
 | 
						|
			dumpCover(kids[i], nts[i], indent + 1);
 | 
						|
		else
 | 
						|
			fprintf(stderr, "failed!\n");
 | 
						|
	}
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
#if 0
 | 
						|
static NODEPTR_TYPE tree(int op, NODEPTR_TYPE l, NODEPTR_TYPE r) {
 | 
						|
	NODEPTR_TYPE p = malloc(sizeof *p);
 | 
						|
 | 
						|
	assert(p);
 | 
						|
	p->op = op;
 | 
						|
	p->kids[0] = l; p->kids[1] = r;
 | 
						|
	return p;
 | 
						|
}
 | 
						|
 | 
						|
int main(void) {
 | 
						|
	NODEPTR_TYPE p;
 | 
						|
 | 
						|
	p = tree(STORE4,
 | 
						|
			tree(ADD4,
 | 
						|
				tree(LABEL4, 0, 0),
 | 
						|
				tree(CONST4, 0, 0)
 | 
						|
			),
 | 
						|
			tree(ADD4,
 | 
						|
				tree(LOAD4,
 | 
						|
					tree(LABEL4, 0, 0),
 | 
						|
					0
 | 
						|
				),
 | 
						|
				tree(CONST4, 0, 0)
 | 
						|
			)
 | 
						|
		);
 | 
						|
	burm_label(p);
 | 
						|
	dumpCover(p, 1, 0);
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
/* vim: set sw=4 ts=4 expandtab : */
 | 
						|
 |