<?php 
require 'CompactTokenizer.php';

function expand($elem){
    global $st,$dom;
    $st->skip('[');
    while($st->getToken()=='@'){   // process attributes
        $attName=$st->skip("@");
        $st->nextToken();
        $elem->setAttribute("$attName",$st->skip("["));
        $st->nextToken();
        $st->skip("]");
    }
    while ($st->getToken()!=false && $st->getToken()!="]") { 
        $s = trim($st->getToken()); // process children
        $st->nextToken();
        if($st->getToken()=="[")
            expand($elem->appendChild($dom->createElement($s)));
        else
            $elem->appendChild($dom->createTextNode($s));
    }
    $st->skip("]");
}

$st = new CompactTokenizer('php://stdin');
$dom = new DOMDocument();
$rootname = $st->getToken();
while($st->nextToken()!='[')
    $rootname=$st->getToken();

expand($dom->appendChild($dom->createElement($rootname)));

$dom->formatOutput=true;
print $dom->saveXML();
?>