=========================================
Integer Literals
=========================================

module A where
a = 0
a = 1

---

(module
  (module_identifier)
  (where
    (function_declaration (variable_identifier) (function_body (integer)))
    (function_declaration (variable_identifier) (function_body (integer)))))

=========================================
Octal Literals
=========================================

module A where
a = 0o00
a = 0O77

---

(module
  (module_identifier)
  (where
    (function_declaration (variable_identifier) (function_body (integer)))
    (function_declaration (variable_identifier) (function_body (integer)))))

=========================================
Hexidecimal Literals
=========================================

module A where
a = 0x00
a = 0XFF

---

(module
  (module_identifier)
  (where
    (function_declaration (variable_identifier) (function_body (integer)))
    (function_declaration (variable_identifier) (function_body (integer)))))

=========================================
Float Literals
=========================================

module A where
a = 0.00
a = 0.99

---

(module
  (module_identifier)
  (where
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))))

=========================================
Float Literals With Exponents
=========================================

module A where
a = 0.00e01
a = 0.99E01
a = 0.00e+01
a = 0.99E-01
a = 0.00e-01
a = 0.99E+01

a = 00e01
a = 99E01
a = 00e+01
a = 99E-01
a = 00e-01
a = 99E+01

---

(module
  (module_identifier)
  (where
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))

    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))
    (function_declaration (variable_identifier) (function_body (float)))))


=========================================
Variable Identifiers
=========================================

module A where
a = undefined
_a0 = undefined
_A0 = undefined
a0 = undefined
a9 = undefined
aA = undefined
aZ' = undefined

---

(module
  (module_identifier)
  (where
    (function_declaration (variable_identifier) (function_body (variable_identifier)))
    (function_declaration (variable_identifier) (function_body (variable_identifier)))
    (function_declaration (variable_identifier) (function_body (variable_identifier)))
    (function_declaration (variable_identifier) (function_body (variable_identifier)))
    (function_declaration (variable_identifier) (function_body (variable_identifier)))
    (function_declaration (variable_identifier) (function_body (variable_identifier)))
    (function_declaration (variable_identifier) (function_body (variable_identifier)))))

=========================================
Constructor Identifiers
=========================================

module A where

data B = A
       | A0
       | A9
       | Aa
       | A_
       | Az'

---

(module
  (module_identifier)
  (where
    (algebraic_datatype_declaration
      (type_constructor_identifier)
      (constructors
        (data_constructor (constructor_identifier))
        (data_constructor (constructor_identifier))
        (data_constructor (constructor_identifier))
        (data_constructor (constructor_identifier))
        (data_constructor (constructor_identifier))
        (data_constructor (constructor_identifier))))))
