<span class="hljs-comment">; line comment</span>

<span class="hljs-attribute">ruleset</span>     =   [optional] *(group1 / group2 / <span class="hljs-keyword">SP</span>) <span class="hljs-keyword">CRLF</span> <span class="hljs-comment">; trailing comment</span>

<span class="hljs-attribute">group1</span>      =   alt1
<span class="hljs-attribute">group1</span>      =/  alt2

<span class="hljs-attribute">alt1</span>        =   <span class="hljs-symbol">%x41-4D</span> / <span class="hljs-symbol">%d78-90</span>

<span class="hljs-attribute">alt2</span>        =   <span class="hljs-symbol">%b00100001</span>

<span class="hljs-attribute">group2</span>      =   *<span class="hljs-number">1</span><span class="hljs-keyword">DIGIT</span> / <span class="hljs-number">2</span>*<span class="hljs-keyword">HEXDIG</span> / <span class="hljs-number">3</span>*<span class="hljs-number">4</span><span class="hljs-keyword">OCTET</span>
a
<span class="hljs-attribute">optional</span>    =   hex-codes
                / literal
                / sensitive
                / insensitive

<span class="hljs-attribute">hex-codes</span>   =   <span class="hljs-symbol">%x68.65.6C.6C.6F</span>
<span class="hljs-attribute">literal</span>     =   <span class="hljs-string">"string literal"</span>
<span class="hljs-attribute">sensitive</span>   =   <span class="hljs-symbol">%s</span><span class="hljs-string">"case-sensitive string"</span>
<span class="hljs-attribute">insensitive</span> =   <span class="hljs-symbol">%i</span><span class="hljs-string">"case-insensitive string"</span>
