toml-parser-0.1.0.0: src/TOML/Tokens.hs
{-|
Module : TOML.Tokens
Description : Internal: Token type and operations for TOML
Copyright : (c) Eric Mertens, 2017
License : ISC
Maintainer : emertens@gmail.com
This module provides the token type used in the lexer and
parser and provides the extra pass to insert layout tokens.
-}
module TOML.Tokens
( Token(..)
, LexerError(..)
) where
import Data.Text (Text)
import Data.Time
-- | The token type used by "Config.Lexer" and "Config.Parser"
data Token
= StringToken Text -- ^ string literal
| BareKeyToken Text -- ^ bare table key
| IntegerToken Integer -- ^ integer literal
| DoubleToken Double -- ^ floating -point literal
| ZonedTimeToken ZonedTime -- ^ offset date-time
| LocalTimeToken LocalTime -- ^ local date-time
| TimeOfDayToken TimeOfDay -- ^ local time
| DayToken Day -- ^ local date
| CommaToken -- ^ @,@
| PeriodToken -- ^ @.@
| LeftBracketToken -- ^ @[@
| RightBracketToken -- ^ @[@
| LeftBraceToken -- ^ @{@
| RightBraceToken -- ^ @}@
| EqualToken -- ^ @=@
| TrueToken -- ^ @true@
| FalseToken -- ^ @false@
| ErrorToken LexerError -- ^ lexical error
| EofToken -- ^ end-of-file
deriving (Read, Show)
-- | Errors possible in the course of lexing
data LexerError
= UntermString -- ^ unterminated string literal
| BadEscape -- ^ invalid escape sequence
| NoMatch Char -- ^ no matching lexer rule
deriving (Read, Show)