+ statement_base_t statement;
+ expression_t *expression;
+};
+
+struct while_statement_t {
+ statement_base_t statement;
+ expression_t *condition;
+ statement_t *body;
+};
+
+struct do_while_statement_t {
+ statement_base_t statement;
+ expression_t *condition;
+ statement_t *body;
+};
+
+struct for_statement_t {
+ statement_base_t statement;
+ expression_t *initialisation;
+ expression_t *condition;
+ expression_t *step;
+ statement_t *body;
+ context_t context;
+};
+
+struct asm_constraint_t {
+ const char *constraints;
+ expression_t *expression;
+ symbol_t *symbol;
+ asm_constraint_t *next;
+};
+
+struct asm_clobber_t {
+ const char *clobber;
+ asm_clobber_t *next;
+};
+
+struct asm_statement_t {
+ statement_base_t statement;
+ const char *asm_text;
+ asm_constraint_t *inputs;
+ asm_constraint_t *outputs;
+ asm_clobber_t *clobbers;
+ bool is_volatile;