-- |
-- An API for the implementation of interpreters.
-- Should only be used by the libraries, which implement the interpreters.
module XMLQuery.AST
where

import XMLQuery.Prelude hiding (Text)
import qualified XMLQuery.Prelude as Prelude


data Text a =
  Text (Prelude.Text -> Either Prelude.Text a)

deriving instance Functor Text


data Element a =
  ElementNameText (Alt Text a) |
  ElementAttr (Alt Attr a) |
  ElementNodes (Alt Nodes a)

deriving instance Functor Element


data Attr a =
  AttrNameText (Alt Text a) |
  AttrValueText (Alt Text a)

deriving instance Functor Attr


data Nodes a =
  NodesNode (Alt Node a)

deriving instance Functor Nodes


data Node a =
  NodeElement (Alt Element a) |
  NodeText (Alt Text a)

deriving instance Functor Node