Parse_AS_Library.hs revision 745ea99df3f8aa67882251530d2f2b41e65603da
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckersModule : $Header$
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckersDescription : parser for CASL specification librariess
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckersCopyright : (c) Maciek Makowski, Uni Bremen 2002-2006
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckersLicense : GPLv2 or higher, see LICENSE.txt
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckersMaintainer : Christian.Maeder@dfki.de
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckersStability : provisional
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckersPortability : non-portable(Grothendieck)
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckersParser for CASL specification librariess
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers Follows Sect. II:3.1.5 of the CASL Reference Manual.
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckersmodule Syntax.Parse_AS_Library (library, useItem, useItems) where
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckersimport Logic.Grothendieck (LogicGraph, prefixes)
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckersimport Data.Maybe (maybeToList)
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckersimport qualified Data.Map as Map
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckerslGAnnos :: LogicGraph -> AParser st (LogicGraph, [Annotation])
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckerslGAnnos lG = do
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers let (pfx, _) = partPrefixes as
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers return (lG { prefixes = Map.union pfx $ prefixes lG }, as)
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers-- * Parsing functions
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers-- | Parse a library of specifications
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckerslibrary :: LogicGraph -> AParser st LIB_DEFN
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckerslibrary lG = do
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers (lG1, an1) <- lGAnnos lG
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers (ps, ln) <- option (nullRange, iriLibName nullIRI) $ do
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers s1 <- asKey libraryS <|> asKey distributedOntologyS
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers n <- libName lG1
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers return (tokPos s1, n)
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers (lG2, an2) <- lGAnnos lG1
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers ls <- libItems lG2
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers return (Lib_defn ln ls ps (an1 ++ an2))
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix Reckers-- | Parse library name
e82e433fe62fc83daaad3d96aaa01ee111e49d39Felix ReckerslibName :: LogicGraph -> AParser st LibName
return (Syntax.AS_Library.Spec_defn n g a
return (Syntax.AS_Library.View_defn vn g vt symbMap
return (Syntax.AS_Library.Equiv_defn en et sp
return (Syntax.AS_Library.Align_defn an ar at corresps
return (Syntax.AS_Library.Module_defn mn mt rs (catRange [s1, s2, s3]))
return (Syntax.AS_Library.Unit_spec_defn name usp
return (Syntax.AS_Library.Ref_spec_defn name rsp
return (Syntax.AS_Library.Arch_spec_defn name asp
return (Syntax.AS_Library.Spec_defn nullIRI