============================================
Expression statements
============================================

int main() {
  x;
}

---

(function_declaration
  (identifier)
  (identifier)
  (formal_parameters)
  (statement_block
    (expression_statement (identifier))))

============================================
If statements
============================================

int main() {
  if (a)
    b;

  if (!a) {
    b;
  } else {
    c;
  }
}

---

(function_declaration
  (identifier)
  (identifier)
  (formal_parameters)
  (statement_block
    (if_statement (identifier)
      (expression_statement (identifier)))
    (if_statement (bool_op (identifier))
      (statement_block
        (expression_statement (identifier)))
      (statement_block
        (expression_statement (identifier))))))

============================================
For loops
============================================

int main() {
  for (;;)
    x;

  for (int i = 0; i < 5; i++) {
    y;
  }

  for (start(); check(); step())
    z;
}

---

(function_declaration (identifier) (identifier) (formal_parameters)
  (statement_block
    (for_statement
      (expression_statement (identifier)))
    (for_statement
      (var_declaration (identifier) (var_assignment (identifier) (number)))
      (rel_op (identifier) (number))
      (math_op (identifier))
      (statement_block (expression_statement (identifier))))
    (for_statement
      (function_call (identifier))
      (function_call (identifier))
      (function_call (identifier))
      (expression_statement (identifier)))))

============================================
While loops
============================================

int main() {
  while (x)
    printf("hi");
}

---

(function_declaration (identifier) (identifier) (formal_parameters)
  (statement_block
    (while_statement (identifier)
      (expression_statement (function_call (identifier) (string))))))
