-- | Representation of Haskell literals
module Language.Haskell.Tools.AST.Representation.Literals where

-- | Haskell literals
data ULiteral dom stage
  = UCharLit { _charLitValue :: Char 
             } -- ^ Character literal: @'c'@
  | UStringLit { _stringLitValue :: String 
               } -- ^ String literal: @"abc"@
  | UIntLit { _intLitValue :: Integer 
            } -- ^ Integer literal: @12@
  | UFracLit { _fracLitValue :: Rational 
             } -- ^ Fractional literal: @3.14@
  | UPrimIntLit { _intLitValue :: Integer 
                } -- ^ Primitive integer literal (of type @Int#@): @32#@
  | UPrimWordLit { _intLitValue :: Integer 
                 } -- ^ Primitive word literal (of type @Word#@): @32##@
  | UPrimFloatLit { _floatLitValue :: Rational 
                  } -- ^ Primitive float literal (of type @Float#@): @3.14#@
  | UPrimDoubleLit { _floatLitValue :: Rational 
                   } -- ^ Primitive double literal (of type @Double#@): @3.14##@
  | UPrimCharLit { _charLitValue :: Char 
                 } -- ^ Primitive character literal (of type @Char#@): @'c'#@
  | UPrimStringLit { _stringLitValue :: String 
                   } -- ^ Primitive string literal (of type @Addr#@): @"xxx"#@