{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE StrictData    #-}
module Language.Happy.Tokens
    ( LexemeClass (..)
    ) where

import           Data.Aeson   (FromJSON, ToJSON)
import           GHC.Generics (Generic)

data LexemeClass
    = IdName

    | KwErrorhandlertype
    | KwError
    | KwExpect
    | KwLeft
    | KwLexer
    | KwMonad
    | KwName
    | KwRight
    | KwToken
    | KwTokentype

    | PctColon
    | PctColonColon
    | PctPercentPercent
    | PctPipe

    | LitCode
    | LitInteger
    | LitString

    | ErrorToken
    | Eof
    deriving (Int -> LexemeClass
LexemeClass -> Int
LexemeClass -> [LexemeClass]
LexemeClass -> LexemeClass
LexemeClass -> LexemeClass -> [LexemeClass]
LexemeClass -> LexemeClass -> LexemeClass -> [LexemeClass]
(LexemeClass -> LexemeClass)
-> (LexemeClass -> LexemeClass)
-> (Int -> LexemeClass)
-> (LexemeClass -> Int)
-> (LexemeClass -> [LexemeClass])
-> (LexemeClass -> LexemeClass -> [LexemeClass])
-> (LexemeClass -> LexemeClass -> [LexemeClass])
-> (LexemeClass -> LexemeClass -> LexemeClass -> [LexemeClass])
-> Enum LexemeClass
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: LexemeClass -> LexemeClass -> LexemeClass -> [LexemeClass]
$cenumFromThenTo :: LexemeClass -> LexemeClass -> LexemeClass -> [LexemeClass]
enumFromTo :: LexemeClass -> LexemeClass -> [LexemeClass]
$cenumFromTo :: LexemeClass -> LexemeClass -> [LexemeClass]
enumFromThen :: LexemeClass -> LexemeClass -> [LexemeClass]
$cenumFromThen :: LexemeClass -> LexemeClass -> [LexemeClass]
enumFrom :: LexemeClass -> [LexemeClass]
$cenumFrom :: LexemeClass -> [LexemeClass]
fromEnum :: LexemeClass -> Int
$cfromEnum :: LexemeClass -> Int
toEnum :: Int -> LexemeClass
$ctoEnum :: Int -> LexemeClass
pred :: LexemeClass -> LexemeClass
$cpred :: LexemeClass -> LexemeClass
succ :: LexemeClass -> LexemeClass
$csucc :: LexemeClass -> LexemeClass
Enum, LexemeClass
LexemeClass -> LexemeClass -> Bounded LexemeClass
forall a. a -> a -> Bounded a
maxBound :: LexemeClass
$cmaxBound :: LexemeClass
minBound :: LexemeClass
$cminBound :: LexemeClass
Bounded, Eq LexemeClass
Eq LexemeClass
-> (LexemeClass -> LexemeClass -> Ordering)
-> (LexemeClass -> LexemeClass -> Bool)
-> (LexemeClass -> LexemeClass -> Bool)
-> (LexemeClass -> LexemeClass -> Bool)
-> (LexemeClass -> LexemeClass -> Bool)
-> (LexemeClass -> LexemeClass -> LexemeClass)
-> (LexemeClass -> LexemeClass -> LexemeClass)
-> Ord LexemeClass
LexemeClass -> LexemeClass -> Bool
LexemeClass -> LexemeClass -> Ordering
LexemeClass -> LexemeClass -> LexemeClass
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: LexemeClass -> LexemeClass -> LexemeClass
$cmin :: LexemeClass -> LexemeClass -> LexemeClass
max :: LexemeClass -> LexemeClass -> LexemeClass
$cmax :: LexemeClass -> LexemeClass -> LexemeClass
>= :: LexemeClass -> LexemeClass -> Bool
$c>= :: LexemeClass -> LexemeClass -> Bool
> :: LexemeClass -> LexemeClass -> Bool
$c> :: LexemeClass -> LexemeClass -> Bool
<= :: LexemeClass -> LexemeClass -> Bool
$c<= :: LexemeClass -> LexemeClass -> Bool
< :: LexemeClass -> LexemeClass -> Bool
$c< :: LexemeClass -> LexemeClass -> Bool
compare :: LexemeClass -> LexemeClass -> Ordering
$ccompare :: LexemeClass -> LexemeClass -> Ordering
$cp1Ord :: Eq LexemeClass
Ord, LexemeClass -> LexemeClass -> Bool
(LexemeClass -> LexemeClass -> Bool)
-> (LexemeClass -> LexemeClass -> Bool) -> Eq LexemeClass
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LexemeClass -> LexemeClass -> Bool
$c/= :: LexemeClass -> LexemeClass -> Bool
== :: LexemeClass -> LexemeClass -> Bool
$c== :: LexemeClass -> LexemeClass -> Bool
Eq, Int -> LexemeClass -> ShowS
[LexemeClass] -> ShowS
LexemeClass -> String
(Int -> LexemeClass -> ShowS)
-> (LexemeClass -> String)
-> ([LexemeClass] -> ShowS)
-> Show LexemeClass
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LexemeClass] -> ShowS
$cshowList :: [LexemeClass] -> ShowS
show :: LexemeClass -> String
$cshow :: LexemeClass -> String
showsPrec :: Int -> LexemeClass -> ShowS
$cshowsPrec :: Int -> LexemeClass -> ShowS
Show, ReadPrec [LexemeClass]
ReadPrec LexemeClass
Int -> ReadS LexemeClass
ReadS [LexemeClass]
(Int -> ReadS LexemeClass)
-> ReadS [LexemeClass]
-> ReadPrec LexemeClass
-> ReadPrec [LexemeClass]
-> Read LexemeClass
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [LexemeClass]
$creadListPrec :: ReadPrec [LexemeClass]
readPrec :: ReadPrec LexemeClass
$creadPrec :: ReadPrec LexemeClass
readList :: ReadS [LexemeClass]
$creadList :: ReadS [LexemeClass]
readsPrec :: Int -> ReadS LexemeClass
$creadsPrec :: Int -> ReadS LexemeClass
Read, (forall x. LexemeClass -> Rep LexemeClass x)
-> (forall x. Rep LexemeClass x -> LexemeClass)
-> Generic LexemeClass
forall x. Rep LexemeClass x -> LexemeClass
forall x. LexemeClass -> Rep LexemeClass x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep LexemeClass x -> LexemeClass
$cfrom :: forall x. LexemeClass -> Rep LexemeClass x
Generic)

instance FromJSON LexemeClass
instance ToJSON LexemeClass