Understanding RFC notation

I’m trying to write a parser for RFC 2231 because none of the more complex options are parsed by the available mime parsers. However, I can’t find where the notation of the RFCs are explained. The start of the 2231 RFC is as follows:

parameter := regular-parameter / extended-parameter
regular-parameter := regular-parameter-name “=” value
regular-parameter-name := attribute [section]
attribute := 1attribute-char
attribute-char := <any (US-ASCII) CHAR except SPACE, CTLs, "
", “’”, “%”, or tspecials>
section := initial-section / other-sections

So some things seem clear:
:= is “assignment”
/ is “or”
[] is optional I think

But where are the loops? Does the plural of “other sections” imply a loop? Here is an example from the RFC:

Content-Type: message/external-body; access-type=URL;

which is identical to

Content-Type: message/external-body; access-type=URL;


Content-Type: application/x-stuff
title*2=“isn’t it!”

is supposed to be identical to

Content-Type: application/x-stuff;

But why are the semicolons missing in the above example between the lines? Oh, and the semicolons aren’t mentioned at all in the spec.

Confused… Does anyone know where I can find more information about the notation?

RFCs use ABNF notation as described in RFC 5234.

It looks like it’s a known error in the spec. Check the errata page for a full list of known errors.

Thanks, Andrew! Perfect. And this means that the brain hasn’t melted after all.