Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 88 lines (76 sloc) 3.729 kb
81bf4d7 @masak [README] modifications; added STATUS and COOLTHINGS
authored
1 PGE contains three regex engines: a Perl 6 one, a Perl 5 one, and one for
2 file globbing. The current focus on GGE is to port the Perl 6 regex engine
3 enough to be able to parse arbitrary Perl 6 grammars (to the extent that
4 PGE can).
5
6 The implementation work proceeds in order of the PGE test files. The
7 rx_quantifiers was the first one to be attacked, because quantifiers seemed
8 like great fun. A few tests have been marked TODO in that file, pending
9 re-entrant regex parsing which stops on a specified precedence level.
10
11 The OPTable tests were next. Only one test was marked TODO in there; it
12 depends on the :parsed argument accepting a GGE::Perl6Regex object as its
13 value. (No real obstacle to that one; just haven't found it necessary.)
14
16f60a8 @masak [STATUS] update
authored
15 All tests pass in rx_metachars. A few tests are marked TODO in rx_charclass,
11314b3 @masak [STATUS] updated
authored
16 having to do with double-quoted literals. The test marked TODO in rx_backtrack
0b43d52 @masak [STATUS] updated
authored
17 is marked TODO in PGE as well, and pmichaud has confirmed it's likely bogus.
18 Some tests had to be marked TODO in rx_modifiers, because they used lookahead,
19 which isn't implemented yet. Some TODOs in rx_captures were inherited from
20 PGE, others await the implementation of subrules.
81bf4d7 @masak [README] modifications; added STATUS and COOLTHINGS
authored
21
22 There are two features I can see that need to be implemented for the rest
23 of the tests to pass. The first is some kind of stacking of TreeSpider
f465b90 @masak [STATUS] updated
authored
24 objects. This is needed for subrule calls, which form a sort of 'regex in a
25 regex', both statically and dynamically. The second is a mechanism for
26 building real Match objects, replete with numbered and named captures.
81bf4d7 @masak [README] modifications; added STATUS and COOLTHINGS
authored
27
28 name tests status
29 --------------------------------------------------
30 rx_quantifiers 179 DONE (a few todo tests remain)
31 t/03-optable.t 42 DONE (one todo test remains)
32 rx_metachars 238 DONE
16f60a8 @masak [STATUS] update
authored
33 rx_charclass 63 DONE (a few todo tests remain)
11314b3 @masak [STATUS] updated
authored
34 rx_backtrack 23 DONE (one todo test remains)
f465b90 @masak [STATUS] updated
authored
35 rx_modifiers 102 DONE (a few todo tests remain)
0b43d52 @masak [STATUS] updated
authored
36 rx_captures 48 DONE (a few todo tests remain)
37 rx_subrules 60 work in progress
81bf4d7 @masak [README] modifications; added STATUS and COOLTHINGS
authored
38
39 rx_lookarounds 33 to be done
40 rx_goal 11 to be done
41 rx_syntax 33 to be done
42
43 Here's a copy of PGE's STATUS, adapted for GGE:
44
45 Perl 6 rule features implemented
46 --------------------------------
47 * standard regular expression constructs
48 * quantifiers (*, +, ?, *?, +?, ??, **{m..n}?)
49 * alternation (|)
50 * conjunction (&)
51 * non-capturing groups
52 * enumerated character lists (<[abcdef]>, <-[a..f]>)
53 * character classes (., \d, \w, \s, \n, \e, \f, \r, \t, \x[hhh], \o[nnn])
54 * anchors (^, $, ^^, $$, \b, \b)
55 * \c[...] and \C[...]
11314b3 @masak [STATUS] updated
authored
56 * cut operators (:, ::, :::, <commit>)
81bf4d7 @masak [README] modifications; added STATUS and COOLTHINGS
authored
57
58
59 Perl 6 rule features to-do
60 --------------------------
61 * capturing groups
62 * modifiers :i, :ignorecase, :s, :sigspace (with synonyms :w and :words)
63 * composed character classes (<+alpha-[aeiou]>)
64 * negated character classes
65 * capturing subrules (<expr>)
66 * non-capturing subrules (<.expr>)
67 * negated subrules (<!expr>)
68 * lookahead and lookbehind (<before> and <after>)
69 * built-in rules: <null>, <fail>, <alpha>, <digit>, <alnum>,
70 <upper>, <lower>, <xdigit>, <space>, <print>, <graph>,
71 <blank>, <cntrl>, <punct>, <sp>, <lt>, <gt>, <dot>, <ws>,
72 <p6rule>, <p5regexp>
73 * backreferences ($0, $1, $<foo>)
74 * scalar subrule and subpattern aliases ($<foo>:=(...), $0:=(...))
75 * balanced delimited text (<GGE::Text::bracketed>)
76 * embedded closures ({{ puts "hello" }})
77 * :lang() modifier
78 * firstchar/nextchar optimizations
79 * lookbehind according to S05 definition
80 * <cut> assertion
81 * versions of <commit> and cuts that release backtracking state
82 * :perl5 modifier
83 * literal assertions (<'literal'>)
84 * interpolated assertions (<"literal">)
85 * array and hash aliasing (@<foo>:=(...), %<foo>:=(...))
86 * don't generate unneeded internal data structures (e.g., gpad)
87
Something went wrong with that request. Please try again.