Description : A parser for the Edinburgh Logical Framework
Copyright : (c) Kristina Sojakova, DFKI Bremen 2010
Maintainer : k.sojakova@jacobs-university.de
twelfNameChars = "_-+*/<=>@^"
twelfTokenChars :: String
twelfTokenChars = twelfNameChars ++ ":{}[]()"
trim = let f = reverse . dropWhile isSpace
basicSpec :: AParser st BASIC_SPEC
fmap Basic_spec (trailingAnnosParser basicItem)
(oBraceT >> cBraceT >> return (Basic_spec []))
basicItem :: AParser st BASIC_ITEM
twelfStat :: AParser st String
twelfStat = do ss <- many1 (twelfToken <|> whiteSp)
twelfToken :: AParser st String
twelfToken = reserved criticalKeywords $
many1 $ scanLPD <|> oneOf twelfTokenChars
twelfName :: AParser st String
twelfName = reserved criticalKeywords $
many1 $ scanLPD <|> oneOf twelfNameChars
whiteSp :: AParser st String
whiteSp = many1 $ oneOf whiteChars
symbItems :: AParser st SYMB_ITEMS
symbItems = fmap Symb_items $ fmap fst $ twelfName `separatedBy` anComma
symbMapItems :: AParser st SYMB_MAP_ITEMS
(xs, _) <- symbOrMap `separatedBy` anComma
return $ Symb_map_items xs
symbOrMap :: AParser st SYMB_OR_MAP