Book: Lex & Yacc

I picked up a copy of Lex & Yacc off TradeMe the yesterday, and I’m quite excited.

I’m hoping it will help me get my head around parser writing, for my still to-be revealed side project…

For a while now I have been working on a side project to add editor support for Erlang in Visual Studio.

I have a Google Code project for it, and it currently has syntax colour highlighting, but I was getting stuck with writing othe parser.

This is where the project has stalled over the last few months as I have been reading lots.

Originally I was basing my work on Lua Langage Pack for Visual Sudio. This package is a C# based plug-in that uses the CSTools project by Malcolm Crowe.

With the help of Code Project documents, MSDN and Blogs I slowly got a plug-in that has colour highlighting working (if you run it in the debug Visual Studio).

I was also reviewing how the IronPython project does it’s parser, but that used seemed to use python to do some parsing.. so

I then was trying to get Antlr to work, via AntlrWorks, but was banging my head on the debuggers limited support.

The next problem was how do I actually define the grammar for Erlang.

Erlang ships with a  grammar defined in yecc, it’s version-thing of yacc.  So I started translating this to Antrl but was getting left-right recursion errors, even though the problem was not the standard definition of left-right recursion problem.  Yecc is recursive decent as Erlang does recursion so well, but this was not playing well with Antlr. I then discovered I was looking at a subset of the Erlang gramma, and the full yecc gramma was huge, so hand translations was not an option.

So I then found the yecc grammar for yecc, and thought that I could hand roll a C# recursive decent parser for yecc, which would allow the auto-writing of a proper grammar for CSTools. But I wasn’t so keen on the .dll dependency of that tool chain.

I started reading the dragon book (Compilers: Principles, Techniques, and Tools) around this time, so was starting to get my head a little better positioned.

I then stumbled on to the Irony project which is a Visual Studio language development framework.  Eek they have most of what I was trying to workout how to-do, mostly worked out. But they have their own lex and yacc like tools.  This project also refers to the Visual Studio’s lex and yacc tools called MPLex and MPPG (distributed in the Visual Studio SDK)

I have just found that the newer version of the Lua project for Visual Studio 2008 uses the Irony project, and is hosted on CodePlex.

So I was getting keen again to work out how to use lex and yacc correctly, thus why when I saw this book for $3, I bid and anxiously waited to se if I’d win.  Of the 19 counted page view on the auction, 17 were mine.

So I’m half way through the first chapter and have just realised I don’t need to write a hand parser of yecc, I just need to write a lex parser that translates yecc to yacc, and rebuild that with MPPG to get a C# Erlang parser that is not hand rolled. Which means if the Erlang language changes, I can just re-run the whole process on the new gramma, and still be compliant.

Stack Overflow – new king of humour

Funniest story from the development team over that partition.

The team was having issues with network settings on Windows Vista, so one developer asked a question on Stack Overflow regarding the problem. A day later the team lead after doing some Google research sent an internal emailed to the group, suggesting the Stack Overflow question with a note “look someone else is having our problem, and seems to have some leads…”

Oh the humour when it was pointed out that the question asker had a handle that was the same as the full name of a team member.

Also on a side note: I’ve been not been blogging much recently, mostly because I have been taking all those spare micro moments that previously I’d have bashed a post up, to read/answer Stack Overflow questions, it’s so addictive

Wii Wii Wii All The Way Home

Last weekend Jacob and I purchased two new Wii games.  Jacob purchased LEGO Batman: The Videogame and I purchased Pikmin 2.Lego-Batman

I had already played the Game Cube versions of Pikmin 1 and 2 on the Wii but did not complete either game, so thought I’d by the Wii “New Play” version and give the game another bash. The game is identical to the GC version except the graphics are better. Some of the menu navigation is just as broken as the GC version, so I was disappointed, as they could have used the pointer of the Wii Remote to tidy this up, but the game is still fun.

LEGO Batman is amazing fun. The Lego nature of the graphics mean you give the game lots of slack as it’s not trying to be life like. The game really does look like everything is made of lego, and the characters are really well animated, with great humor. The game has the feel of the 60’s TV show, with lots of biffo and mindless henchmen running closer just to get punched. Biff! Pow! Wham!

So if you have not played either of the Pikmin games I’d give them a try. But definatly play the Batman game also.

Title chosen by wife, while I was out of the room…

New old books

The Christchurch City Library had their annual book sale on a few weekends ago.  I popped along, as it was held at the same venue I swim at each day.

The book sale is a two day event, and I actually went three times, first before my swim at 1pm, then again one hour later at 2pm and the last time on the Saturday at 1pm with my family.

The first visit was crowed, and the hall was full of trestles covered in books, one hour later half the books were gone, and the next day half again were gone. It was quite amazing, and also incredibly dirty feeling running your hand over the books to read the titles, while everybody else was doing the same thing.

poplAnyway, I picked up two books Programming C# 4th Ed by Jesse Liberty, because it was $2 and it never hurts to have a good reference book.  The other was Principles of Programming Languages 3rd Ed by Bruce J. Macleannan, as I really have been enjoying language/compiler books recently. Principles is a really good history of and why to it is that way type of book. A great read.