==================
hex literal
==================

discard 0x0123456789_ABCDEF_abcdef
discard 0X0

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)))))))

==================
dec literal
==================

discard 01234_56789
discard 0

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)))))))

==================
oct literal
==================

discard 0o0123_4567
discard 0o0

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)))))))

==================
bin literal
==================

discard 0b0_1
discard 0B0

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)))))))

==================
uint8-64 literal
==================

discard 01234_56789'i8
discard 01234_56789'I8
discard 0B101'i16
discard 0o1234_567'i32
discard 0X1234_56789_abcDEF'i64
discard 01234_56789'u
discard 01234_56789'u8
discard 01234_56789'U8
discard 0B101'u16
discard 0o1234_567'u32
discard 0X1234_56789_abcDEF'u64
discard 01234_56789i8
discard 01234_56789I8
discard 0B101i16
discard 0o1234_567i32
discard 0X1234_56789_abcDEFi64
discard 01234_56789u
discard 01234_56789u8
discard 01234_56789U8
discard 0B101u16
discard 0o1234_567u32
discard 0X1234_56789_abcDEFu64

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (int_suffix)))))))

==================
float literal
==================

discard 123.123e-123
discard 123.123
discard 123e123
discard 123e+123

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (float_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (float_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (float_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (float_lit)))))))

==================
float32 literal
==================

discard 0xff'f
discard 0xff'f32
discard 0b01f
discard 0o36'f32
discard 123.123f

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (float_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (float_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (float_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (float_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (float_lit)
            (float_suffix)))))))

==================
float64 literal
==================

discard 0xff'f
discard 0xff'f64
discard 0b01d
discard 0o36'D
discard 123.123f

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (float_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (float_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (float_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (int_lit)
            (float_suffix))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (float_lit)
            (float_suffix)))))))

==================
char literal
==================

discard '0'
discard '1'
discard '2'
discard '3'
discard '4'
discard '5'
discard '6'
discard '7'
discard '8'
discard '9'
discard 'a'
discard 'b'
discard 'c'
discard 'd'
discard 'e'
discard 'f'
discard 'g'
discard 'h'
discard 'i'
discard 'j'
discard 'k'
discard 'l'
discard 'm'
discard 'n'
discard 'o'
discard 'p'
discard 'q'
discard 'r'
discard 's'
discard 't'
discard 'u'
discard 'v'
discard 'w'
discard 'x'
discard 'y'
discard 'z'
discard 'A'
discard 'B'
discard 'C'
discard 'D'
discard 'E'
discard 'F'
discard 'G'
discard 'H'
discard 'I'
discard 'J'
discard 'K'
discard 'L'
discard 'M'
discard 'N'
discard 'O'
discard 'P'
discard 'Q'
discard 'R'
discard 'S'
discard 'T'
discard 'U'
discard 'V'
discard 'W'
discard 'X'
discard 'Y'
discard 'Z'
discard '!'
discard '@'
discard '#'
discard '$'
discard '%'
discard '^'
discard '&'
discard '*'
discard '('
discard ')'
discard '{'
discard '}'
discard '['
discard ']'
discard '<'
discard '>'
discard '`'
discard '~'
discard '_'
discard '-'
discard '='
discard '+'
discard '/'
discard '?'
discard '.'
discard ','
discard ';'
discard ':'
discard '"'
discard '|'
discard ' '
discard '\r'
discard '\c'
discard '\n'
discard '\l'
discard '\f'
discard '\t'
discard '\v'
discard '\\'
discard '\"'
discard '\''
discard '\a'
discard '\b'
discard '\e'
discard '\xa9'
discard '\123'

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (char_lit
              (char_esc_seq))))))))

==================
string literal
==================

discard "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
discard "!@#$%^&*(){}[]<>`~_-=+/?.,;:'|"
discard "\r\c\n\l\f\t\v\\\"\'\a\b\e\xa9\123\uabcd\u{012345}"

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (str_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (str_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (str_lit
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq)
              (str_esc_seq))))))))

==================
triple string literal
==================

discard """"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
"!@#$%^&*(){}[]<>`~_-=+/?.,;:'|"
"\r\c\n\l\f\t\v\\\"\'\a\b\e\xa9\123\uabcd\u{012345}
""""
discard r"""same"""

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (triplestr_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (triplestr_lit)))))))

==================
raw string literal
==================

discard r"heya"
discard R"hi""h\ni"
discard "hi"

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (rstr_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (rstr_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (str_lit)))))))

==================
raw strint / ident disambiguation
==================

discard r""""""
discard r""
discard r
discard R""""""
discard R""
discard R

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (triplestr_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (rstr_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (symbol
            (ident))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (triplestr_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (rstr_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (symbol
            (ident)))))))

==================
generalized string literal
==================

discard mich_404"tree lhfea lakshd;fl"

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (generalizedLit
            (generalized_str_lit
              (ident))))))))

==================
generalized triple string literal
==================

discard hgasld_1234r"""sa
asdfj
laskhdf//lkhqwe;rme"""

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (generalizedLit
            (generalized_triplestr_lit
              (ident))))))))

==================
custom numeric literal
==================

discard 0o34'sdf_89_coo
discard 13.123e-743'asdf_89

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (custom_numeric_lit
              (int_lit)
              (customNumericLitSuffix)))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (custom_numeric_lit
              (float_lit)
              (customNumericLitSuffix))))))))

==================
nil literal
==================

discard nil

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (nil_lit)))))))

==================
bool literal
==================

discard true
discard false

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (bool_lit))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (bool_lit)))))))

==================
arrayConstr
==================

discard []
discard [0]
discard [0, 1]
discard [
0
,
1
]
discard [A:0, T.B:1]

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (arrayConstr)))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (arrayConstr
            (exprColonExprList
              (exprColonExpr
                (expr
                  (primary
                    (literal
                      (int_lit)))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (arrayConstr
            (exprColonExprList
              (exprColonExpr
                (expr
                  (primary
                    (literal
                      (int_lit)))))
              (exprColonExpr
                (expr
                  (primary
                    (literal
                      (int_lit)))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (arrayConstr
            (exprColonExprList
              (exprColonExpr
                (expr
                  (primary
                    (literal
                      (int_lit)))))
              (exprColonExpr
                (expr
                  (primary
                    (literal
                      (int_lit)))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (arrayConstr
            (exprColonExprList
              (exprColonExpr
                (expr
                  (primary
                    (symbol
                      (ident))))
                (expr
                  (primary
                    (literal
                      (int_lit)))))
              (exprColonExpr
                (expr
                  (primary
                    (symbol
                      (ident))
                    (primarySuffix
                      (qualifiedSuffix
                        (symbol
                          (ident))))))
                (expr
                  (primary
                    (literal
                      (int_lit))))))))))))

==================
setConstr
==================

discard {}
discard {0}
discard {0, 1}
discard {
  0
  ,
  1
}

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (setConstr)))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (setConstr
            (exprList
              (expr
                (primary
                  (literal
                    (int_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (setConstr
            (exprList
              (expr
                (primary
                  (literal
                    (int_lit))))
              (expr
                (primary
                  (literal
                    (int_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (setConstr
            (exprList
              (expr
                (primary
                  (literal
                    (int_lit))))
              (expr
                (primary
                  (literal
                    (int_lit)))))))))))

==================
tableConstr
==================

discard {:}
discard {0:1}
discard {0:1, 5:6}
discard {
  0:1,
  5:6
  }

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tableConstr)))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tableConstr
            (exprColonExpr
              (expr
                (primary
                  (literal
                    (int_lit))))
              (expr
                (primary
                  (literal
                    (int_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tableConstr
            (exprColonExpr
              (expr
                (primary
                  (literal
                    (int_lit))))
              (expr
                (primary
                  (literal
                    (int_lit)))))
            (exprColonExpr
              (expr
                (primary
                  (literal
                    (int_lit))))
              (expr
                (primary
                  (literal
                    (int_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tableConstr
            (exprColonExpr
              (expr
                (primary
                  (literal
                    (int_lit))))
              (expr
                (primary
                  (literal
                    (int_lit)))))
            (exprColonExpr
              (expr
                (primary
                  (literal
                    (int_lit))))
              (expr
                (primary
                  (literal
                    (int_lit)))))))))))

==================
tupleConstr
==================

discard ()
discard (0,)
discard (0, 1)
discard (
  0
  ,
  1
)
discard (a:1)
discard (a:1, b:6)

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tupleConstr)))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tupleConstr
            (symbolColonExpr
              (expr
                (primary
                  (literal
                    (int_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tupleConstr
            (symbolColonExpr
              (expr
                (primary
                  (literal
                    (int_lit)))))
            (symbolColonExpr
              (expr
                (primary
                  (literal
                    (int_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tupleConstr
            (symbolColonExpr
              (expr
                (primary
                  (literal
                    (int_lit)))))
            (symbolColonExpr
              (expr
                (primary
                  (literal
                    (int_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tupleConstr
            (symbolColonExpr
              (symbol
                (ident))
              (expr
                (primary
                  (literal
                    (int_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (tupleConstr
            (symbolColonExpr
              (symbol
                (ident))
              (expr
                (primary
                  (literal
                    (int_lit)))))
            (symbolColonExpr
              (symbol
                (ident))
              (expr
                (primary
                  (literal
                    (int_lit)))))))))))

==================
interpolated_str_lit
==================

discard & "hi{'i'}"
discard &"hi{'i'}hi{'i'}"
discard fmt"hi{'i'}"
discard fmt"hi{'i'}hi{'i'}"

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (interpolated_str_lit
              (expr
                (primary
                  (literal
                    (char_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (interpolated_str_lit
              (expr
                (primary
                  (literal
                    (char_lit))))
              (expr
                (primary
                  (literal
                    (char_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (interpolated_str_lit
              (expr
                (primary
                  (literal
                    (char_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (interpolated_str_lit
              (expr
                (primary
                  (literal
                    (char_lit))))
              (expr
                (primary
                  (literal
                    (char_lit)))))))))))

==================
interpolated_triplestr_lit
==================

discard & """hi{'i'}hi{'i'}"""
discard &"""hi{'i'}hi{'i'}"""
discard &"""hi{'i'}
hi{'i'}"""
discard fmt"""hi{'i'}hi{'i'}"""
discard fmt"""hi{'i'}
hi{'i'}"""

---

(module
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (interpolated_triplestr_lit
              (expr
                (primary
                  (literal
                    (char_lit))))
              (expr
                (primary
                  (literal
                    (char_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (interpolated_triplestr_lit
              (expr
                (primary
                  (literal
                    (char_lit))))
              (expr
                (primary
                  (literal
                    (char_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (interpolated_triplestr_lit
              (expr
                (primary
                  (literal
                    (char_lit))))
              (expr
                (primary
                  (literal
                    (char_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (interpolated_triplestr_lit
              (expr
                (primary
                  (literal
                    (char_lit))))
              (expr
                (primary
                  (literal
                    (char_lit))))))))))
  (stmt
    (discardStmt
      (keyw)
      (expr
        (primary
          (literal
            (interpolated_triplestr_lit
              (expr
                (primary
                  (literal
                    (char_lit))))
              (expr
                (primary
                  (literal
                    (char_lit)))))))))))

