if (designator->symbol == NULL) {
print_char('[');
print_expression(designator->array_index);
+ if (designator->range_last) {
+ print_string(" ... ");
+ print_expression(designator->range_last);
+ }
print_char(']');
} else {
print_char('.');
position_t pos;
symbol_t *symbol; /**< the symbol if any */
expression_t *array_index; /**< the array index if any */
+ expression_t *range_last; /**< last index of a range initializer, if any */
designator_t *next;
};
designator->pos = *HERE;
eat('[');
add_anchor_token(']');
+ add_anchor_token(T_DOTDOTDOT);
designator->array_index = parse_constant_expression();
+ if (accept(T_DOTDOTDOT)) {
+ designator->range_last = parse_constant_expression();
+ errorf(&designator->pos, "range initializer not supported");
+ }
+ rem_anchor_token(T_DOTDOTDOT);
rem_anchor_token(']');
expect(']');
break;