open(INFILE, shift(@ARGV)) or die "Can't open input file";
%owner=();
%value=();
$nerrors=0;

while(<INFILE>) {
    @fields=split /\s+/;
    next if($fields[0] ne ':');
    $nf=scalar(@fields);
    $self=$fields[1];
    for($i=2; $i<$nf; $i++) {
	$tag=$fields[$i];
	$val=$i-2;
	if(!exists($owner{$tag})) {
	    $owner{$tag}=$self;
	    $value{$tag}=$val;
	    printf("#define x_%s x_slot[%d]\n", $tag, $val);
	} elsif($value{$tag} != $val) {
	    printf("Conflict over %s: %s --> %d, %s --> %d\n",
		   $tag, $owner{$tag}, $value{$tag}, $self, $val);
	    $nerrors++;
	}
    }
}

close(INFILE);
if($nerrors>0) {
    print "Errors found processing file.";
    exit(1);
}
exit(0);
