Tuesday, June 20, 2006

PHP source code analysis: PHPCompiler versus Yaxx

The original PHP compiler doesn’t use AST representation of a source code so in the previous versions of phpAspect I had to fill the php grammar with my own AST constructions. It was a painful job and moreover I had to do it in each major version of PHP. For this new version, I'm using the yaxx project written by Dr. Yijun Yu. The yaxx tool is a yacc skeleton which build an xml ast representation of a source code according to his grammar.
For example, the following php source code:


We will obtain the following Tree (with the php lexer & grammar in input):


Using this compiler structure, the common visitors of a traditional compiler becomes xslt style sheet. A toEval visitor becomes a toEval xslt style sheet etc... I already wrote a very simple toWrite visitor which just take care of writing the text into tokens.

The hardest part is now to perform weaving using xslt and the main limitation is that xslt variables are constants.

I keep you in touch ;o)

Friday, June 16, 2006

Gregor Kiczales @ Google

I found on Google Video an very interesting conference about AOP given by Gregor Kiczales himself at Google.

Link for the video: http://video.google.com/videoplay?docid=8566923311315412414

For those which do not know Gregor Kiczales, he is one of the major founder of aspect-oriented programming

Popout

Thursday, June 8, 2006

Using XML Representations of a PHP parse Tree

The original PHP compiler doesn’t use AST representation of a source code so in the previous versions of phpAspect I had to fill the php grammar with my own AST constructions. It was a painful job and moreover I had to do it in each major version of PHP. For this new version, I'm using the yaxx project written by Dr. Yijun Yu. The yaxx tool is a yacc skeleton which build an xml ast representation of a source code according to his grammar.
For example, the following php source code:


We will obtain the following Tree (with the php lexer & grammar in input):


Using this compiler structure, the common visitors of a traditional compiler becomes xslt style sheet. A toEval visitor becomes a toEval xslt style sheet etc... I already wrote a very simple toWrite visitor which just take care of writing the text into tokens.

The hardest part is now to perform weaving using xslt and the main limitation is that xslt variables are constants.

I keep you in touch ;o)

Wednesday, June 7, 2006

Welcome to this blog

Hello !
This is going to be my journal for the Google Summer of code 2006. I'll publish my work advances here.
You can find my proposal here.
Sebastian Bergmann is my mentor and it's really a pleasure because he has both php and aop experience with projects like PHPUnit and aspectPHP. Moreover we get along very well.
The project is a new version of phpAspect written in C and using XSLT process to perform source code transformation:
Adopting this new approach will result in the following benefits. The lexical and syntax analysis will be independent of any PHP version. Existing XML tools like XSTL or XPath engine could be heavily reused to make the implementation significantly shorter and improve weaving performances.
Finally, it will introduce more flexibility in terms of the aspect language. For example, I could use the power of Xpath expression to introduce more logical operators in the aspect syntax. With this architecture, the compatibility with PHP 6 and features like namespaces will be very easy to implement.
If you have any question about the phpAspect project for the SoC, just let me know: wcandillon at gmail dot comor phpaspect at googlegroups dot com

Friday, June 2, 2006

Books of summer

I received yesterday the book of Sara Golemon, "Extending and Embedding PHP". It's an excellent resource if you want to build your own PHP extension in C/C++. I just finished to wrote mine tonight but I will tell you more about this in a further bill.

For the google summer of code I also use two very usefull books. "Learning XSLT" at O'reilly which is a very good reference about XSLT and "C Pocket Reference" which help me when I don't remember about C functions and stuff.
And of course, I always have my "AspectJ in action" with me...

There is also Google Books, it's a very great tool if you want to consult some cookbook about about a programming subject for example.


You can of course buy all these books on Amazon: