#!/usr/local/bin/perl

$num = 0;

print "#ifndef PCN\n\n";

while (<>)
{
    if (/^\s*$/)
    {
	print;
    }
    elsif (/^([A-Z_]+)\s*$/)
    {
	$nspaces = 20 - length($1);
	$spaces = ' ' x $nspaces;
	print "#define TAG_$1$spaces$num\n";

	$tags[$num] = $1;
	$spaces[$num] = $spaces;
	$num++;
    }
    else
    {
	print "/*\n * $_ */\n";

    }
}

print "\n";
for ($i = 0; $i < @tags; $i++)
{
    print "#define D_TAG_$tags[$i] $spaces[$i] _p_co_new_tag(TAG_$tags[$i])\n";
}

print "\n";
print "static char *tagnames[] = {\n";
for ($i = 0; $i < @tags; $i++)
{
    print "    \"$tags[$i]\", $spaces[$i]/* $i */\n";
}
print "    (char *) 0, \n";
print "};\n\n";

print "static int num_tags = $num;\n";

print "\n#else /* PCN*/\n";

print "\n";

for ($i = 0; $i < @tags; $i++)
{
    print "#define $tags[$i] \"$tags[$i]\"\n";
}

print "\n";
print "#define TAGS_TUPLE { \\\n";
for ($i = 0; $i < @tags; $i++)
{
    print "    $tags[$i]";
    print "," if $i < @tags - 1;
    print " \\\n";
}
print "}\n";

print "\n#endif /* PCN*/\n\n";

