Parsing 使用parens解析问题。帕塞克-哈斯克尔

Parsing 使用parens解析问题。帕塞克-哈斯克尔,parsing,haskell,parsec,Parsing,Haskell,Parsec,这是我的代码: 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 { s

这是我的代码:

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"
expr::解析器整数
expr=buildExpressionParser表因子“表达式”
表:[[Operator Char st Integer]]
表=[
[op“*”(*)关联左],
[操作“+”(+)关联左]
]
哪里
op s f assoc=Infix(do{string s;return f})assoc

factor=do{char'(';x您需要使用
eof
解析器来确保您已经阅读了整个输入:

myParser = do
    parsed <- expr
    eof
    return parsed

您需要使用
eof
解析器来确保您已经阅读了整个输入:

myParser = do
    parsed <- expr
    eof
    return parsed

您需要使用
eof
解析器来确保您已经阅读了整个输入:

myParser = do
    parsed <- expr
    eof
    return parsed

您需要使用
eof
解析器来确保您已经阅读了整个输入:

myParser = do
    parsed <- expr
    eof
    return parsed