<?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();
?>