Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 87 lines (75 sloc) 3.535 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
17 is marked TODO in PGE as well, and looks suspicious to boot. Work is currently
18 ongoing in rx_modifiers.
81bf4d7 @masak [README] modifications; added STATUS and COOLTHINGS
authored
19
20 There are two features I can see that need to be implemented for the rest
21 of the tests to pass. The first is some kind of stacking of TreeSpider
22 objects. This is needed both for lookarounds and for subrule calls, both
23 with form a sort of 'regex in a regex', both statically and dynamically.
24 The second is a mechanism for building real Match objects, replete with
25 numbered and named captures.
26
27 name tests status
28 --------------------------------------------------
29 rx_quantifiers 179 DONE (a few todo tests remain)
30 t/03-optable.t 42 DONE (one todo test remains)
31 rx_metachars 238 DONE
16f60a8 @masak [STATUS] update
authored
32 rx_charclass 63 DONE (a few todo tests remain)
11314b3 @masak [STATUS] updated
authored
33 rx_backtrack 23 DONE (one todo test remains)
16f60a8 @masak [STATUS] update
authored
34 rx_modifiers 102 in progress
81bf4d7 @masak [README] modifications; added STATUS and COOLTHINGS
authored
35
36 rx_captures 48 to be done
37 rx_subrules 60 to be done
38 rx_lookarounds 33 to be done
39 rx_goal 11 to be done
40 rx_syntax 33 to be done
41
42 Here's a copy of PGE's STATUS, adapted for GGE:
43
44 Perl 6 rule features implemented
45 --------------------------------
46 * standard regular expression constructs
47 * quantifiers (*, +, ?, *?, +?, ??, **{m..n}?)
48 * alternation (|)
49 * conjunction (&)
50 * non-capturing groups
51 * enumerated character lists (<[abcdef]>, <-[a..f]>)
52 * character classes (., \d, \w, \s, \n, \e, \f, \r, \t, \x[hhh], \o[nnn])
53 * anchors (^, $, ^^, $$, \b, \b)
54 * \c[...] and \C[...]
11314b3 @masak [STATUS] updated
authored
55 * cut operators (:, ::, :::, <commit>)
81bf4d7 @masak [README] modifications; added STATUS and COOLTHINGS
authored
56
57
58 Perl 6 rule features to-do
59 --------------------------
60 * capturing groups
61 * modifiers :i, :ignorecase, :s, :sigspace (with synonyms :w and :words)
62 * composed character classes (<+alpha-[aeiou]>)
63 * negated character classes
64 * capturing subrules (<expr>)
65 * non-capturing subrules (<.expr>)
66 * negated subrules (<!expr>)
67 * lookahead and lookbehind (<before> and <after>)
68 * built-in rules: <null>, <fail>, <alpha>, <digit>, <alnum>,
69 <upper>, <lower>, <xdigit>, <space>, <print>, <graph>,
70 <blank>, <cntrl>, <punct>, <sp>, <lt>, <gt>, <dot>, <ws>,
71 <p6rule>, <p5regexp>
72 * backreferences ($0, $1, $<foo>)
73 * scalar subrule and subpattern aliases ($<foo>:=(...), $0:=(...))
74 * balanced delimited text (<GGE::Text::bracketed>)
75 * embedded closures ({{ puts "hello" }})
76 * :lang() modifier
77 * firstchar/nextchar optimizations
78 * lookbehind according to S05 definition
79 * <cut> assertion
80 * versions of <commit> and cuts that release backtracking state
81 * :perl5 modifier
82 * literal assertions (<'literal'>)
83 * interpolated assertions (<"literal">)
84 * array and hash aliasing (@<foo>:=(...), %<foo>:=(...))
85 * don't generate unneeded internal data structures (e.g., gpad)
86
Something went wrong with that request. Please try again.