13 struct grub2_word *next;
14 struct list_item argv_list;
21 struct grub2_statement_simple {
22 struct grub2_argv *argv;
25 struct grub2_statement_menuentry {
26 struct grub2_argv *argv;
27 struct grub2_statements *statements;
30 struct grub2_statement_if {
31 struct grub2_statement *condition;
32 struct grub2_statements *true_case;
33 struct grub2_statements *false_case;
36 struct grub2_statement_block {
37 struct grub2_statements *statements;
40 struct grub2_statement {
41 struct list_item list;
49 struct grub2_statement_simple simple;
50 struct grub2_statement_menuentry menuentry;
51 struct grub2_statement_if ifstmt;
52 struct grub2_statement_block block;
56 struct grub2_statements {
62 struct grub2_statements *statements;
65 struct grub2_statements *create_statements(struct grub2_parser *parser);
67 struct grub2_statement *create_statement_simple(struct grub2_parser *parser,
68 struct grub2_argv *argv);
70 struct grub2_statement *create_statement_menuentry(struct grub2_parser *parser,
71 struct grub2_argv *argv, struct grub2_statements *stmts);
73 struct grub2_statement *create_statement_if(struct grub2_parser *parser,
74 struct grub2_statement *condition,
75 struct grub2_statements *true_case,
76 struct grub2_statements *false_case);
78 struct grub2_statement *create_statement_block(struct grub2_parser *parser,
79 struct grub2_statements *stmts);
81 struct grub2_word *create_word(struct grub2_parser *parser, const char *text,
82 bool expand, bool split);
84 struct grub2_argv *create_argv(struct grub2_parser *parser);
86 void statement_append(struct grub2_statements *stmts,
87 struct grub2_statement *stmt);
89 void argv_append(struct grub2_argv *argv, struct grub2_word *word);
91 void word_append(struct grub2_word *w1, struct grub2_word *w2);