Day 85: BEGIN, use, Eval for Rule

autrijus on 2005-04-26T18:12:30

Today is another productive day, with the Eval in Rule problem finally resolved. Now we can finally do compilation and evaluation inside the parser, all these things are suddenly working:

  • BEGIN { ... } as both a rhs term and statement level block
  • use Module;
  • Calling foo() before defining sub foo { ... }
  • Room for compile-time AST analysis, such as use strict, use warnings and macros.

There are many other new developments today as well:

  • Stevan tweaked dragonchild's tic-tac-toe game example some more, with a nice-looking game board.
  • Stevan also helped me changing all the require Test to use Test in test files.
  • Corion noted that on Win32, an async { system(...) } blocks other threads as well. That does not happen on FreeBSD here, so it may well be a Win32-specific issue. He added tests for it.
  • Limbic_Region, our new committer on board, checked in a wonderfully written progressive power set generator, which exercises some missing Pugs features...
  • ...mugwump promptly implemented the first, @elem.end.
  • ...I also implemented the second one: correct parsing for last if defined $foo.
  • ninereasons repaired the MOTD.pm module used in the motd demo example.
  • bsb added $ENV{HASKTAGS} override for our make tags target.
  • I improved the error reporting; now it always come with a source code position, including the file name, line and column number.

That's quite good for a day... See you tomorrow!