-
- for (i=start; i<=end; i++) {
- value = bprintf("%s%d%s", prefix, i, suffix);
- xbt_dynar_push(current_set, &value);
- }
-
+ radical_elements = xbt_str_split(radical,",");
+ xbt_dynar_foreach(radical_elements,iter, groups) {
+
+ radical_ends = xbt_str_split(groups, "-");
+ switch (xbt_dynar_length(radical_ends)) {
+ case 1:
+ surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char*));
+ value = bprintf("%s%d%s", prefix, start, suffix);
+ xbt_dynar_push(current_set, &value);
+ break;
+
+ case 2:
+
+ surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char*));
+ surf_parse_get_int(&end, xbt_dynar_get_as(radical_ends, 1, char*));
+
+
+ for (i=start; i<=end; i++) {
+ value = bprintf("%s%d%s", prefix, i, suffix);
+ xbt_dynar_push(current_set, &value);
+ }
+ break;
+
+ default:
+ surf_parse_error(xbt_strdup("Malformed radical"));
+ }
+
+ xbt_dynar_free(&radical_ends);
+ }
+