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;
URL0=“ftp://”;
URL
1=“cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar”

which is identical to

Content-Type: message/external-body; access-type=URL;
URL=“ftp://cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar

Also

Content-Type: application/x-stuff
title0=us-ascii’en’This%20is%20even%20more%20
title1=%2A%2A%2Afun%2A%2A%2A%20
title*2=“isn’t it!”

is supposed to be identical to

Content-Type: application/x-stuff;
title*=us-ascii’en-us’This%20is%20%2A%2A%2Afun%2A%2A%2A

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.