Last friday I went to London to visiting the Google office with other GSoCers.First of all, I went to London to visit Google and I had no idea how great it would be to met other GSoCers. Everybody were nice, funny and very excited about theirs projects.
We had a nice lunch (with sushis, I love sushis !!!) and we had a round table with Chris Di Bona and Zaheda Bhorat where everyone did an self-introduction. It was a chance to know a little bit more about everybody and it also was a chance to see in what kind of studies we're all involved. Then we did the lightning talk presentations and we had a big chat about the Google Summer of Code: what was great, what went wrong, what is next, what could be improved etc.
A Googler came to talk to us about being an engineer at Google and we did a visit of the Office.
It was very enriching at so many level. I learned more about the Google work environment, what kind of relationship Google has with the Open source world, how awesome GSoCers are and it was also a great opportunity to know more about being an engineers at Google.
You can get the pdf version here.
This is my journal for the Google Summer of code 2006. I publish all advances in my work here.
Sunday, October 29, 2006
Tuesday, October 3, 2006
Visualize the parse tree of a PHP source code
wrote this xslt stylesheet to visualize the parse tree of a PHP source code.
The stylesheet can actually convert any XML tree to a graph in the dot format interpreted by Graphviz.
The code to vizualize nice parse tree with the PECL extension is the following:
To test this example at home, you need the Parse Tree pecl extension, an xslt proc and graphviz:
order.php is the original php file.
order.xml is the xml generated with the parse_tree_from_file function.
order.dot is the parse tree in dot format.
order.png is the png generated by graphviz.
toDot.xsl isthe stylesheet generating dot from xml.
The stylesheet can actually convert any XML tree to a graph in the dot format interpreted by Graphviz.
The code to vizualize nice parse tree with the PECL extension is the following:
//Loading the parse tree into a DOMDocument
$xml = new DOMDocument;
$xml->loadXML(parse_tree_from_file('order.php'), XML_OPTIONS);
//Loading the stylesheet into a DOMDocument
$xsl = new DOMDocument;
$xsl->load('toDot.xsl', XML_OPTIONS);
//Stylesheet processing
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
//Generating the image with graphviz
file_put_contents('order.dot', trim($proc->transformToXML($xml)));
`dot -T png -o order.png order.dot`
So if order.php contains the following source code:class Order{
private $items = array();
private $amount = 0;
public function addItem($reference, $quantity){
$this->items[] = array($reference, $quantity);
$this->amount += $quantity*Catalog::getPrice($reference);
}
public function getAmount(){
return $this->amount;
}
}
class Catalog{
private static $priceList = array('Largo Winch' => 9.31, 'Astérix' => 8.46, 'XIII' => 8.70);
public static function getPrice($reference){
return self::$priceList[$reference];
}
}
$myOrder = new Order;
$myOrder->addItem('Largo Winch',2);
$myOrder->addItem('Astérix',2);
You'll get the following tree:To test this example at home, you need the Parse Tree pecl extension, an xslt proc and graphviz:
order.php is the original php file.
order.xml is the xml generated with the parse_tree_from_file function.
order.dot is the parse tree in dot format.
order.png is the png generated by graphviz.
toDot.xsl isthe stylesheet generating dot from xml.
Subscribe to:
Posts (Atom)