+ -
当前位置:首页 → 问答吧 → How to Parsing function in haskell?

How to Parsing function in haskell?

时间:2011-11-15

来源:互联网

It need to parse function in Lisp format. For example...
(+ 3 4) or (* 3 4 2)
I got a something like below, but it only can parse experession like (3 + 4)
, any advice to improve this? Thanks...

mulop = do{ symbol "*"; return (SExp "*")}
  <|> do{ symbol "/"; return (SExp "/")}

addop = do{ symbol "+"; return (SExp "+")}
  <|> do{ symbol "-"; return (SExp "-")}

anInt = do d <- digits
  ws
  return $ IntExp (read d)
anSym = oneOf ['-','*','+','/',':',''','?','>','<','=']
anVar = do first <- letter <|> anSym
  rest <- many (letter <|> adigit <|> anSym)
  ws
  return (SymExp (first:rest))

anAtom = anInt
  <|> anVar
  <|> parens anAtom

anExp = parens expr
  <|> anAtom

expr = term `chainl1` term
term = factor `chainl1` factor
factor = parens expr
  <|> anAtom

作者: ouyadi   发布时间: 2011-11-15

blind to read

作者: mougaidong   发布时间: 2011-11-15

热门下载

更多