14 struct grub2_word *next;
15 struct list_item argv_list;
22 struct grub2_statements {
26 struct grub2_statement {
27 struct list_item list;
36 struct grub2_statement_simple {
37 struct grub2_statement st;
38 struct grub2_argv *argv;
41 struct grub2_statement_menuentry {
42 struct grub2_statement st;
43 struct grub2_argv *argv;
44 struct grub2_statements *statements;
47 struct grub2_statement_if {
48 struct grub2_statement st;
49 struct grub2_statement *condition;
50 struct grub2_statements *true_case;
51 struct grub2_statements *false_case;
54 struct grub2_statement_block {
55 struct grub2_statement st;
56 struct grub2_statements *statements;
60 struct grub2_statements *statements;
61 struct list environment;
67 struct grub2_script *script;
70 struct grub2_statements *create_statements(struct grub2_parser *parser);
72 struct grub2_statement *create_statement_simple(struct grub2_parser *parser,
73 struct grub2_argv *argv);
75 struct grub2_statement *create_statement_menuentry(struct grub2_parser *parser,
76 struct grub2_argv *argv, struct grub2_statements *stmts);
78 struct grub2_statement *create_statement_if(struct grub2_parser *parser,
79 struct grub2_statement *condition,
80 struct grub2_statements *true_case,
81 struct grub2_statements *false_case);
83 struct grub2_statement *create_statement_block(struct grub2_parser *parser,
84 struct grub2_statements *stmts);
86 struct grub2_word *create_word(struct grub2_parser *parser, const char *text,
87 bool expand, bool split);
89 struct grub2_argv *create_argv(struct grub2_parser *parser);
91 void statement_append(struct grub2_statements *stmts,
92 struct grub2_statement *stmt);
94 void argv_append(struct grub2_argv *argv, struct grub2_word *word);
96 void word_append(struct grub2_word *w1, struct grub2_word *w2);
98 /* script interface */
100 struct grub2_script *create_script(void *ctx);