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



