Documentation for method parse, assembled from the following types:
method parse(, : = 'TOP', Capture() : = \(), Mu : = Mu, *)
$target, which will be coerced to Str if it isn't one, using
$rule as the starting rule. Additional
$args will be passed to the starting rule if provided.
say RepeatChar.parse('aaaaaa', :rule('start'), :args(\('a')));say RepeatChar.parse('bbbbbb', :rule('start'), :args(\('b')));# OUTPUT:# ｢aaaaaa｣# ｢bbbbbb｣
action named argument is provided, it will be used as an action object, that is, for each successful regex match, a method of the same name, if it exists, is called on the action object, passing the match object as the sole positional argument.
my = class ;grammar .parse('ab', :);# OUTPUT : «42␤7␤»
Additional named arguments are used as options for matching, so you can specify things like
:pos(4) to start parsing from the fourth (zero-base) character. All matching adverbs are allowed.
say RepeatChar.parse('bbbbbb', :rule('start'), :args(\('b')), :pos(4)).Str;# OUTPUT : «bb␤»
parse only succeeds if the cursor has arrived at the end of the target string when the match is over. Use method subparse if you want to be able to stop in the middle.