Changes for version 0.25 - 2007-07-09

  • Pugs::Emitter::Grammar::Perl5 : set sigspace for "rule XXX {...}" and calls the backtracking rule emitter for "regex XXX {...}".
  • the ratchet rule emitter now saves the emitter params as special comments in the generated code to help debugging.
  • fixed a bug in the parameter ordering of the ratchet emitter, now examples/digits.grammar no longer loops.
  • added examples/langs.grammar (this file contains two grammars and the latter calls the subrules of the former and it works!)
  • added examples/langs2.grammar to demonstrate the use of the "rule foo { ... }" syntax.
  • added examples/Grammar.grammar which is the grammar spec for Perl 6 regexes themselves. this grammar file can be compiled by util/compile_p6grammar.pl down to a .pm file and replaces lib/Pugs/Grammar/Rule.pmc.
  • added util/update-rule-pmc-new to automate this process.
  • updated Rule.pmc using this new approach. It's about 4 times faster than the traditional v6.pm approach!
  • compile_p6grammar.pl: prepends 'use strict; use warnings' and header comments to the .pm file generated.
  • Pugs::Compiler::Regex now honors environment PCR_NO_CACHE, which can be used to disable the caching mechanism of PCR (recommended for PCR developers only).

Documentation

Compile Perl 6 Grammars to Perl 5 Modules

Modules

Compiler for Perl 6 Grammars
Compiler for Perl 6 Regex
Compiler for Perl 6 style "Perl5" regex
Compiler for Perl 6 regexes
Compiler for Perl 6 Token
Perl 5 emitter for grammar ASTs
Engine for Perl 6 Rule operator precedence
Match object created by rules
Represent a position inside a string

Provides

in lib/Pugs/AST/Expression.pm
in lib/Pugs/Emitter/Rule/Parsec.pm
in lib/Pugs/Emitter/Rule/Perl5.pm
in lib/Pugs/Emitter/Rule/Perl5/CharClass.pm
in lib/Pugs/Emitter/Rule/Perl5/Ratchet.pm
in lib/Pugs/Emitter/Rule/Perl5/Regex.pm
in lib/Pugs/Emitter/Rule/Perl6/Ratchet.pm
in lib/Pugs/Grammar/Base.pm
in lib/Pugs/Runtime/Common.pm
in lib/Pugs/Runtime/Match/HsBridge.pm
in lib/Pugs/Emitter/Rule/Perl5.pm
in lib/Pugs/Runtime/Regex.pm
in lib/Pugs/Runtime/Rule.pm