0
這是我的代碼:parens解析問題。秒差距 - 哈斯克爾
expr :: Parser Integer
expr = buildExpressionParser table factor <?> "expression"
table :: [[ Operator Char st Integer ]]
table = [
[ op "*" (*) AssocLeft],
[ op "+" (+) AssocLeft]
]
where
op s f assoc = Infix (do { string s ; return f }) assoc
factor = do { char '(' ; x <- expr ; char ')' ; return x }
<|> number
<?> "simple expression"
number :: Parser Integer
number = do { ds <- many1 digit; return read(ds))) } <?> "number"
這有這樣的表情完美的作品:(10 + 10)* 10 但是我有如下一個問題:10 +10) 這有返回一個解析錯誤(最後只有1個括號),但是它返回20.
如何解決這個問題?
謝謝!
謝謝你真是太棒了! – Fabricio