parse(file_get_contents($src_filepath)); if (strlen($stmts1_filepath) > 0 ) { dbg($level,"Dumping1 '$src_filepath' AST to '$stmts1_filepath'"); file_put_contents($stmts1_filepath, $nodeDumper->dump($stmts)); } dbg($level,"Transforming '$src_filepath'"); $traverser = new PHPParser_NodeTraverser; /* $traverser->addVisitor(new PHPParser_NodeVisitor_NameResolver); $traverser->addVisitor(new NodeVisitor_NamespaceConverter); */ // FIXME : getcwd is quick and dirty here $traverser->addVisitor(new NodeVisitor_PreprocessInclude($level, getcwd(), $src_filepath)); $stmts = $traverser->traverse($stmts); $traverser=null; //Destroy if (strlen($stmts2_filepath) > 0) { dbg($level,"Dumping2 '$src_filepath' AST to '$stmts2_filepath'"); file_put_contents($stmts2_filepath, $nodeDumper->dump($stmts)); } } catch (PHPParser_Error $e) { echo 'Parse Error: ', $e->getMessage(); } return $stmts; } // Main $src_filepath = "./main.php"; #$src_filepath = "./to_parse.php"; $stmts1_filepath = "out/stmts1.ast"; $stmts2_filepath = "out/stmts2.ast"; $dest_filepath = "out/result.php"; $parser = new PHPParser_Parser(new PHPParser_Lexer); $nodeDumper = new PHPParser_NodeDumper; $level=0; $stmts=recursive_parse($src_filepath, $stmts1_filepath, $stmts2_filepath); dbg(0,"Outputing '$dest_filepath'"); $prettyPrinter = new PHPParser_PrettyPrinter_Zend; file_put_contents($dest_filepath, "prettyPrint($stmts) . "\n?>"); ?>