The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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