0.37 2008-07-28
0.36 2008-07-28
- fixed quoting in perl 5 regex emitter
0.35 2008-07-27
- fixed var name mangler
0.34 2008-07-25
- added unicode 'isGraphemeLink', 'Cn'
0.33 2008-07-23
- added unicode property 'isLr'
- fixed character-class name rule
0.32 2008-07-21
0.31 2008-07-21
- unicode fixes
0.30 2008-07-20
- fixed char class with spaces
0.29 2008-07-12
- minor fix in test output
0.28 2007-11-02
- fixed test failures on Win32.
- fixed some typos in the POD.
0.27 2007-10-31
- updated <?XXX> to the new S05 syntax <.XXX>.
- added new module Pugs::Runtime::Tracer.
- added the util/update-tracer-demos script.
- added the util/gen-tracer-view.pl script for generating tracers like
http://agentzh.org/misc/tracer/adder/index.html
- added options -D (for tracing support) and -T (for safe mode) to
the comple_p6grammar.pl script.
0.26 2007-07-29
- added pos info (via '_pos => [ from, to ]' to regex AST's nodes
and taught the two emitters not to dispatch on it. no failing tests.
- added t::lib::AST for AST regression tests.
- updated P::G::Rule.pmc accordingly.
- added t/ast/00-basic.t to test detailed AST structures using Data::Dumper.
- introduced $::PCR_SEED to provide a way to avoid randomness
in the generated code
- added a corrosponding -s option to util/compile_p6grammar.pl.
- made util/update-rule-pmc-new to specify a fixed value for -s.
- added more tests to t/emitter/00-basic.t for the ratchet emitter.
- added the very useful "--- Layout" support to t::lib::Emitter.
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).
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
0.23 2007-05-08
- implemented <?{...}> and <!{...}>
- token with non-greedy quantifier is transformed into a greedy quantifier
with lookahead: a b*? c -> a [ <!before c> b ]* c
- regex grammar: added <rule: string...> and <rule( params, ... ) syntax
- new ast node 'call'
- rules can have positional parameters
- "Whatever" {*}
- fixed ratchet quantifier - rollback .pos on fail
- added an initial double-quoted parser
- allow aliasing to a literal
- new syntax 'xxx' instead of <'xxx'>
- %($/) is read-write
0.22 2007-03-27
- fixed perl5.10 compatibility
- some fixes to character classes
- fixed bug: Pugs::Grammar::Base try to autoload DESTROY()
0.21 2007-03-12
- added external/internal 'ignorecase' flag in regex
- implemented hex/octal/named constants - \x, \o, \c, \X, \O, \C
- added Unicode properties, such as <isL> <!isL> <+isL> <-isL>
- added StrPos class (Pugs::Runtime::StrPos)
#reverted - Match->from() and Match->to now return Pugs::Runtime::StrPos objects.
- for non-OO positions, use Match->to_codes and Match->from_codes
- fixed non-capturing subrules in regex
- fixed <-alpha>
- implemented conjunctions with '&' (not in Regex runtime yet)
- implemented negated metasyntax <!...>
- implemented <fail>
0.20 2006-10-13
- each time <prior> is set to a new rule, it stores the previous
rule in a closure, so that subrules can have their own <prior>.
- implemented :c :continue
- several fixes to HsBridge
0.19 2006-09-27
- removed dependency Data::Dump::Streamer (t/01-iterator_engine.t)
- updated Pugs::Runtime::Match pod
- $/{0} === $/[0]
- Match.kv, Match.elems, Match.chars, Match.yaml
- RegexPerl5 accepts parameters i m s x
- <! ...> takes a metasyntax expression (not a rule pattern)
- Regex wasn't allowed to match at end of string
- Regex runtime detects infinite loop in <null>+ and fails
- more detailed quantifier parsing;
added '**{range}' quantifier (needs emitter support)
- HsBridge - implements a Pugs/Haskell-compatible API
[ features available inside v6.pm only ]
- refactored Rule grammar to use shortcuts, such as
{ return { after => :$$<rule>, } }
- fixed '${...}', '$[...]', ':$<...>', '$0'
- fixed coercions in emitter
[ devel (svn.pugscode.org/pugs/perl5) version only ]
"plain_regex"
- code cleanup; added bug list
- added ^^ $$ \n \N - TimToady++
- /./ matches 2-char newline
- <'literal'>
- simple character classes, negated char classes
- ^ $ <null> \s, \S, etc
- <after ...>, <!after ...>, <before ...>, <!before ...>
- non-capturing group, captures, dot
"Pugs::Grammar::RulePure"
pure-Perl6 version of the Rule grammar;
this file currently can't be run due to PCR/v6 incompatible
calling conventions
0.18 2006-09-21
- implemented capturing to return object with <(...)>
- implemented Matching against non-strings
my $rule = Pugs::Compiler::Regex->compile( '<.meth("param")>' );
my $match = $rule->match( $object );
- implemented <at($pos)>
- fixed '^' and '$' in regexes
0.17 2006-09-13
- Grammar::Rule is now bootstrapped with v6.pm, instead of lrep
- implemented $<KEY>
- fixed bool result of quantified terms inside tokens
- fixed parsing of <'>>'>
- replaced 'do{}' with plain function calls in some places (optimization)
- implemented hash dispatch in Grammar::Rule (optimization)
0.16 2006-08-21
- removed Class::InsideOut dependency - 5% speed optimization, but there
seems to be some gain in RAM usage also
- token <null>
0.15 2006-08-16
- stringification is handled by the 'return object', if it exists.
- fixed '..' in char classes
- ':' is ignored inside tokens
- updated the identifier list in Common.pm
0.11 to 0.14 2006-08-09
- several fixes and optimizations in hash and array interpolation
- fixed capture aliasing
- refactored Regex runtime:
-- reuses the matching string in submatches
-- resues the Match class for Token/Rule
-- more tests
- partially implemented 'static' capture numbering
0.10 2006-07-10
- added Pugs::Runtime::Common - contains utilities shared by all perl 6
mini-languages, such as namespace mangling.
0.09 2006-07-06
- 'install()' creates a rule in current namespace - implemented by broquaint
- fixed quoting in emitted :ratchet code
- implemented '<@rules>' in :ratchet mode
0.08 2006-07-04
- clear a warning in Pugs::Grammar::Rule - fixed by audreyt
0.07 2006-07-04
- updated Module::Install
0.06 2006-06-26
- new module Pugs::Grammar::Precedence
0.05 2006-06-13
- fixed internal <alpha> rule
- new module Pugs::Compiler::RegexPerl5 - wraps a perl5 regex into a method that
returns a Match object. Note that this module doesn't provide backtracking to
caller rules.
0.04 2006-05-24
- new modules Pugs::Compiler::Token, Pugs::Compiler::Regex
- fixed Pugs::Compiler::Rule default switches to :ratchet, :sigspace.
- implemented 'sigspace' switch - in :ratchet mode only
0.03 2006-05-20
- '<after ...>' - in :ratchet mode only
- the 'p' switch should now be specified as 'p => 0' instead of 'p => 1'.
'p => 1' now matches at the second character in the string.
The default is 'p => undef' - matches anywhere in the string.
- added ':ratchet' switch.
- implemented parameters in subrule call (named only, constants only)
- '<before ...>', '$'
- new class 'Pugs::Grammar::Category'
- implemented '%hash', but it doesn't use a trie yet.
- fixed subrule backtracking
- fixed method 'perl5'
- Perl 5 emitter character classes (partially) implemented
0.02 2006-03-28
- new method 'perl5', returns a string that can be eval'ed into a new PCR object
- match variables are available inside the rule: $0, $1
- /(.)*/ returns an array in @$0
- built-in rules: alpha, alnum, ...
- fixed grammar bug: '$var := (xxx)' is: '$<var> := (xxx)'
- implemented ':' (untested)
- Added support for Grammar inheritance
- rule methods are internally curryed into functions
$rule = sub { Grammar->rule_method( @_ ) }
- faster Rule grammar
- Simplified 'match', 'capture' keys in internal Match
0.01
- Initial CPAN release - Pod, Tests, Packaging by audreyt & others.