HaskellUtils.hs revision 97018cf5fa25b494adffd7e9b4e87320dae6bf47
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt{-|
8e5fce1f9ceba17dd7e3ff0eb287e1e999c14249Mark AndrewsModule : $Header$
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntCopyright : (c) Sonja Groening, Uni Bremen 2002-2004
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntMaintainer : maeder@tzi.de
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntStability : provisional
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntPortability : portable
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt-}
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Huntmodule Hatchet.HaskellUtils where
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Huntimport Haskell.Hatchet.AnnotatedHsSyn
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Huntimport Common.AS_Annotation
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunttype AHsDecls = [AHsDecl]
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunttype NamedSentences = [Named AHsDecl]
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntextractSentences :: AHsModule -> NamedSentences
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntextractSentences (AHsModule _ _ _ decls) = filterDecls decls
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntfilterDecls :: AHsDecls -> NamedSentences
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntfilterDecls [] = []
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan HuntfilterDecls (decl:decls) =
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt (case decl of
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsFunBind matches ->
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt [(emptyName decl) { senName = show (1 + length decls)
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt ++ funName matches }]
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPatBind _ pat _ _ ->
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt [(emptyName decl) { senName = show (1 + length decls)
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt ++ patName pat }]
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt _ -> []) ++ filterDecls decls
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt where funName ((AHsMatch _ name _ _ _):rest) = show name
4eb998928b9aef0ceda42d7529980d658138698aEvan Hunt patName pat =
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt case pat of
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPVar name -> show name
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPLit lit -> "Literal"
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPNeg p -> "-" ++ patName p
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPInfixApp _ name _ -> show name
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPApp name _ -> show name
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPTuple _ -> "Tuple"
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPList _ -> "List"
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPParen p -> patName p
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPRec name _ -> show name
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPAsPat name _ -> show name
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPWildCard -> "Wildcard"
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt AHsPIrrPat p -> "~" ++ patName p
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt