<TrainList>

<TrainList> == <Train> || ( <Trains> )

<Trains> == <Train> || <Trains> ; <Train>

A <TrainList> is either a single train (and in this case has the exact same syntax as a <Train>  element), or multiple trains, separated by a semicolon (;) and enclosed in parentheses. The <TrainList> element is especially used in the M=FOLLOW Movement.

The vehicles comprising a train are separated from each other by commas.  As such, this character is not then suitable for separating entire trains.  Therefore, the semicolon is used as a separator between entire trains.  The individual parameters of a Movement are also separated with a semicolon.  Because a <TrainList> is itself only a single parameter inside the Movement, the “real” <TrainList>, which contains multiple <Train> elements, must be enclosed in parentheses.