Parse_CspCASL.hs revision c3f3b3166ed4c19c72a27a2d6f8176730e94e71e
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder{- |
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederModule : $Id$
e6d40133bc9f858308654afb1262b8b483ec5922Till MossakowskiDescription : Parser for CspCASL specifications
1549f3abf73c1122acff724f718b615c82fa3648Till MossakowskiCopyright : (c)
97018cf5fa25b494adffd7e9b4e87320dae6bf47Christian MaederLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder
3f69b6948966979163bdfe8331c38833d5d90ecdChristian MaederMaintainer : a.m.gimblett@swan.ac.uk
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederStability : experimental
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederPortability :
f3a94a197960e548ecd6520bb768cb0d547457bbChristian Maeder
e6d40133bc9f858308654afb1262b8b483ec5922Till MossakowskiParser for CSP-CASL specifications.
1549f3abf73c1122acff724f718b615c82fa3648Till Mossakowski
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder-}
1549f3abf73c1122acff724f718b615c82fa3648Till Mossakowski
1549f3abf73c1122acff724f718b615c82fa3648Till Mossakowskimodule CspCASL.Parse_CspCASL (
1549f3abf73c1122acff724f718b615c82fa3648Till Mossakowski cspBasicSpec
1549f3abf73c1122acff724f718b615c82fa3648Till Mossakowski) where
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maederimport Control.Monad (liftM)
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maederimport Text.ParserCombinators.Parsec (many1, (<|>))
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maederimport Common.AnnoState (AParser, asKey, equalT)
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maederimport Common.Id (Id, mkId, mkSimpleId)
f8b715ab2993083761c0aedb78f1819bcf67b6ccChristian Maederimport Common.Token (parseId)
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maederimport CspCASL.AS_CspCASL
ad270004874ce1d0697fb30d7309f180553bb315Christian Maederimport CspCASL.CspCASL_Keywords
ad270004874ce1d0697fb30d7309f180553bb315Christian Maederimport CspCASL.Parse_CspCASL_Process
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun WangcspBasicSpec :: AParser st CspBasicSpec
23a00c966f2aa8da525d7a7c51933c99964426c0Christian MaedercspBasicSpec = do pp <- processPart
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder return (CspBasicSpec [] pp)
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian MaederprocessPart :: AParser st [PROC_EQ]
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun WangprocessPart = do asKey processS
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder peqs <- procEqs <|> liftM toDummyEq csp_casl_process
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder return peqs
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder where toDummyEq p = [(ProcEq dummyName p)]
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder dummyName = ParmProcname singletonProcessName []
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder-- Default name allocated to unnamed singleton processes.
0e2ae85e2453466d03c1fc5884a3d693235bb9d9Christian MaedersingletonProcessName :: Id
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaedersingletonProcessName = mkId [(mkSimpleId "P")]
ca020e82eb3567e7bdbb1cf70729efbd07e9caa4Klaus Luettich
2561b4bfc45d280ee2be8a7870314670e4e682e4Christian MaederprocEqs :: AParser st [PROC_EQ]
ca020e82eb3567e7bdbb1cf70729efbd07e9caa4Klaus LuettichprocEqs = many1 procEq
ca020e82eb3567e7bdbb1cf70729efbd07e9caa4Klaus Luettich
ca020e82eb3567e7bdbb1cf70729efbd07e9caa4Klaus LuettichprocEq :: AParser st PROC_EQ
ca020e82eb3567e7bdbb1cf70729efbd07e9caa4Klaus LuettichprocEq = do pn <- parmProcname
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder equalT
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder p <- csp_casl_process
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski return (ProcEq pn p)
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederparmProcname :: AParser st PARM_PROCNAME
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian MaederparmProcname = do pn <- process_name
c7e03d0708369f944b6f235057b39142a21599f2Mihai Codescu pa <- procArgs
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder return (ParmProcname pn pa)
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder