首页 > 解决方案 > 为什么这段代码在使用 parsec 时会产生解析异常,但在 Graham Huttons 简单示例库中却没有?

问题描述

我最近尝试进入 parsec,我偶然发现了一个视频,它解释了函数解析的基础知识。展示了一个简单的演示库,其语法类似于 parsec。功能组合的工作方式非常相似。此代码段与库正常工作。然而,如果我用解析器运行这段代码,它会给我一个解析错误,(意外字符)

module P where

import Text.ParserCombinators.Parsec

int :: Parser Int
int = do
    x <- many digit
    return (read x)

expr = do
    x <- term
    char '+'
    y <- expr
    return (x+y)
  <|> term

term = do
    x <- factor
    char '*'
    y <- term
    return (x*y)
  <|> factor

factor = do
    char '('
    x <- expr
    char ')'
    return x
  <|> int

我不知道区别在哪里

标签: haskellparsec

解决方案


推荐阅读