====== I HAZ A PARROT ====== Happy new year, everybody! I read Larry Wall's recent essay on [[http://www.perl.com/lpt/a/997|scripting vs. programming]] (which was interesting from a language-design viewpoint, certainly), but when he described the parser abilities of Perl 6, I thought, "Wow, that'd sure be nice for LOLCODE!" Well. It sure is gratifying not even to have to speak those wishes aloud before seeing them granted. [[http://blog.simon-cozens.org/post/view/1323|Simon Cozens writes]] about the [[http://www.parrotcode.org/|Parrot]] Compiler Toolkit. Will Coleda provided a starting point for LOLCODE, and Simon is in the process of adding a bunch of functionality. >This afternoon Will Coleda checked in a simple stub implementation of [[home|LOLCODE]]. The implementation consists of three files. The first is the [[http://perlsix.org/svn/parrot/view/trunk/languages/lolcode/src/parser/grammar.pg|grammar]]. This is written in Real Life [[http://dev.perl.org/perl6/doc/design/syn/S05.html|Perl 6 Rules]]. That was pretty impressive. Then there's the [[http://perlsix.org/svn/parrot/view/trunk/languages/lolcode/src/parser/actions.pm|actions file]], which builds the Abstract Syntax Tree. This is written in a language called "Not Quite Perl", which is as close to Perl 6 as makes no odds. Finally there's the [[http://perlsix.org/svn/parrot/browse/trunk/languages/lolcode/src/builtins|implementation of the builtins]], which is written in Parrot's intermediate language. This is where you implement any custom runtime operations that Parrot doesn't already know about. >I spent two hours this afternoon basically starting from zero knowledge of the Parrot Compiler Toolkit and added a bunch of features to Will's stub, including variable assignment and access. That is **astonishing**. ([[http://blog.simon-cozens.org/post/view/1323|link]]) I agree. You can, quite literally, [[http://perlsix.org/svn/parrot/browse/trunk/languages/lolcode/|check it out]] for yourself. Gosh, I love you guys.