<ParamsToAdd>

<ParamsToAdd>

<ParamsToAdd> == <ParRep> || <ParamsToAdd> , <ParRep> || <ParamsToAdd> <ParRep>

<ParRep> == <ParSel> || <RepeatCount> * <ParSelOrParAdd> || <RepeatCount> @ <ParSelOrParAdd>

<ParSelOrParAdd> == <ParAdd> || <ParSel>

<ParSel> == <ParChoice> | <ParChoice> || <ParSel> | <ParChoice>

<ParChoice> == <ParAdd> || <Probability> : <ParAdd>

<ParAdd> == [ <ParName> <AddMode> <ParamValue> ] || ( <ParamsToAdd> ) || <MacroName>

<ParName> == <Name>

<AddMode> == = || += || -= || #=

<MacroName> == <Name>

<ParamValue> == ... follows the syntax of the Parameter   <ParName>

<Probability> == <Simple>

<RepeatCount> == <Integer>

The   <ParamsToAdd> parameter is a list of other parameters, which will be added to the actual set of parameters. The simplest example (even if it has no advantage in this form):

M=STOP;C=NS_DE2R;AP=[BG=TREE1];

this line is equvalent with the following line:

M=STOP;C=NS_DE2R;BG=TREE1;

Why then this complicated form ? One can select different parameter sets:

M=STOP;C=NS_DE2R;AP=[BG=TREE1]|[FG=TREE2];

either TREE1 stays in the background, or TREE2 stays in the foreground.

This type of parameter can not only set (or replace, if was already set) a parameter, but it can extend it too. Using the += characters the content will be added after the existing part of the parameter, -= means to insert it in the beginning of the existing parameter:

M=STOP;C=NS_DE2R;BG=(M_STATION1:40;);AP=[BG=-TREE1:40-20;];

Unmatched parenthesys in ???