#!/usr/bin/perl

sub popraw
{
	$_ = $_[1];
	/([^\\]|\\[^[])*\\\[/g or return "$_[0]$_\n";
	my $przed = $_[0] . substr ($_, 0, pos() - 2);
	$_ = substr ($_, pos());
	my %przedrostki = ();
	until (/^\\\]/g)
	{
		if (/^()([^\\\200-\377]|\\.)/g
		|| /^([\300-\337])([\200-\277])/g
		|| /^([\340-\357][\200-\277])([\200-\277])/g)
		{
			$przedrostki{$1} .= $2;
			$_ = substr ($_, pos());
		}
		else {die "Syntax error or bad UTF-8 at line $.\n"}
	}
	$reszta = substr ($_, pos());
	return map
		popraw ("$przed$_\\\[$przedrostki{$_}\\\]", $reszta),
		keys %przedrostki
}

while (<>)
{
	chomp;
	print /^#/ ? "$_\n" : popraw ("", $_);
}
