module Language.Dhall.Lexer.Types ( Operator (..)
, Keyword (..)
, TokenType (..)
) where
import Control.DeepSeq (NFData)
import qualified Data.ByteString.Lazy as BSL
import Data.Scientific
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
| KwText
| KwDouble
| KwInteger
| KwList
| KwNatural
| KwBool
| KwOptional
| KwNatFold
| KwNatBuild
| KwNatIsZero
| KwNatEven
| KwNatOdd
| KwNatToInteger
| KwNatShow
| KwIntegerShow
| KwDoubleShow
| KwListBuild
| KwListFold
| KwListLength
| KwListHead
| KwListLast
| KwListIndexed
| KwListReverse
| KwOptionalFold
| KwOptionalBuild
| KwType
| KwKind
deriving (Eq, Show, Generic, NFData)
data TokenType = IntLit !Integer
| DoubleTok !Scientific
| NatLit !Natural
| BoolTok !Bool
| EmbedFile !BSL.ByteString
| EmbedURL !BSL.ByteString
| TypeId !BSL.ByteString
| QuotedId !BSL.ByteString
| Identifier !BSL.ByteString
| Keyword !Keyword
| Special !BSL.ByteString
| Operator !Operator
| AtToken !Integer
| BeginSplice
| EndSplice
| StringChunk !BSL.ByteString
| End
deriving (Eq, Show, Generic, NFData)