我对Haskell相对较新,主要编程背景来自OO语言.我正在尝试使用解析器编写一个解释器来编写简单的编程语言.到目前为止,我有一个解释器处于一个我很满意的状态,但我正在与解析器稍微挣扎.
这是我遇到问题的一段代码
data IntExp
= IVar Var
| ICon Int
| Add IntExp IntExp
deriving (Read, Show)
whitespace = many1 (char ' ')
parseICon :: Parser IntExp
parseICon =
do x <- many (digit)
return (ICon (read x :: Int))
parseIVar :: Parser IntExp
parseIVar =
do x <- many (letter)
prime <- string "'" <|> string ""
return (IVar (x ++ prime))
parseIntExp :: Parser IntExp
parseIntExp =
do x <- try(parseICon)<|>try(parseIVar)<|>parseAdd
return x
parseAdd :: Parser IntExp
parseAdd …
Run Code Online (Sandbox Code Playgroud)