Larry wrote:
> : I agree with Audrey that C<parse> is probably too useful in other
> : contexts. C<token:w> works fine for me.
>
> Aesthetically, I hate :w, actually...and the whole point of naming "token"
> is that it is *not* a normal parser rule, but a lexer rule.
>
> But I agree that "parse" is probably the wrong word. Earlier versions
> had "prod" (short for "production")
Just to point out to those playing along at home that a "production" is one
branch of an alternation, so it was right to reject that as the keyword.
> or "words".
...which was not very informative. :-)
> Even earlier versions made ordinary "rule" have these semantics, but
> then it was too confusing to talk about rules in general. I was very
> happy when I thought of splitting the concepts yesterday.
>
> I will think about that some more today. Consider "parse" a placeholder
> for the concept of a plain old ordinary BNF rule.
I agree they should be split, but perhaps it's "rules in general" that
should be renamed, since plain old ordinary BNF has laid claim to "rule"
for several decades now? Perhaps we need to bow to historical (rather
than etymological) usage on "regex" too, yielding:
Keyword Implicit adverbs Behaviour
regex (none) Ignores whitespace, backtracks
token :ratchet Ignores whitespace, no backtracking
rule :ratchet :words Skips whitespace, no backtracking
Using C<rule> and C<token> as the typical grammar components would make
Perl 6 grammars *much* more accessible to those already familiar with
grammar-based parsing. And using C<regex> for "plain old backtracking regular
expressions" would make them much more accessible to those already familiar
with Perl 5 regexes.
Damian