static function getParser($file)
    {
        $parser = new Patchwork_PHP_Parser_Dumper();
        $parser = new Patchwork_PHP_Parser_ShortOpenEcho($parser);
        $parser = new Patchwork_PHP_Parser_Normalizer($parser);
        new Patchwork_PHP_Parser_BracketWatcher($parser);
        new Patchwork_PHP_Parser_CurlyDollarNormalizer($parser);
        new Patchwork_PHP_Parser_ShortArray($parser);
        $parser = new Patchwork_PHP_Parser_BinaryNumber($parser);
        $parser = new Patchwork_PHP_Parser_Backport54Tokens($parser);
        new Patchwork_PHP_Parser_Backport53Tokens($parser);
        new Patchwork_PHP_Parser_StringInfo($parser);
        new Patchwork_PHP_Parser_NamespaceInfo($parser);
        new Patchwork_PHP_Parser_ScopeInfo($parser);
        new Patchwork_PHP_Parser_ClassInfo($parser);
        new Patchwork_PHP_Parser_ConstantInliner($parser, realpath($file));
        new Patchwork_PHP_Parser_Scream($parser);
        return $parser;
    }
}
$parser = Preprocessor::getParser($file);
$code = file_get_contents($file);
$code = $parser->parse($code);
echo "\nResulting code\n==============\n";
echo $code, "\n";
if ($errors = $parser->getErrors()) {
    echo "Reported errors\n===============\n";
    foreach ($errors as $e) {
        echo "Line {$e['line']}: {$e['message']}\n";
    }
}