Guest User

Untitled

a guest
Apr 21st, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. module Test01 where
  2.  
  3. import Text.Parse
  4. import qualified Text.ParserCombinators.Poly.State as PS
  5.  
  6. main :: IO ()
  7. main = putStrLn "Test01"
  8.  
  9. liftP :: Parser t a -> PS.Parser s t a
  10. liftP (P func) = PS.P $ \s tx -> pareResult s (func tx)
  11. where
  12. pareResult :: s -> Result z a -> Result (z, s) a
  13. pareResult s (Success z a) = Success (z, s) a
  14. pareResult s (Failure z e) = Failure (z, s) e
  15. pareResult s (Committed r) = pareResult s r
  16. {-
  17. > PS.runParser (liftP (parens True $ literal "aaa bbb") >> stUpdate (*2) >> (liftP word)) 5 "(aaa bbb) ccc"
  18. (Right "ccc",10,"")
  19. > PS.runParser (liftP (parens True $ literal "aaa bbb") >> stUpdate (*2)) 5 "(aaa bbb) ccc"
  20. (Right (),10," ccc")
  21. PS.runParser (liftP (parens True $ literal "aaa bbb")) 5 "(aaa bbb) ccc"
  22. (Right "aaa bbb",5," ccc")
  23. -}
Add Comment
Please, Sign In to add comment