I now have a basic implementation for enumerated character classes in
the grammar engine (i.e., [xyz], -[xyz], [x..z], and -[x..z]).
I didn't see it specified anywhere, but are the \d, \D, \s, \S, etc.
metacharacters still supposed to work inside of a enumerated character
class, as they do in Perl 5? Or in p6 do we always use
+digit+[xyz], -digit, +sp, -sp, etc.?
(Yes, I know that normally the absence of any spec to the contrary
indicates that we're still using p5 semantics, but this one is worth
verification for me.)
While I'm on the subject, let me just ramble a bit -- there are
times when alpha, digit, upper, etc. give me a bad feeling
-- they look a little too much like subrules to me, especially
when looking at +alpha and the like. I keep wondering about
things like +ident and -expr.
And something like C rx / alpha* / may generate a lot
of not-very-useful one-character captures into $/alpha , so that
we'll typically want to get in the habit of writing
rx / ?alpha* /
rx / +alpha* /
and then have the engine recognize when this occurs so it
can optimize to a much faster character class op rather than
a lot of calls to a separate subrule.
Plus, +alpha just looks plain ugly and unbalanced to me.
Somehow I'd like to get rid of those inner angles, so
that we always use +alpha, +digit, -sp, -punct to
indicate named character classes, and specify combinations
with constructions like +alpha+punct-[aeiou] and +word-[_].
We'd still allow [abc] as a shortcut to +[abc].
To me this looks cleaner overall, makes it clear we're doing a
one-character non-capturing match, and may enable a few optimization
possibilities. (I'm sure that with enough effort we can get
equivalent optimizations out of the existing syntax, and we may
need them anyway in the long run, but this might simplify that a
fair bit.)
I haven't thought far ahead to the question of whether
character classes would continue to occupy the same namespace
as rules (as they do now) or if they become specialized kinds
of rules or what. I'll just leave it at this for now and
see what the rest of p6l thinks.
Pm