pX/Common/iterator_engine/ChangeLog - fglock

2006-03-07
- rules can use Perl 5 syntax - rule xxx :P5 {...} - but needs a fix in the syntax
- Grammar is circular - compiles itself, almost 100% written in p6
- Command line switches - pmurias++
- iterator_engine.p6 - a Perl 6 port of the backtracking parser - putter++ bug fix
2006-03-05:
- 'if' implemented using Perl 6 macro
  (XXX - slow; non-reentrant yet; redefines subroutines to emulate anon-subs)
- fixed $() syntax
- refactored compiler dispatcher (pmurias)
- implemented low-level #comment-is-whitespace (putter)
2006-03-04:
- detailed TODO list
- macros 
  * macro compile time:
    - compile macro expander to AST
    - emit AST to Perl5
    - insert the new term in the grammar 
  * macro expander run time:
    - parse macro 'tail'
    - bind macro parameters to macro body using source filter 
      (only named parameters - TODO: $0, $1)
    - compile macro body to AST 
    - emit AST to Perl5
    - execute Perl5 and get the resulting Perl6 source-code
    - compile the result to AST (TODO: if the result was AST, don't compile)
  XXX - re: source filter - parameters should be passed to the precompiled macro body, 
        but subroutines don't support named parameters yet.
        Optionally, the arguments could be bound to the AST of the macro body.
  XXX - is string interpolation in macros different? does (') interpolate?
- aliasing in rules
  - fixed $<$name> to $<name> when using alias
  XXX - is $<name> supposed to be $(name) ?
- new iterator_engine op - ruleop::wrap() can be used to insert tracing and debug messages
  in the parser
2006-03-01:
- precompiled Prelude - loads in < 1s
2006-02-26:
- working Perl 6 compiler - about 100 lines of code are now written in perl6
- started a Prelude
    say 'compiling Prelude';
    sub infix:<+> { eval(' $_[0] + $_[1] ', :lang<perl5>); }
- optimized rules - use Text::Balanced for implementing <literal> and <code>
- 124 tests for p6rule.pl
- note: spec change '$<>' to '$()' not applied yet

