================================================================================
char: [a-zA-Z0-9_]
================================================================================

a = 'a'
a = 'b'
a = '0'
a = '1'
a = '_'
a = 'A'
a = 'B'
a = ','

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))))

================================================================================
char: symbols
================================================================================

a = '!'
a = '#'
a = '$'
a = '%'
a = '&'
a = '⋆'
a = '+'
a = '.'
a = '/'
a = '<'
a = '='
a = '>'
a = '?'
a = '^'
a = '|'
a = '-'
a = '~'
a = ':'
a = '"'

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))))

================================================================================
char: special symbols
================================================================================

a = '('
a = ')'
a = ';'
a = '['
a = ']'
a = '`'
a = '{'
a = '}'

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))))

================================================================================
char: character escape
================================================================================

a = '\a'
a = '\b'
a = '\f'
a = '\n'
a = '\r'
a = '\t'
a = '\v'
a = '\\'
a = '\"'
a = '\''
a = '\&'

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))))

================================================================================
char: space
================================================================================

a = ' '

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (literal
          (char))))))

================================================================================
char: escape ascii
================================================================================

a = '\NUL'
a = '\SOH'
a = '\STX'
a = '\ETX'
a = '\EOT'
a = '\ENQ'
a = '\ACK'
a = '\BEL'
a = '\BS'
a = '\HT'
a = '\LF'
a = '\VT'
a = '\FF'
a = '\CR'
a = '\SO'
a = '\SI'
a = '\DLE'
a = '\DC1'
a = '\DC2'
a = '\DC3'
a = '\DC4'
a = '\NAK'
a = '\SYN'
a = '\ETB'
a = '\CAN'
a = '\EM'
a = '\SUB'
a = '\ESC'
a = '\FS'
a = '\GS'
a = '\RS'
a = '\US'
a = '\SP'
a = '\DEL'

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))))

================================================================================
char: Escape Control Characters
================================================================================

a = '\^A'
a = '\^Z'
a = '\^@'
a = '\^['
a = '\^]'
a = '\^\'
a = '\^^'
a = '\^_'

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))))

================================================================================
char: non-ascii unicode
================================================================================

a = '‘'

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (literal
          (char))))))

================================================================================
char: unicode whitespace
================================================================================

a = a a

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (apply
          (variable)
          (variable))))))

================================================================================
char: magic hash
================================================================================

a = 'a'#
a = 'a'##

--------------------------------------------------------------------------------

(haskell
  (declarations
    (bind
      (variable)
      (match
        (literal
          (char))))
    (bind
      (variable)
      (match
        (literal
          (char))))))
