open(INFILE, shift(@ARGV)) or die "Can't open input file";
$output="fuzzlib";

while(<INFILE>) {
    @fields=split /\s+/;
    SWITCH: {
        /^SYMDEF/ && do {
	    open(SYMDEF, "i.symdef");
	    while(<SYMDEF>) {
		next if($_ !~ /^"/);
		@symfields=split /\s+/;
		$val=$symfields[1];
		if($val =~ /'(.)'/) { $val=ord($1); }
		printf("%%%%token \$%s %d\n", $symfields[0], $val);
	    }
	    close(SYMDEF);
	    last SWITCH;
	};

	/^OPDEF/ && do {
	    open(OPDEF, "x.opdef");
	    while(<OPDEF>) {
		@opfields=split /\s+/;
		$nf=scalar(@opfields);
		if($nf>0 && $opfields[0] ne '%') { print $_; }
	    }
	    close(OPDEF);
	    last SWITCH;
	};

	/^\%File:/ && do {
            printf("%% File: $s\n", $output);
            last SWITCH;
        };

        print $_;
    }
}
close(INFILE);
