13 struct grub2_word *next;
14 struct list_item argv_list;
21 struct grub2_statements {
25 struct grub2_statement {
26 struct list_item list;
35 struct grub2_statement_simple {
36 struct grub2_statement st;
37 struct grub2_argv *argv;
40 struct grub2_statement_menuentry {
41 struct grub2_statement st;
42 struct grub2_argv *argv;
43 struct grub2_statements *statements;
46 struct grub2_statement_if {
47 struct grub2_statement st;
48 struct grub2_statement *condition;
49 struct grub2_statements *true_case;
50 struct grub2_statements *false_case;
53 struct grub2_statement_block {
54 struct grub2_statement st;
55 struct grub2_statements *statements;
59 struct grub2_statements *statements;
64 struct grub2_script *script;
67 struct grub2_statements *create_statements(struct grub2_parser *parser);
69 struct grub2_statement *create_statement_simple(struct grub2_parser *parser,
70 struct grub2_argv *argv);
72 struct grub2_statement *create_statement_menuentry(struct grub2_parser *parser,
73 struct grub2_argv *argv, struct grub2_statements *stmts);
75 struct grub2_statement *create_statement_if(struct grub2_parser *parser,
76 struct grub2_statement *condition,
77 struct grub2_statements *true_case,
78 struct grub2_statements *false_case);
80 struct grub2_statement *create_statement_block(struct grub2_parser *parser,
81 struct grub2_statements *stmts);
83 struct grub2_word *create_word(struct grub2_parser *parser, const char *text,
84 bool expand, bool split);
86 struct grub2_argv *create_argv(struct grub2_parser *parser);
88 void statement_append(struct grub2_statements *stmts,
89 struct grub2_statement *stmt);
91 void argv_append(struct grub2_argv *argv, struct grub2_word *word);
93 void word_append(struct grub2_word *w1, struct grub2_word *w2);
95 /* script interface */
97 struct grub2_script *create_script(void *ctx);