==================
Operator precedence
==================
1+2*3+4
---
    (expr
      (binary_expression
        (binary_expression
          (int_literal
            (decimal_literal))
          (binary_expression
            (int_literal
              (decimal_literal))
            (int_literal
              (decimal_literal))))
        (int_literal
          (decimal_literal))))

==================
Conditional
==================
a ? b || d : c || e
---
    (expr
      (conditional_expression
        (identifier)
        (binary_expression
          (identifier)
          (identifier))
        (binary_expression
          (identifier)
          (identifier))))

==================
Select
==================
a.b.c
---
    (expr
      (select_expression
        (select_expression
          (identifier)
          (identifier))
        (identifier)))

==================
Call
==================
a(1, 2) + b()
---
   (expr
      (binary_expression
        (call_expression
          (identifier)
          (arguments
            (int_literal
              (decimal_literal))
            (int_literal
              (decimal_literal))))
        (call_expression
          (identifier)
          (arguments))))

==================
Member call
==================
a.b() + a.b.c(1, 2)
---
    (expr
      (binary_expression
        (member_call_expression
          (identifier)
          (identifier)
          (arguments))
        (member_call_expression
          (select_expression
            (identifier)
            (identifier))
          (identifier)
          (arguments
            (int_literal
              (decimal_literal))
            (int_literal
              (decimal_literal))))))

==================
Index
==================
a[1] + b.c[2.0] + d[1][2] + e[1].f(1, 2)
---
   (expr
      (binary_expression
        (binary_expression
          (binary_expression
            (index_expression
              (identifier)
              (int_literal
                (decimal_literal)))
            (index_expression
              (select_expression
                (identifier)
                (identifier))
              (float_literal)))
          (index_expression
            (index_expression
              (identifier)
              (int_literal
                (decimal_literal)))
            (int_literal
              (decimal_literal))))
        (member_call_expression
          (index_expression
            (identifier)
            (int_literal
              (decimal_literal)))
          (identifier)
          (arguments
            (int_literal
              (decimal_literal))
            (int_literal
              (decimal_literal))))))

==================
Uint literal
==================
1u + 0x1u + 0b1u + 0o1u
---
    (expr
      (binary_expression
        (binary_expression
          (binary_expression
            (uint_literal
              (int_literal
                (decimal_literal)))
            (uint_literal
              (int_literal
                (hex_literal))))
          (uint_literal
            (int_literal
              (binary_literal))))
        (uint_literal
          (int_literal
            (octal_literal)))))

==================
List expr
==================
[1, 2+a, 3u][1]
---
    (expr
      (index_expression
        (list_expression
          (int_literal
            (decimal_literal))
          (binary_expression
            (int_literal
              (decimal_literal))
            (identifier))
          (uint_literal
            (int_literal
              (decimal_literal))))
        (int_literal
          (decimal_literal))))


==================
Map expr
==================
{a: 1, 'b': 2, "c": 3}[a]
---
  (expr
      (index_expression
        (map_expression
          (map_entry
            (identifier)
            (int_literal
              (decimal_literal)))
          (map_entry
            (string_literal
              (single_quoted_string_literal))
            (int_literal
              (decimal_literal)))
          (map_entry
            (string_literal
              (double_quote_string_literal))
            (int_literal
              (decimal_literal))))
        (identifier)))

==================
String literal
==================
"a" + b'b' + br"c" + hello"d"
---
    (expr
      (binary_expression
        (binary_expression
          (binary_expression
            (string_literal
              (double_quote_string_literal))
            (string_literal
              (identifier)
              (single_quoted_string_literal)))
          (string_literal
            (identifier)
            (double_quote_string_literal)))
        (string_literal
          (identifier)
          (double_quote_string_literal))))
