SortItem.hs revision 2eb84fc82d3ffa9116bc471fda3742bd9e5a24bb
5f5d1b4cc970b7f06ff8ef6526128e9a27303d88nd Authors: Christian Maeder
d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacdnd Year: 2002
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding parse SORT-ITEM and "sort/sorts SORT-ITEM ; ... ; SORT-ITEM"
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding from 25 March 2001
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding C.2.1 Basic Specifications with Subsorts
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive-- ------------------------------------------------------------------------
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive-- ------------------------------------------------------------------------
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slivecommaSortDecl :: Id -> AParser SORT_ITEM
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slivecommaSortDecl s = do c <- anComma
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive (is, cs) <- sortId `separatedBy` anComma
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive let l = s : is
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive p = tokPos c : map tokPos cs in
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive subSortDecl (l, p) <|> return (Sort_decl l p)
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37sliveisoDecl :: Id -> AParser SORT_ITEM
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37sliveisoDecl s = do e <- equalT
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive subSortDefn (s, tokPos e)
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive (do (l, p) <- sortId `separatedBy` equalT
53bae66d3dc14a667e14a451f7bc65a893dd450fnd return (Iso_decl (s:l) (tokPos e : map tokPos p)))
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slivesubSortDefn :: (Id, Pos) -> AParser SORT_ITEM
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slivesubSortDefn (s, e) = do a <- annos
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive o <- oBraceT
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive c <- colonT
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive t <- sortId
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive d <- dotT -- or bar
97a9a944b5887e91042b019776c41d5dd74557aferikabele f <- formula
1597043cec6ad37fa4154bf09b0fccdabed1a239slive p <- cBraceT
1597043cec6ad37fa4154bf09b0fccdabed1a239slive return (Subsort_defn s v t (Annoted f [] a [])
a5da9d9dfc593837aca771df70ad124a37e22abapatrikj (e:tokPos o:tokPos c:tokPos d:[tokPos p]))
97a9a944b5887e91042b019776c41d5dd74557aferikabelesubSortDecl :: ([Id], [Pos]) -> AParser SORT_ITEM
97a9a944b5887e91042b019776c41d5dd74557aferikabelesubSortDecl (l, p) = do t <- lessT
e6469ad7a7dacf318f7ecf393b448b83ad1fdb37slive s <- sortId
a5da9d9dfc593837aca771df70ad124a37e22abapatrikj return (Subsort_decl l s (p++[tokPos t]))
a5da9d9dfc593837aca771df70ad124a37e22abapatrikjsortItem :: AParser SORT_ITEM
98b409eae9ad8033008f8589b5c7c02ed49db767sctemmesortItem = do s <- sortId ;
f7489468254ddf807594db3dfb994035f0ec1c7djorton subSortDecl ([s],[])
a5da9d9dfc593837aca771df70ad124a37e22abapatrikj commaSortDecl s
a5da9d9dfc593837aca771df70ad124a37e22abapatrikj return (Sort_decl [s] [])
a5da9d9dfc593837aca771df70ad124a37e22abapatrikjsortItems :: AParser SIG_ITEMS
a5da9d9dfc593837aca771df70ad124a37e22abapatrikjsortItems = itemList sortS sortItem Sort_items