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)
data Operator = CombineTok
| PreferTok
| ArrowTok
| LambdaTok
| AndTok
| OrTok
| EqTok
| NeqTok
| AppendTok
deriving (Eq, Show, Generic, NFData)
data Keyword = KwLet
| KwIn
| KwConstructors
| KwMerge
| KwForall
| KwIf
| KwThen
| KwElse
deriving (Eq, Show, Generic, NFData)
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
| EndSplice
| StringChunk !BSL.ByteString
| End
deriving (Eq, Show, Generic, NFData)