This is perhaps the most complex syntax issue in the file format, but is very strict: Commas are used to separate array members; semicolons terminate every data item.
For example, if we have a template defined as
template foo {
DWORD bar;
}
then an instance of this would look like
foo dataFoo {
1;
}
Next, we have a template containing another template
template foo {
DWORD bar;
DWORD bar2;
}
template container {
FLOAT aFloat;
foo aFoo;
}
then an instance of this would look like
container dataContainer {
1.1;
2; 3;;
}
Note that the second line that represents the foo inside container has two semi-colons at the end of the line. The first indicates the end of the data item aFoo (inside container), and the second indicates the end of the container.
Next we consider arrays.
Template foo {
array DWORD bar[3];
}
then an instance of this would look like
foo aFoo {
1, 2, 3;
}
In the array case, there is no need for the data items to be separated by a semi-colon as they are delineated by a comma. The semi-colon at the end marks the end of the array.
Now consider a template that contains an array of data items defined by a template
template foo {
DWORD bar;
DWORD bar2;
}
template container {
DWORD count;
array foo fooArray[count];
}
then an instance of this would look like
container aContainer {
3;
1;2;,3;4;,5;6;;
}