Changes for version 0.24 - 2007-07-08
- added the bash script util/update-rule-pmc to automate the process of compiling Pugs/Grammar/Rule2.pm (in p6) down to Pugs/Grammar/Rule.pmc (in p5). it supports command line arguments "install", "revert", and "update". now we can call it to generate/update Rule.pmc like this: util/update-rule-pmc # compile only util/update-rule-pmc install # install only util/update-rule-pmc update # compile and then install util/update-rule-pmc revert # svn revert .../Rule.pmc
- added util/gen-rule-pmc.pl to post-process the .pmc file generated by v6.pm from Pugs/Grammar/Rule2.pm
- implemented Pugs::Compiler::Grammar for compiling grammar spec like this: grammar Foo; token idents { <ident>* } rule blah { 'a'* <?ws>? <idents> } grammar Bar; regex hey { <alpha>**{2} }
- implemented Pugs::Emitter::Grammar::Perl5 for emitting Perl 5 source from grammar ASTs.
- added t/04-compiler-grammar.t for testing P::C::Grammar.
- added examples/adder.grammar and examples/digits.grammar which can be compiled by compile_p6grammar.pl down to Perl 5 module file.
- removed util/compile_p6grammar-token.pl since it's useless now.
- Makefile.PL - added File::Slurp as a new dependency to PCR.
- reimplemented util/compile_p6grammar.pl using Pugs::Compiler::Grammar
- Pugs::Grammar::Rule2.pm - allowed global code blocks "%{ ... %}" in the grammar spec.
- Pugs::Grammar::Rule2.pm - added new tokens "alnum", "alpha", "digit", "named_regex", "verbatim", "grammar", and "spec".
- updated Pugs::Grammar::Rule.pmc with util/update-rule-pmc accordingly.
- Makefile.PL - installs compile_p6grammar.pl by default.
- Pugs::Emitter::Rule::Perl5::Ratchet - fixed a bug regarding closures (or actions) in p6 regexes, which does not contain "return".
- P::G::Rule2.pm: removed the workaround for { die "..." } since i've already fixed it (see above).
- added t/declare/01-sigspace.t to test Pugs::Compiler::Rule's sigspace support.
- fixed a bug in Pugs::Compiler::Rule's compile method regarding modifiers with undef values.
- more POD documentation for Pugs::Compiler::Rule and Pugs::Compiler::Regex.
- fixed POD syntax errors in Precedence.pm and Parsec.pm.
- added t/00-pod-coverage.t and t/00-pod.t.
- fixed the :continue (:c) issue for the ratchet emitter by sticking with the original $str variable everywhere without passing sub arguments by copy.
- fixed a bug in Pugs::Compiler::Regex->compile regarding params handling.
- calls use_test_base() in Makefile.PL to bundle Test::Base with inc/. added t/declare to hold declarative tests for PCR
- added t/lib/Regex.pm which subclasses Test::Base and serves as the tester scaffold for t/declare/*.t
Documentation
Compile Perl6 Grammars to Perl5 Modules
Modules
Compiler for Perl 6 Grammars
Compiler for Perl 6 Regex
Compiler for Perl 6 style "Perl5" regex
Compiler for Perl 6 Rules
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