首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

How to Parsing function in haskell?该怎么解决

2012-12-31 
How to Parsing function in haskell?It need to parse function in Lisp format. For example...(+ 3 4)

How to Parsing function in haskell?
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

[解决办法]
blind to read

热点排行