match_byte(0);
match_byte(0);
- if (match_u32 (1))
- match_byte (0);
- else if (match_byte (1))
+ if (match_byte (1))
{
- match_byte (0);
- if (!match_u32 (2))
- match_u32_assert (1);
- match_byte (0);
+ if (!match_byte (0) && !match_byte (1))
+ match_byte_assert (2);
}
- else if (!match_u32(2))
- match_u32_assert (0);
+ else if (!match_byte (2))
+ match_byte_assert (0);
+ match_byte_assert (0);
+ match_byte_assert (0);
+ match_byte_assert (0);
int indx = get_u32();
int n_categories = get_u32();
printf ("<dimension index=\"%d\">\n", indx);
dump_value (stdout, 0);
- /* This byte is usually 0x02 but many other values have been spotted. */
+ /* This byte is usually 0 but many other values have been spotted. */
pos++;
if (!match_byte(0) && !match_byte(1))
7 40 0 64173 0/1 8 10/11 1 1
8 40 0 2 3 8 10/11 1 4
@end example
+
+@example
+dimensions := int[n-dims] dimension*[n-dims]
+dimension := value[name]
+ byte[d1]
+ (00 | 01 | 02)[d2]
+ (i0 | i2)[d3]
+ (00 | 01)[d4]
+ (00 | 01)[d5]
+ 01
+ int[d6]
+ int[n-categories] category*[n-categories]
+@end example
+
+@code{name} is the name of the dimension, e.g. @code{Variables},
+@code{Statistics}, or a variable name.
+
+@code{d1} is usually 0 but many other values have been observed.
+
+@code{d3} is 2 over 99% of the time.
+
+@code{d5} is 0 over 99% of the time.
+
+@code{d6} is either -1 or the 0-based index of the dimension, e.g.@: 0
+for the first dimension, 1 for the second, and so on. The latter is
+the case 98% of the time in the corpus.
+
+@example
+category := value i1
+ (00 | 01 (00 | 01 | 02) | 02) 00 00 00
+@end example