Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- parseTerm1 :: ReadP Term
- parseTerm1=parseVName +++ number
- parseOpe :: OpTable -> ReadP Term
- parseOpe (OpTable [])= parseVName +++ number
- parseOpe (OpTable (c:cs)) =
- case c of
- (FLeft,ops) ->
- chainl1 (parseOpe (OpTable cs)) (parserOp ops)
- (FRight,ops) ->
- chainr1 (parseOpe (OpTable cs)) (parserOp ops)
- opParser :: ReadP String
- opParser = token $ do
- fL <- satisfy (`elem` ['!','@','#','+','-','*','/','\\','<','>','='])
- rL <- munch (`elem` ['!','@','#','+','-','*','/','\\','<','>','='])
- return $ fL:rL
- parserOp :: [String] -> ReadP (Term -> Term -> Term)
- parserOp operators = choice $ map f operators
- where f _= do
- op <- opParser
- return $ \l r -> TFun op [l, r]
- parseTerm2 :: OpTable -> ReadP Term
- parseTerm2 a =token $ do
- p <- parseOpe a
- eof
- return p
Advertisement
Add Comment
Please, Sign In to add comment