dhall-lex-0.1.0.0: src/Language/Dhall/Lexer/Types.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
module Language.Dhall.Lexer.Types ( Operator (..)
, Keyword (..)
, TokenType (..)
) where
import Control.DeepSeq (NFData)
import qualified Data.ByteString.Lazy as BSL
import GHC.Generics (Generic)
import GHC.Natural (Natural)
-- | The operator type holds some special builtin symbols.
data Operator = CombineTok
| PreferTok
| ArrowTok -- @→@ or @->@
| LambdaTok -- @λ@ or @\\@
| AndTok -- @&&@
| OrTok -- @||@
| EqTok -- @==@
| NeqTok -- @!=@
| AppendTok -- @++@
deriving (Eq, Show, Generic, NFData)
-- | Data type for reserved keywords.
data Keyword = KwLet
| KwIn
| KwConstructors
| KwMerge
| KwForall -- @forall@ or @∀@
| KwIf
| KwThen
| KwElse
deriving (Eq, Show, Generic, NFData)
-- | This is a data type for tokens, stripped of any annotation.
data TokenType = IntLit !Integer
| DoubleLit !Double
| NatLit !Natural
| BoolLit !Bool
| Embedded !BSL.ByteString
| StringLit !BSL.ByteString
| TypeId !BSL.ByteString
| QuotedId !BSL.ByteString
| Identifier !BSL.ByteString
| Keyword !Keyword
| Special !BSL.ByteString
| Operator !Operator
| BeginSplice -- @${@, only occurs inside a string
| EndSplice -- @}@
| StringChunk !BSL.ByteString
| End
deriving (Eq, Show, Generic, NFData)