I don't see why optimization would frustrate this approach. You are doing the correct thing as far as I can tell, but with one exception. The current implementation (last I checked) was sometimes slow in binding values. You might need to force it between an assignment and passing a bound match as a parameter by inserting an empty block. You can see this documented and used here:
http://examples.perl6.org/categories/parsers/SimpleStrings.html Aaron Sherman, M.: P: 617-440-4332 Google Talk, Email and Google Plus: a...@ajs.com Toolsmith, developer, gamer and life-long student. On Tue, Sep 13, 2016 at 7:13 AM, Theo van den Heuvel <vdheu...@heuvelhlt.nl> wrote: > Hi all, > > I am beginning to appreciate the power of grammars and the Match class. > This is truly a major asset within Perl6. > > I have a question on an edge case. I was hoping to use a grammar for an > input that has meaningful indented blocks. > I was trying something like this: > > token element { <.lm> [ <linetail> | $<ind>=[ ' '+ ] <level($<ind>)> ] } > token lm { ^^ ' '**{$cur-indent} } # skip up to current indent level > > My grammar has a method called within the level rule that maintains a > stack of indentations and sets a $cur-indent. > I can imagine that the inner workings of the parser (i.e. optimization) > frustrate this approach. > Is there a way to make something like this work? > > Thanks, > Theo > > -- > Theo van den Heuvel > Van den Heuvel HLT Consultancy >