{-----------------------------------------------------------------------------

        Haskell ATerm Library
                
        Joost Visser
        CWI, Amsterdam

  This module is part of the ATerm library for Haskell. It defines the
  abstract syntax of ATerms as a Haskell datatype.
  
------------------------------------------------------------------------------}

module ATermAbstractSyntax where

-- Abstract syntax -----------------------------------------------------------


data ATerm = AAppl String [ATerm]
           | AList [ATerm]
           | AInt Integer
           | AString String
           deriving (ReadPrec [ATerm]
ReadPrec ATerm
Int -> ReadS ATerm
ReadS [ATerm]
(Int -> ReadS ATerm)
-> ReadS [ATerm]
-> ReadPrec ATerm
-> ReadPrec [ATerm]
-> Read ATerm
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ATerm]
$creadListPrec :: ReadPrec [ATerm]
readPrec :: ReadPrec ATerm
$creadPrec :: ReadPrec ATerm
readList :: ReadS [ATerm]
$creadList :: ReadS [ATerm]
readsPrec :: Int -> ReadS ATerm
$creadsPrec :: Int -> ReadS ATerm
Read,Int -> ATerm -> ShowS
[ATerm] -> ShowS
ATerm -> String
(Int -> ATerm -> ShowS)
-> (ATerm -> String) -> ([ATerm] -> ShowS) -> Show ATerm
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ATerm] -> ShowS
$cshowList :: [ATerm] -> ShowS
show :: ATerm -> String
$cshow :: ATerm -> String
showsPrec :: Int -> ATerm -> ShowS
$cshowsPrec :: Int -> ATerm -> ShowS
Show,ATerm -> ATerm -> Bool
(ATerm -> ATerm -> Bool) -> (ATerm -> ATerm -> Bool) -> Eq ATerm
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ATerm -> ATerm -> Bool
$c/= :: ATerm -> ATerm -> Bool
== :: ATerm -> ATerm -> Bool
$c== :: ATerm -> ATerm -> Bool
Eq,Eq ATerm
Eq ATerm
-> (ATerm -> ATerm -> Ordering)
-> (ATerm -> ATerm -> Bool)
-> (ATerm -> ATerm -> Bool)
-> (ATerm -> ATerm -> Bool)
-> (ATerm -> ATerm -> Bool)
-> (ATerm -> ATerm -> ATerm)
-> (ATerm -> ATerm -> ATerm)
-> Ord ATerm
ATerm -> ATerm -> Bool
ATerm -> ATerm -> Ordering
ATerm -> ATerm -> ATerm
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 :: ATerm -> ATerm -> ATerm
$cmin :: ATerm -> ATerm -> ATerm
max :: ATerm -> ATerm -> ATerm
$cmax :: ATerm -> ATerm -> ATerm
>= :: ATerm -> ATerm -> Bool
$c>= :: ATerm -> ATerm -> Bool
> :: ATerm -> ATerm -> Bool
$c> :: ATerm -> ATerm -> Bool
<= :: ATerm -> ATerm -> Bool
$c<= :: ATerm -> ATerm -> Bool
< :: ATerm -> ATerm -> Bool
$c< :: ATerm -> ATerm -> Bool
compare :: ATerm -> ATerm -> Ordering
$ccompare :: ATerm -> ATerm -> Ordering
$cp1Ord :: Eq ATerm
Ord)

------------------------------------------------------------------------------