katydid-0.4.0.1: src/Data/Katydid/Parser/Parser.hs
{-# LANGUAGE DeriveGeneric, DeriveAnyClass #-}
-- |
-- This module describes the abstract tree that can be validated by Relapse.
--
-- The JSON and XML parsers both are both versions of this type class.
module Data.Katydid.Parser.Parser (
Tree(..), Label(..)
) where
import Control.DeepSeq (NFData)
import GHC.Generics (Generic)
import Data.Text (Text)
import Data.ByteString (ByteString)
-- |
-- Label is a tagged union of all possible value types that can returned by a katydid parser:
-- String, Int, Uint, Double, Bool and Bytes.
data Label
= String Text
| Int Int
| Uint Word
| Double Double
| Bool Bool
| Bytes ByteString
deriving (Show, Eq, Ord, Generic, NFData)
-- |
-- Tree is the type class that should be implemented by a katydid parser.
-- This is implemented by the Json and XML parser.
class Tree a where
getLabel :: a -> Label
getChildren :: a -> [a]