AnnoState.hs revision 2eb84fc82d3ffa9116bc471fda3742bd9e5a24bb
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maeder Authors: Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder a state to collect annotations
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder-- ----------------------------------------------
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder-- annotations
a53841f6d6e86ac751c12a33dc8aadf53f59d977Klaus Luettich-- ----------------------------------------------
a53841f6d6e86ac751c12a33dc8aadf53f59d977Klaus Luettichtype AParser a = GenParser Char AnnoState a
a53841f6d6e86ac751c12a33dc8aadf53f59d977Klaus Luettichdata AnnoState = AnnoState { toAnnos :: [Annotation] }
68d10d143f29fcff3c637ba24f90e983995ceae6Christian MaederemptyAnnos :: AnnoState
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian MaederemptyAnnos = AnnoState []
3b06e23643a9f65390cb8c1caabe83fa7e87a708Till MossakowskiparseAnnos :: AnnoState -> GenParser Char st AnnoState
9dac90ec2be2a72e03893095461960d483fe2fc2Christian MaederparseAnnos (AnnoState as) =
5e5d3e82af3bc2834f8718a52d9f45da80220273Dominik Luecke do a <- skip >> annotations
d54cd08a4cfa26256c38d8ed12c343adbfe1a0e3Christian Maeder return $ AnnoState (as ++ a)
e7757995211bd395dc79d26fe017d99375f7d2a6Christian MaederparseLineAnnos :: AnnoState -> GenParser Char st AnnoState
e7757995211bd395dc79d26fe017d99375f7d2a6Christian MaederparseLineAnnos (AnnoState as) =
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder do l <- mLineAnnos
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder return $ AnnoState (as ++ l)
c0c2380bced8159ff0297ece14eba948bd236471Christian MaederaddAnnos :: AParser ()
8410667510a76409aca9bb24ff0eda0420088274Christian MaederaddAnnos = getState >>= parseAnnos >>= setState
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederaddLineAnnos :: AParser ()
8410667510a76409aca9bb24ff0eda0420088274Christian MaederaddLineAnnos = getState >>= parseLineAnnos >>= setState
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian MaedergetAnnos :: AParser [Annotation]
ad270004874ce1d0697fb30d7309f180553bb315Christian MaedergetAnnos = do AnnoState a <- getState
4d56f2fa72e4aec20eb827c11ed49c8cbb7014bdChristian Maeder setState emptyAnnos
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich-- annotations on one line
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaedermLineAnnos :: GenParser Char st [Annotation]
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder do p <- getPosition
8d97ef4f234681b11bb5924bd4d03adef858d2d2Christian Maeder do a <- annotationL
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder do l <- mLineAnnos
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <|> return [a]
f38b3687c5558128515e34fb85d8b466d22dc300Christian Maeder <|> return []