module Extract.Abs where -- Haskell module generated by the BNF converter newtype Ident = Ident String deriving (Eq,Ord,Show) data Grammar = Grammar [Def] deriving (Eq,Ord,Show) data Def = Paradigm Ident Env Head Logic | RParadigm Ident Env Head Logic | Regdef Ident Reg | Cxtdef Ident CLogic deriving (Eq,Ord,Show) data Env = Env [Binding] | Empty deriving (Eq,Ord,Show) data Binding = Assoc Ident Reg deriving (Eq,Ord,Show) data Pattern = CWord [Item] Constraint deriving (Eq,Ord,Show) data Item = StrC String | Var Ident deriving (Eq,Ord,Show) data Patt = PWild | PId Ident | PC Ident [Patt] deriving (Eq,Ord,Show) data Head = Head [Pattern] deriving (Eq,Ord,Show) data Constraint = Cons CLogic | ConsId Ident | NoCons deriving (Eq,Ord,Show) data CLogic = CConj CLogic CLogic | CDisj CLogic CLogic | CNeg CLogic | CLWild | CAtom Position Reg Unique Patt deriving (Eq,Ord,Show) data Unique = U | NU deriving (Eq,Ord,Show) data Position = WPos | Pos Pos | VPos Ident Pos | RVPos Ident Ident Pos | Rel Ident Pos deriving (Eq,Ord,Show) data Pos = P Integer | PP Integer | NP Integer | PStar Integer | NPStar Integer | Star deriving (Eq,Ord,Show) data Logic = Conj Logic Logic | Disj Logic Logic | Neg Logic | LWild | Atom Pattern deriving (Eq,Ord,Show) data Reg = RAlt Reg Reg | RMinus Reg Reg | RSeq Reg Reg | RStar Reg | RPlus Reg | ROpt Reg | REps | RChar Char | RAlts String | RDigit | RLetter | RUpper | RLower | RAny | Wild | RStr String | RegVar Ident deriving (Eq,Ord,Show)