-- | Bnf tokens
module Data.Cfg.Bnf.Token(
    Token(..),
    TokenType(..)
    ) where

-- | Token types
data TokenType = ERROR
    | FULL_STOP                 -- ^ @.@
    | LOWER_IDENTIFIER

        -- ^ an identifier made of lower-case characters possibly
        -- separated by underscores

    | OR                        -- ^ @|@
    | UPPER_IDENTIFIER

        -- ^ an identifier made of upper-case characters possibly
        -- separated by underscores

    | YIELDS                    -- ^ @::=@
    deriving (Eq, Show)

-- | Basic Bnf tokens.  They do not contain location information.
data Token = Token TokenType String
  deriving (Eq, Show)
