Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…
Cannot retrieve contributors at this time
82 lines (70 sloc) 3.12 KB
PGE contains three regex engines: a Perl 6 one, a Perl 5 one, and one for
file globbing. The current focus on GGE is to port the Perl 6 regex engine
enough to be able to parse arbitrary Perl 6 grammars (to the extent that
PGE can).
The implementation work proceeds in order of the PGE test files. The
rx_quantifiers was the first one to be attacked, because quantifiers seemed
like great fun.
The OPTable tests were next. Only one test was marked TODO in there; it
depends on the :parsed argument accepting a GGE::Perl6Regex object as its
value. (No real obstacle to that one; just haven't found it necessary.)
All tests pass in rx_metachars. A few tests are marked TODO in rx_charclass,
having to do with double-quoted literals. The test marked TODO in rx_backtrack
is marked TODO in PGE as well, and pmichaud has confirmed it's likely bogus.
Some tests had to be marked TODO in rx_modifiers, because they used lookahead,
which isn't implemented yet. Some TODOs in rx_captures were inherited from
name tests status
rx_quantifiers 179 DONE (a few todo tests remain)
t/03-optable.t 42 DONE (one todo test remains)
rx_metachars 238 DONE
rx_charclass 63 DONE (a few todo tests remain)
rx_backtrack 23 DONE (one todo test remains)
rx_modifiers 102 DONE (a few todo tests remain)
rx_captures 48 DONE (a few todo tests remain)
rx_subrules 60 DONE
rx_lookarounds 33 DONE
rx_goal 11 work in progress
rx_syntax 33 to be done
Here's a copy of PGE's STATUS, adapted for GGE:
Perl 6 rule features implemented
* standard regular expression constructs
* quantifiers (*, +, ?, *?, +?, ??, **{m..n}?)
* alternation (|)
* conjunction (&)
* non-capturing groups
* enumerated character lists (<[abcdef]>, <-[a..f]>)
* character classes (., \d, \w, \s, \n, \e, \f, \r, \t, \x[hhh], \o[nnn])
* anchors (^, $, ^^, $$, \b, \b)
* \c[...] and \C[...]
* cut operators (:, ::, :::, <commit>)
* capturing groups
* modifiers :i, :ignorecase, :s, :sigspace (with synonyms :w and :words)
* negated character classes
* capturing subrules (<expr>)
* non-capturing subrules (<.expr>)
* negated subrules (<!expr>)
* built-in rules: <alpha>, <digit>, <alnum>, <upper>, <lower>,
<xdigit>, <space>, <cntrl>, <punct>
* backreferences ($0, $1, $<foo>)
* scalar subrule and subpattern aliases ($<foo>:=(...), $0:=(...))
* composed character classes (<+alpha-[aeiou]>)
Perl 6 rule features to-do
* lookahead and lookbehind (<before> and <after>)
* built-in rules: <null>, <fail>, <print>, <graph>,
<blank>, <sp>, <lt>, <gt>, <dot>, <ws>, <p6rule>, <p5regexp>
* balanced delimited text (<GGE::Text::bracketed>)
* embedded closures ({{ puts "hello" }})
* :lang() modifier
* firstchar/nextchar optimizations
* lookbehind according to S05 definition
* <cut> assertion
* versions of <commit> and cuts that release backtracking state
* :perl5 modifier
* literal assertions (<'literal'>)
* interpolated assertions (<"literal">)
* array and hash aliasing (@<foo>:=(...), %<foo>:=(...))
* don't generate unneeded internal data structures (e.g., gpad)
Jump to Line
Something went wrong with that request. Please try again.