==================
int variable declaration
==================

int int_literal = 32

---

(source_file
  (statement
    (variable_declaration
      (type)
      (identifier)
      (expression
        (int_literal)))))

==================
float variable declaration
==================

float pi = 3.1

---

(source_file
  (statement
    (variable_declaration
      (type)
      (identifier)
      (expression
        (float_literal)))))


==================
string variable declaration
==================

str message = "mmmnm i love frogs"

---

(source_file
  (statement
    (variable_declaration
      (type)
      (identifier)
      (expression
        (string_literal)))))


==================
operator precedence
==================

int num = 4 + 3 * 8

---

(source_file
  (statement
    (variable_declaration
      (type)
      (identifier)
      (expression
        (binary_expression
          (expression
            (int_literal))
          (plus)
          (expression
            (binary_expression
              (expression
                (int_literal))
              (times)
              (expression
                (int_literal)))))))))


==================
normal vector
==================

vec(int) int_literal = [2, 3, 4, 5, 4]

---

(source_file
  (statement
    (variable_declaration
      (type
        (vec_type
          (type)))
      (identifier)
      (expression
        (vec_literal
          (expression
            (int_literal))
          (expression
            (int_literal))
          (expression
            (int_literal))
          (expression
            (int_literal))
          (expression
            (int_literal)))))))


==================
slightly sillier vec
==================

vec(int) int_literal = [2 3 4 5]

---

(source_file
  (statement
    (variable_declaration
      (type
        (vec_type
          (type)))
      (identifier)
      (expression
        (vec_literal
          (expression
            (int_literal))
          (expression
            (int_literal))
          (expression
            (int_literal))
          (expression
            (int_literal)))))))


==================
very silly vec
==================

vec(int) int_literal = [2 3,, 4 5,,, 4,,]

---

(source_file
  (statement
    (variable_declaration
      (type
        (vec_type
          (type)))
      (identifier)
      (expression
        (vec_literal
          (expression
            (int_literal))
          (expression
            (int_literal))
          (expression
            (int_literal))
          (expression
            (int_literal))
          (expression
            (int_literal)))))))


==================
map declaration
==================

map(str, int) team_scores = { "yellow": 2, "red": 5 }

---

(source_file
  (statement
    (variable_declaration
      (type
        (map_type
          (type)
          (type)))
      (identifier)
      (expression
        (map_literal
          (map_entry
            (expression
              (string_literal))
            (expression
              (int_literal)))
          (map_entry
            (expression
              (string_literal))
            (expression
              (int_literal))))))))


==================
bool variable declaration
==================

bool has_bitches = false

---

(source_file
  (statement
    (variable_declaration
      (type)
      (identifier)
      (expression
        (bool_literal)))))


==================
comparison
==================

bool taller_than_me = my_height < your_height

---

(source_file
  (statement
    (variable_declaration
      (type)
      (identifier)
      (expression
        (binary_expression
          (expression
            (identifier))
          (less)
          (expression
            (identifier)))))))
