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.