/* we just flatten everything */
$$ = create_statement_block(parser, $6);
}
+ | "for" TOKEN_DELIM word TOKEN_DELIM "in" TOKEN_DELIM words TOKEN_EOL
+ "do" sep
+ statements
+ "done" {
+ $$ = create_statement_for(parser, $3, $7, $11);
+ }
words: word {
$$ = create_argv(parser);
return &stmt->st;
}
+struct grub2_statement *create_statement_for(struct grub2_parser *parser,
+ struct grub2_word *var, struct grub2_argv *list,
+ struct grub2_statements *body)
+{
+ struct grub2_statement_for *stmt =
+ talloc(parser, struct grub2_statement_for);
+ stmt->st.exec = statement_for_execute;
+ stmt->var = var;
+ stmt->list = list;
+ stmt->body = body;
+ return &stmt->st;
+}
+
void statement_append(struct grub2_statements *stmts,
struct grub2_statement *stmt)
{
YY_BUFFER_STATE bufstate;
int rc;
+ if (!len)
+ return;
+
parser->script->filename = filename;
bufstate = yy_scan_bytes(buf, len - 1, parser->scanner);