resources/messages/attributeDescriptions/pin.html (20 lines of code) (raw):
<html>
<body>
The number or pattern of expression to pin.
<h2>The contract:</h2>
<ol>
<li>Pin is applied to items of grammar sequence expressions</li>
<li>While matching a sequence parser will ignore errors after a pinned item</li>
</ol>
<h2>Parenthesized list example:</h2>
<pre><code>
{
tokens=[number="regexp:\d+" comma="," paren1="(" paren2=")"]
}
list ::= "(" items? ")" {pin=1} // or {pin="("}
private items ::= [!")" item (',' item) * ] {pin(".*")=1}
item ::= number {recoverWhile=item_recover}
private item_recover ::= !(")" | ",")
</code></pre>
</body>
</html>