Index: uspace/app/bithenge/script.c
===================================================================
--- uspace/app/bithenge/script.c	(revision ee7cc3c92a20074d550cc495551cf73975df8a10)
+++ uspace/app/bithenge/script.c	(revision 0caaaa0055efb2a5487b877b87dd4fa1094d049b)
@@ -62,4 +62,5 @@
 	TOKEN_FALSE,
 	TOKEN_IF,
+	TOKEN_REPEAT,
 	TOKEN_STRUCT,
 	TOKEN_SWITCH,
@@ -218,4 +219,7 @@
 		} else if (!str_cmp(value, "if")) {
 			state->token = TOKEN_IF;
+			free(value);
+		} else if (!str_cmp(value, "repeat")) {
+			state->token = TOKEN_REPEAT;
 			free(value);
 		} else if (!str_cmp(value, "struct")) {
@@ -654,4 +658,29 @@
 }
 
+static bithenge_transform_t *parse_repeat(state_t *state)
+{
+	expect(state, TOKEN_REPEAT);
+	expect(state, '(');
+	bithenge_expression_t *expr = parse_expression(state);
+	expect(state, ')');
+	expect(state, '{');
+	bithenge_transform_t *xform = parse_transform(state);
+	expect(state, '}');
+
+	if (state->error != EOK) {
+		bithenge_expression_dec_ref(expr);
+		bithenge_transform_dec_ref(xform);
+		return NULL;
+	}
+
+	bithenge_transform_t *repeat_xform;
+	int rc = bithenge_repeat_transform(&repeat_xform, xform, expr);
+	if (rc != EOK) {
+		error_errno(state, rc);
+		return NULL;
+	}
+	return repeat_xform;
+}
+
 /* The TOKEN_STRUCT and '{' must already have been skipped. */
 static bithenge_transform_t *parse_struct(state_t *state)
@@ -712,4 +741,6 @@
 	} else if (state->token == TOKEN_IF) {
 		return parse_if(state, false);
+	} else if (state->token == TOKEN_REPEAT) {
+		return parse_repeat(state);
 	} else if (state->token == TOKEN_STRUCT) {
 		next_token(state);
Index: uspace/app/bithenge/sequence.c
===================================================================
--- uspace/app/bithenge/sequence.c	(revision ee7cc3c92a20074d550cc495551cf73975df8a10)
+++ uspace/app/bithenge/sequence.c	(revision 0caaaa0055efb2a5487b877b87dd4fa1094d049b)
@@ -695,4 +695,5 @@
 	node->xform = self->xform;
 	node->count = count;
+	node->prefix = prefix;
 	*out = repeat_as_node(node);
 	return EOK;
