Creating a custom parse subroutine in PIR
In PIR, a subrule preamble might look like:
.sub "subrule"
.param pmc mob # incoming match state
.param pmc adverbs :named :slurpy
.local pmc match # match object to return
.local string target # current match target
.local int cpos # current match position
(match, cpos, target) = mob.'new'(adverbs :flat :named)
The last line initializes a new match object for the subrule to return to the caller, and also provides the current match position and target string.