==================================================
simple functions cpp
==================================================

int main() {
  x;
}

---

(translation_unit (function_definition
  (type_specifier (identifier))
  (declarator (direct_declarator (direct_declarator (identifier))))
  (function_body (compound_statement
    (expression_statement (identifier))))))

==================================================
function calls
==================================================

int main() {
  printf("hello %s", "world");
}

---

(translation_unit (function_definition
  (type_specifier (identifier))
  (declarator (direct_declarator (direct_declarator (identifier))))
  (function_body (compound_statement
    (expression_statement (call_expression (identifier) (string) (string)))))))

==================================================
template function / relational expression ambiguities
==================================================

int main() {
  someVariable < someValue > 0.0;
  someTemplate<SomeType>(y);
}

---

(translation_unit (function_definition
  (type_specifier (identifier))
  (declarator (direct_declarator (direct_declarator (identifier))))
  (function_body (compound_statement
    (expression_statement
      (relational_expression
        (relational_expression (identifier) (identifier))
        (number)))
    (expression_statement
      (call_expression
        (template_call (identifier) (type_id (type_specifier (identifier))))
        (identifier)))))))

==================================================
template class / relational expression ambiguities
==================================================

int main() {
  SomeTemplate<SomeType> someVariable = 1;
}

---

(translation_unit (function_definition
  (type_specifier (identifier))
  (declarator (direct_declarator (direct_declarator (identifier))))
  (function_body (compound_statement
    (simple_declaration
      (type_specifier (template_call (identifier) (identifier)))
      (init_declarator
        (declarator (direct_declarator (identifier)))
        (initializer (initializer_clause (number)))))))))
