Am 27.04.2010 06:31, schrieb Stéphane Payrard:
When doing an analyse of a sample parse tree, I note that it is
cluttered by the reduction of optional subrules
to  generate a zero length parse subtree. That is, rules with a '?'
quantifier matching zero time.
Suppressing such matching rules from the parse tree would make it
easier to read.
Additionnally, the actions associated with such a quantified rule
matching once would not necessitate a trailing [0].

   my $twigil := $<twigil>  ?? ~$<twigil>[0] !! '';

  would read

   my $twigil := $<twigil>  ?? ~$<twigil>  !! '';

... end even

     my $twigil = $<twigil> // '';

But it raises other questions that need answering.

Currently the ? quantifier is just syntactic sugar for the general quantifier ** 0..1.
Would that behave the same?
Are you proposing that all quantifiers that match zero times should not appear in the parse tree? Then <twigil>+ could either lead to no capture at all, a single value or a list - not very nice.
Or rather special-casing the 0..1 quantifier?

There's also another problem with your approach: If you have
<twigil>?
in your regex, and it matches the empty string, it is still a successful match - yet with your proposal, it's impossible to distinguis a successful zero-width match from an unsuccessful match (which can happen in alternations).

Cheers,
Moritz

Reply via email to